我有一个RPG程序,它用命令DSPLY打印数据。
当我打电话给程序时,
我可以看到显示了几毫秒的打印,但是它马上就关闭了。
在本机RPG中是否有一种方法可以让程序等待输入,而不是使用显示文件?
发布于 2016-10-16 18:07:42
是的,您需要向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请注意-我目前无法测试这个,我只是直接输入这里的代码从我的头脑。
*编辑,以纳入芭芭拉的优秀观点。
发布于 2016-10-17 13:02:45
本尼走在正确的轨道上,但他没有做回应。
你所需要的就是:
dsply wMessage *EXT wResponse;程序将等待输入响应。从技术上讲,因为任何回复都需要按回车。用户只需输入即可响应。
发布于 2016-10-17 15:20:51
使用默认值提供的默认回复值(DFT)的发送用户消息(SNDUSRMSG)的CL过程可以启用允许暂停的查询,只需按下输入即可继续。IIRC,即使没有指定缺省值,也会由于用户没有输入而返回字符串值*N,当然,返回值小于两个字符将只返回星号;尽管取决于其他设置,但这可能不是仅输入的效果,而是只能在用户查询的F11=Delete或F13=Clear中看到。或者使用任何类似的SNDUSRMSG来执行相同的代码;在以批处理和交互的形式运行时,可能需要决定在何处发送消息,代码使用message-feature vs编码来使用该特性内建的SNDUSRMSG。
注意:当然,这种用法受到作业的查询消息回复处理(INQMSGRPY)设置的影响;例如,作业可以在默认情况下被设置为自动回复,这样查询就不会出现,但这对于一致性/预期可能是一件好事。
https://stackoverflow.com/questions/40068921
复制相似问题