Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@ushiday

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?