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値が付加されていることがわかる。
