我有一個使用命令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