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に埋め込まれるようになっている。
