我有一个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)设置的影响;例如,可以将作业设置为默认的自动回复,这样查询就不会出现,但这对于一致性/期望来说可能是一件好事。