CLP の実行で期待どおりに動作しない場合、デバッグすればよいのだがバッチ・ジョブでの実行や
ごく稀れにしか障害が発生しないときは調査が困難となる。
このようなときに便利であるのは DMPCLPGM : CL プログラム・ダンプ というコマンドである。
パラメータは全く必要ない。DMPCLPGM が実行されれば、その時点でCLP の変数値がすべて
OUTQ: QGPL/QEZDEBUG に出力されるので簡単に原因を突き止めることができる。
【 例 】
ソースコード
---------------------------------------------------------------------- PGM : 0017.00 SNDMSG: 0018.00 IF COND(&TYPE *EQ '0') THEN(DO) 0019.00 SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) 0020.00 ENDDO 0021.00 ELSE CMD(DO) 0022.00 SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) 0023.00 ENDDO 0023.01 DMPCLPGM <------- DMPCLPGM の実行 0024.00 ENDPGM ----------------------------------------------------------------------
【 DMPCLPGM によって出力されたダンプの例 】
ソースコード
------------------------------------------------------------------------------------------------------------------------------ 5722SS1 V5R4M0 060210 CLプログラムのダンプ S652DAEC 10/04/15 19:02:36 ページ ジョブ名 . . . . . . . . : QPADEV0002 ユーザー名 . . . . . . . : QTR ジョブ番号 . . . . . . . : 490754 プログラム名 . . . . . . : CHKIFS ライブラリー . . . . . . : TEST.COM ステートメント . . . . . : 2400 モジュール名 . . . . . : CHKIFS プロシージャー名 . . . : CHKIFS メッセージ メッセージ メッセージ 送信元 送信先 時刻 ID 重大度 タイプ テキスト プログラム 命令 プログラム 命令 (プログラムのメッセージ待ち行列にメッセージが見つかりません) 変数 変数 タイプ 長さ 値 値 (16 進数) *...+....1....+....2....+ * . . . + . . . . 1 . . . . + . . . . 2 . . . &DIR *CHAR 256 '/AS400-NET.USR/AB.HTM ' 61C1E2F4F0F060D5C5E34BE4E2D961C1C24BC8E3D4004 +26 ' ' 404040404040404040404040404040404040404040404 +51 ' ' 404040404040404040404040404040404040404040404 +76 ' ' 404040404040404040404040404040404040404040404 +101 ' ' 404040404040404040404040404040404040404040404 +126 ' ' 404040404040404040404040404040404040404040404 +151 ' ' 404040404040404040404040404040404040404040404 +176 ' ' 404040404040404040404040404040404040404040404 +201 ' ' 404040404040404040404040404040404040404040404 +226 ' ' 404040404040404040404040404040404040404040404 +251 ' ' 404040404040 &DIR_PTR *PTR 16 8000000000000000E132317729009600 &FALSE *INT 4 -1 FFFFFFFF &NULL *CHAR 1 ' ' 00 &O_RDONLY *INT 4 1 00000001 &RES *INT 4 -1 FFFFFFFF &RES_PTR *PTR 16 8000000000000000E1323177290093D4 -----------------------------------------------------------------------------------------------------------------------------
【 解説 】
この例では CLP の変数 &DIR の最後に NULL (X’00’) が付加されているかを確認するために
出力したダンプである。確かに文字列の最後には 00 という NULL値が付加されていることがわかる。