Migaro. 技術Tips

                       

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


【Delphi/400】TCall400から呼び出すCLP/RPGのデバッグ方法

Delphi/400ではIBM i のプログラムを連携して呼び出すために
TCall400というコンポーネントが用意されています。
(※TCall400についてはこちら

今回はTCall400から呼び出すRPGプログラムをデバッグする方法をご紹介いたします。

 


 

TCall400から実行するRPGプログラムはバッチジョブとして動作しますので、
バッチジョブをデバッグする方法を利用します。

以下にその手順を解説します。

(※実際はTCall400に限らず、TAS400.RemoteCmdでCALLした場合など
  多くのバッチジョブで本記事のTipsをご利用いただけます。)

 

1.CLP/RPGのコンパイル

5250画面から、デバッグする対象のプログラムをコンパイルします。
その際に、下記のようにデバッグオプション(黄色部分)を設定します。

例) D400TESTライブラリのRPG010をコンパイル
CRTRPGPGM PGM(D400TEST/RPG010) SRCFILE(D400TEST/QRPGSRC) SRCMBR(RPG010) OPTION(*SRCDBG)

例) D400TESTライブラリのCLP010をコンパイル
CRTCLPGM PGM(D400TEST/CLP010) SRCFILE(D400TEST/QRPGSRC) SRCMBR(CLP010) OPTION(*SOURCE)

※OPTIONの設定方法は異なりますが、RPGLEやCLLEでも同様です。
※一度この設定でコンパイルしておけば、毎回コンパイルする必要はありません。

 

2.デバッグしたいプログラムを起動

Delphi/400のアプリケーションを起動して、IBM i に接続を行います。

 

3.ジョブ番号、ユーザー、ジョブ名の取得

5250画面から、WRKACTJOBを実行します。
Delphi/400プログラムのジョブは、CO4XXTCPサブシステム配下に追加されます。
CO4XXのXX部分はDelphi/400のバージョンによって異なります。

オプションの「5」の処理などで、該当ジョブのジョブ番号、ユーザー、ジョブ名を取得します。
ジョブ名は基本的に「P」+実行端末のIPアドレスの下9桁になっています。

※実行中のプログラム側にジョブ番号、ユーザー、ジョブ名を取得させることも可能です。
 手順については過去のこちらのTIPSをご参照ください。

この画面の上部に表示されている

 

4.STRSRVJOBコマンドを実行

3.で取得したジョブ番号、ユーザー、ジョブ名を引数にして、STRSRVJOBを実行します。
 STRSRVJOB JOB(ジョブ番号/ユーザー/ジョブ名)
 
 例) ジョブ番号:168047 ユーザー:FUKUI ジョブ名:P168000107 の場合
  ⇒ STRSRVJOB JOB(168047/FUKUI/P168000107)

 

5.STRDBGコマンドを実行

STRDBGコマンドを発行し、デバッグを行う箇所を設定します。
 STRDBG PGM(ライブラリ名/プログラム名) UPDPROD(*YES) OPMSRC(*YES)

 例) D400TESTライブラリのRPG010をデバッグ
 ⇒ STRDBG PGM(D400TEST/RPG010) UPDPROD(*YES) OPMSRC(*YES)

 

6.停止点の設定

デバッグしたいRPGプログラムのステップにF6キーで停止点を設定します。

 

7.Delphi/400アプリケーションの画面を操作

Delphi/400アプリケーション側で対象のRPGを実行する操作をして、RPG側に制御を移します。

 

8.デバッグの実行

6.で設定した停止点でプログラムが一時停止しますので、
通常のCLやRPGプログラムと同様にデバッグができます。

 

9.デバッグの終了

デバッグの終了時には、
ENDDBGコマンドとENDSRVJOBコマンドを実行して終了します。

※この2つはパラメータ不要。
※Delphi/400アプリケーションを先に落とした等、ジョブが終了している場合にも必要です。

 

 

以上の手順で、
Delphi/400のTCall400から実行するCLやRPGプログラムをデバッグすることができます。

 


 

<関連記事>

 

(ミガロ.情報マガジン「MIGARO News!!」Vol.217 2018年12月号より)