as400 RPGLE等待输入

时间:2016-10-16 09:43:52

标签: input wait ibm-midrange rpgle

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

当我致电该程序时,

我可以看到出现的打印时间为几毫秒, 但它立即关闭。

原生RPG中是否有办法让程序等待输入而不是使用显示文件?

3 个答案:

答案 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)设置的影响;例如可以使用默认设置自动回复作业,以便查询永远不会出现,但这对于一致性/期望可能是一件好事。