Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi/400】CL・RPGの終了を待たずにPCへ制御を戻す方法

Delphi/400からIBM i 上のCLやRPGを起動すると、
その処理が終わるまでPC側に制御が戻らないようにできています。

これは、IBM i 側で実行した処理の終了を確実に把握するために
必要なことなのですが、非常に時間のかかるバッチ処理を起動したい場合等では
クライアントのアプリケーションに長い間制御が戻らず、
フリーズしているように見える事になります。

そこで、IBM i 側の処理を起動したら、その結果を待たずに
Delphi/400側へ制御を戻すため、IBM i のSBMJOB(ジョブ投入)コマンドを利用します。

例えばTAS400コマンドのRemoteCmdメソッドを使用する場合は
以下のように記述することができます。XXXXが起動したいRPGプログラムだったとします。

AS4001.RemoteCmd('SBMJOB CMD(CALL XXXX)');

このように、Delphi/400から起動するJOB側は
SBMJOBコマンドを実行しJOBを投入するだけですぐに制御が戻ります。
そして起動された別のJOBでCALL XXXXという時間のかかる処理を行うことができます。

 

これを応用すると実行後制御が戻らなくなる電源断やIPL等も実行できます。

以下にIBM i の即時電源断(PWRDWNSYS)を行う例をあげます。言うまでもありませんが、
このコマンド実行後は速やかにDelphi/400の接続を切る必要があります。

AS4001.RemoteCmd('SBMJOB CMD(PWRDWNSYS OPTION(*IMMED))');

 

 

(ミガロ.情報マガジン「MIGARO News!!」Vol.043 2004年8月号より)