我有一个RPG程序,它使用DSPLY命令打印数据。
当我致电该程序时,
我可以看到出现的打印时间为几毫秒, 但它立即关闭。
原生RPG中是否有办法让程序等待输入而不是使用显示文件?
答案 0 :(得分:3)
是的,您需要在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
请注意 - 我目前无法对此进行测试,我只是直接在脑海中输入代码。
*编辑融入芭芭拉的优点。
答案 1 :(得分:2)
班尼走在正确的轨道上,但他没有回复对方。
您只需要:
dsply wMessage *EXT wResponse;
程序将一直等到输入响应。从技术上讲,因为任何响应都需要按下输入。用户只需输入就可以回复。
答案 2 :(得分:1)
使用提供默认值的发送用户消息(SNDUSRMSG)的CL过程[默认回复值(DFT)]可以启用查询以允许暂停,只需按Enter键即可继续。 IIRC,即使没有指定默认值,也会返回字符串值*N
,因为用户没有任何输入,当然,少于两个字符的返回值只返回星号;虽然取决于其他设置,但这可能不仅仅是Enter的效果,而是可以仅用F11 =用户的查询删除[或F13 =清除]。或者执行相同的代码,使用类似的消息 - 特征API效果;决定在批量与交互式运行时将消息发送到何处,使用API与编码的代码可能需要使用内置该功能的SNDUSRMSG。
注意:此用法当然受作业的查询消息回复处理(INQMSGRPY)设置的影响;例如可以使用默认设置自动回复作业,以便查询永远不会出现,但这对于一致性/期望可能是一件好事。