つい少し前のまで、会社のIBMiはV5R4だったので、V7R2になっていつの間にか色々な機能が増えています。その一つにV6R1以降でコンパイルオプションに「*NOUNREF」を付ける事が出来る様になってます。
「*NOUNREF」をつけると、未使用の変数を実行モジュールに含まなくなるため、静的記憶域が節約出来ます。よく共通のヘッダーファイルをインクルードしたりすると、無駄に変数を引っ張って来ますが、このオプションで未使用の変数は、オブジェクトに引き込まれない為、精神衛生上とても良いです。
以下のソースでオプション有無をDSPPGMで見ると、静的記憶域に違いがあります。
USR401A.rpgle
H****************************************************************
H*-------------------------------*
H*----<<日付・著作権 >>-----*
H*-------------------------------*
H DATEDIT(*YMD)
H COPYRIGHT('(C) ushiday - ')
H*-------------------------------*
H*----<<コンパイル条件 >>-----*
H*-------------------------------*
H DFTACTGRP(*NO) ACTGRP(*NEW)
H*非参照の変数を取り込む
H OPTION(*UNREF)
F*----<<ファイル定義 >>-----*
D*----<<変数定義 >>-----*
D*
D REC E DS EXTNAME(ITEM : *INPUT)
D QUALIFIED
D DIM(5000)
C*-------------------------------*
C*----<<メインルーチン >>-----*
C*-------------------------------*
/FREE
//終了
*INLR = *ON ;
RETURN ;
/END-FREE
USR401A.rpgle
H****************************************************************
H*-------------------------------*
H*----<<日付・著作権 >>-----*
H*-------------------------------*
H DATEDIT(*YMD)
H COPYRIGHT('(C) ushiday - ')
H*-------------------------------*
H*----<<コンパイル条件 >>-----*
H*-------------------------------*
H DFTACTGRP(*NO) ACTGRP(*NEW)
H*非参照の変数を取り込む
H OPTION(*NOUNREF)
F*----<<ファイル定義 >>-----*
D*----<<変数定義 >>-----*
D*
D REC E DS EXTNAME(ITEM : *INPUT)
D QUALIFIED
D DIM(5000)
C*-------------------------------*
C*----<<メインルーチン >>-----*
C*-------------------------------*
/FREE
//終了
*INLR = *ON ;
RETURN ;
/END-FREE