RPGで例外エラーが発生したときはプログラム状況データ構造(SDS)に
エラーのあった情報が保管される。
D*( プログラム状況データ構造 ) D INFDS_THIS SDS D PROC_NAM *PROC D* 512A D PGMINFO 1 512 D LINE_NUM 21 28 D ROUTINE *ROUTINE D ERR_NBR 30 37 D CPFID 40 46 D SRCID 77 78B 0 D CPFDTA 91 170 D CPFDTB 171 222 D ERRMSGID 46 51 D CURUSR 358 367
PROC_NAM : プロシージャーの名前
LINE_NUM : エラーのあったソース・ステートメントの行№。
ただしこの行№を取得するためにはコンパイル・オプションで
*SRCSTMT を指定しておかなければならない。
[例]
CRTBNDRPG PGM(OBJLIB/PGM001) SRCFILE(MYSRCLIB/QRPGLESRC) DFTACTGRP(*NO)
ACTGRP(*NEW) OPTION(*SRCSTMT) DBGVIEW(*SOURCE) OUTPUT(*PRINT) AUT(*ALL)
このようにプログラム状況データ構造(SDS)を定義しているプログラムでは
コンパイル・オプションに *SRCSTMT を定義しておく必要がある。
*SRCSTMTを定義しておかないと LINE_NUM にソース行は埋め込まれない。
また参考までに説明しておくとLINE_NUM はつねに埋め込まれるのではなくエラーのあったときだけに
ソース行がLINE_NUMに埋め込まれるようになっている。