2016-10-16 24 views
0

コマンドDSPLYでデータを印刷するRPGプログラムがあります。私は、ミリ秒のカップルのために表示されます が、それはすぐに閉じ印刷物を見ることができますas400 RPGLE入力待ち

、プログラムを呼び出す

表示ファイルを使用する以外にプログラムが入力を待つようにする方法はありますか?

+0

コマンドDLYJOBを呼び出して数秒待つことができます。そうでない場合は、表示ファイルを使用する必要があると思います。 – ChristLarsen

+0

関連:http://stackoverflow.com/questions/18313289/rpgle-print-to-command-window – kratenko

答えて

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 

に注意してください - 私は現在、これをテストすることができないよ、私はちょうどまっすぐに私の頭のうち、ここでコードを入力しています。

*バーバラの優れた点を組み込むように編集されました。

+0

ユーザーがEnterキーを押すのをプログラムが待つだけの場合はどうすればいいですか?それが可能だと思いますか? –

+3

私は '* EXT'をハードコードしません。 ''をコーディングして、対話式ジョブの場合は* EXTを、バッチ・ジョブの場合は 'QSYSOPR'を使用するかどうかをRPGランタイムに決定させます。 –

2

ベニーは正しい軌道に乗っていますが、彼はレスポンスパラメータを打ち切りました。

必要なのは、次のとおりです。

dsply wMessage *EXT wResponse; 

応答が入力されるまで、プログラムが待機します。技術的には、どんな応答も入力する必要があるためです。ユーザーはちょうど入力して応答することができます。

1

[SNDUSRMSG]をデフォルト値で指定して送信するCLプロシージャでは、[一時返信値(DFT)]を指定すると、一時停止を許可する照会を有効にし、Enterキーを押して続行できます。 IIRCでは、デフォルトを指定しなくても、ユーザーによる入力がないため、文字列値*Nが返されます。もちろん、2文字未満の戻り値はアスタリスクのみを返します。他の設定にもよりますが、それはEnterだけでは効果がない可能性があり、代わりにF11 =ユーザーによる照会の削除[F13 =クリア]のいずれかで表示される可能性があります。または、同じコードを使用して、メッセージ -feature APIの効果は同様です。バッチ対インタラクティブとして実行しているときにメッセージを送信する場所を決めるには、APIにコードを使用してその機能が組み込まれているSNDUSRMSGを使用する必要があります。
注:この使用法はもちろん、ジョブの照会メッセージ応答処理(INQMSGRPY)設定の影響を受けます。例えば照会が表示されないようにジョブをデフォルトで自動応答に設定することができますが、それはおそらく一貫性/期待のためには良いことです。

関連する問題