我有一个使用命令DSPLY打印数据的RPG程序。as400 RPGLE等待输入
当我调用程序,
我可以看到它出现几毫秒, 的印刷品,但它关闭的时候了。
原生RPG中有一种方法可以让程序等待输入,而不是使用显示文件吗?
我有一个使用命令DSPLY打印数据的RPG程序。as400 RPGLE等待输入
当我调用程序,
我可以看到它出现几毫秒, 的印刷品,但它关闭的时候了。
原生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
请注意 - 我目前无法测试这一点,我只是键入代码在这里直出我的头。
*编辑纳入芭芭拉的优点。
如果我只是想让程序等待用户按Enter键怎么办?你认为这是可能的吗? –
我不会硬编码'* EXT'。只需编码'',让RPG运行时决定是使用'* EXT'作为交互作业还是使用'QSYSOPR'作为批处理作业。 –
本尼是在正确的轨道上,但他没有回应帕尔姆。
所有你需要的是:
dsply wMessage *EXT wResponse;
程序将等到输入的响应。从技术上讲,因为任何响应都需要输入按下。用户只需输入即可回复。
使用提供了默认值[默认答复值(DFT)]的发送用户消息(SNDUSRMSG)的CL过程可以启用允许暂停的询问并仅按Enter继续。 IIRC,即使没有指定缺省值,字符串值*N
也会返回,因为缺少用户的任何输入,当然返回值少于两个字符将只返回星号;尽管取决于其他设置,这可能不仅仅是输入的效果,并且可能仅用F11 =用户查询的删除[或F13 =清除]才能看到。或者做相同的代码,使用任何消息 -feature API效果相似;当以批处理方式与交互式方式运行时,决定发送消息的位置可能需要使用API的代码,而使用API编码则需要使用内置该功能的SNDUSRMSG。
注意:该用法当然受作业的查询消息应答处理(INQMSGRPY)设置的影响;例如该作业可以设置为默认自动回复,这样查询就不会出现,但这对于一致性/期望来说可能是件好事。
您可以调用命令DLYJOB等待几秒钟。如果没有,我认为你必须使用显示文件。 – ChristLarsen
相关:http://stackoverflow.com/questions/18313289/rpgle-print-to-command-window – kratenko