as400 RPGLE等待输入



我有一个RPG程序,它使用命令DSPLY打印数据。

当我调用程序时,

我可以看到几毫秒的打印,但它马上就关门了。

在原生RPG中是否有一种方法使程序等待输入而不是使用显示文件?

是的,您需要向DSPLY操作添加响应参数:

/free
dou (response = 'Q');
   // dsply 'Q = Quit' '*EXT' response;
   // Better to let the RPG runtime determine
   // whether to use *EXT (for interactive jobs)
   // or QSYSOPR (for batch jobs).
   dsply 'Q = Quit' '' response;
   if (response <> 'Q');
      // your code here
      dsply yourvar;
   endif;
enddo;
*inlr = *on;
/end-free

请注意-我目前无法测试这个,我只是在这里直接输入我的头脑中的代码。

本尼的思路是对的,但是他没有回复。

你只需要:

dsply wMessage *EXT wResponse;

程序将等待,直到输入响应。从技术上讲,因为任何响应都需要按回车键。用户只需输入。

使用发送用户消息(SNDUSRMSG)和提供的默认值[默认回复值(DFT)]的CL过程可以启用查询,允许暂停,只需按Enter键即可继续。在IIRC中,即使没有指定默认值,也会在用户没有任何输入的情况下返回字符串值*N,当然,少于两个字符的返回值只会返回星号;虽然取决于其他设置,但这可能不是直接输入的效果,而可能只在用户查询的F11=Delete[或F13=Clear]时才会出现。或者使用相同的代码,使用任何消息特性API效果相似;决定在批处理和交互式运行时将消息发送到哪里,可能需要使用API的代码和使用内置该特性的SNDUSRMSG的代码。
注意:这种用法当然受到作业的查询消息回复处理(INQMSGRPY)设置的影响;例如,可以将作业设置为默认的自动回复,这样查询就不会出现,但这对于一致性/期望来说可能是一件好事。

相关内容

  • 没有找到相关文章

最新更新