Input as400 RPGLE等待输入

Input as400 RPGLE等待输入,input,wait,ibm-midrange,rpgle,Input,Wait,Ibm Midrange,Rpgle,我有一个RPG程序,它用DSPLY命令打印数据 当我调用程序时 我可以看到几毫秒内出现的打印结果, 但它马上就关闭了 在本机RPG中是否有方法使程序等待输入而不是使用显示文件?是的,您需要在DSPLY操作中添加一个响应参数: /free dou (response = 'Q'); // dsply 'Q = Quit' '*EXT' response; // Better to let the RPG runtime determine // whether to use *E

我有一个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
/免费
dou(响应='Q');
//dsply'Q=退出'*EXT'响应;
//最好由RPG运行时决定
//是否使用*EXT(用于交互式作业)
//或QSYSOPR(用于批处理作业)。
dsply'Q=退出''响应;
if(响应‘Q’);
//你的代码在这里
dsply-yourvar;
endif;
enddo;
*inlr=*on;
/结束自由
请注意-我目前无法测试这个,我只是直接在这里输入代码


*编辑以结合Barbara的优秀观点。

是的,您需要在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
/免费
dou(响应='Q');
//dsply'Q=退出'*EXT'响应;
//最好由RPG运行时决定
//是否使用*EXT(用于交互式作业)
//或QSYSOPR(用于批处理作业)。
dsply'Q=退出''响应;
if(响应‘Q’);
//你的代码在这里
dsply-yourvar;
endif;
enddo;
*inlr=*on;
/结束自由
请注意-我目前无法测试这个,我只是直接在这里输入代码


*编辑以结合芭芭拉的优秀观点。

本尼的思路是正确的,但他没有回答问题

您所需要的只是:

dsply wMessage *EXT wResponse;

程序将等待输入响应。从技术上讲,因为任何响应都需要按enter键。用户可以只按enter键进行响应。

Benny在正确的轨道上,但他没有按enter键进行响应

您所需要的只是:

dsply wMessage *EXT wResponse;

程序将等待输入响应。从技术上讲,因为任何响应都需要按enter键。用户可以使用just enter进行响应。

使用发送用户消息(SNDUSRMSG)并提供默认值[default Reply value(DFT)]的CL程序可以启用允许暂停的查询,并按下just enter继续。IIRC,即使没有指定默认值,字符串值
*N
也会因用户没有任何输入而返回,当然,少于两个字符的返回值只会返回星号;尽管取决于其他设置,但这可能不是刚刚输入的效果,而可能仅在F11=用户删除查询[或F13=清除]时才能看到。或者使用相同的代码,使用任何类似的消息-功能API效果;当以批处理与交互的方式运行时,使用API与编码的代码可能需要决定在何处发送消息,以使用内置该功能的SNDUSRMSG。

注意:此用法当然受作业的查询消息回复处理(INQMSGRPY)设置的影响;e、 g.作业可以设置为默认的自动回复,这样就不会出现查询,但这对于一致性/预期来说可能是一件好事。

使用发送用户消息(SNDUSRMSG)并提供默认值的CL过程[默认回复值(DFT)]可以启用允许暂停的查询,只需按Enter键即可继续。IIRC,即使没有指定默认值,字符串值
*N
也会因用户没有任何输入而返回,当然,少于两个字符的返回值只会返回星号;尽管取决于其他设置,但这可能不是刚刚输入的效果,而可能仅在F11=用户删除查询[或F13=清除]时才能看到。或者使用相同的代码,使用任何类似的消息-功能API效果;当以批处理与交互的方式运行时,使用API与编码的代码可能需要决定在何处发送消息,以使用内置该功能的SNDUSRMSG。

注意:此用法当然受作业的查询消息回复处理(INQMSGRPY)设置的影响;e、 g.作业可以设置为默认的自动回复,这样就不会出现查询,但这对于一致性/预期来说可能是一件好事。

您可以调用命令DLYJOB等待几秒钟。如果没有,我认为您必须使用显示文件。相关:您可以调用命令DLYJOB等待几秒钟。如果没有,我认为您必须使用一个显示文件。相关:如果我只想让程序等待用户按enter键怎么办?你认为这可能吗?我不会硬编码“*EXT”。只需编写“”代码,让RPG运行时决定是将“*EXT”用于交互式作业还是将“QSYSOPR”用于批处理作业。如果我只想让程序等待用户按enter键,该怎么办?你认为这可能吗?我不会硬编码“*EXT”。只需编写“”代码,让RPG运行时决定是将“*EXT”用于交互式作业还是将“QSYSOPR”用于批处理作业。