LoginSignup
0
0

More than 5 years have passed since last update.

コンパイルオプションで記憶域節約

Posted at

つい少し前のまで、会社の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 

●非参照変数を取り込む
2015-12-03_200701.png

●非参照変数を除外
2015-12-03_200731.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0