定義仕様書外の変数初期値設定

概要

変数の初期値は通常、定義仕様書(D)に設定するが、スクロール画面やデータの一時的な退避配列を用意して配列数が多いうえに数字・文字が混在する場合等で*INZSRを使用して初期値を設定する。

*INZSR [Initialization subroutine] とは

RPGLEにおいて、*INZSRは特別なサブルーチンであり、ファイルのフィールドやデータ構造などの初期化を行う為に使用されます。

 ・*INZSRはプログラムの一番最初に実行される。
 ・*INZSRはプログラム内に複数回定義することはできない。
 ・データ領域の初期値設定や一時領域のクリアなどを行う。
 ・*INZSRは明示的に呼び出す必要はなく、自動で呼び出される。

*INZSRを用いた構文例

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....8.
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D         DS
D CSR               3 0 INZ(0)
D MAX_ROW             3 0 INZ(18)
D         DS
D SKLINE         1  1206   DIM(18)
D SK01EXEDTE        1    8 0 INZ(0)
D SK01EXETIM        9   14 0 INZ(0)
D SK01PBCBAN        15   25 0 INZ(0)
D SK01SPLID        26   35  INZ('')
D SK01JOBID        36   45  INZ('')
D SK01JOBUSR        46   55  INZ('')
D SK01JOBNBR        56   61 0 INZ(0)
D SK01SPLNUM        62   67 0 INZ(0)
D SK02EXEDTE        1    8 0 INZ(0)
D SK02EXETIM        9   14 0 INZ(0)
D   ・
D   ・
D   ・
D* 数字と英字が混在する場合、項目数*行数分の定義が必要
              
            
              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....8.
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D         DS
D CSR               3 0 INZ(0)
D MAX_ROW             3 0 INZ(18)
D         DS
D SKLINE         1  1206   DIM(18)
D         DS
D SK_AREA         1   67
D SK_EXEDTE        1    8 0 INZ(0)
D SK_EXETIM        9   14 0 INZ(0)
D SK_PBCBAN        15   25 0 INZ(0)
D SK_SPLID        26   35  INZ('')
D SK_JOBID        36   45  INZ('')
D SK_JOBUSR        46   55  INZ('')
D SK_JOBNBR        56   61 0 INZ(0)
D SK_SPLNUM        62   67 0 INZ(0)
D
CL0N01FACTOR1+++++++OPCODE&EXTFACTOR2+++++++RESULT++++++++LEN++D+HILOEQ....
C   *INZSR     BEGSR
C*
C          Z-ADD   1       CSR
C   CSR      DOWLE   MAX_ROW
C          MOVEL   SK_AREA    SKLINE(CSR)
C          ADD    1       CSR
C          ENDDO
C          MOVEL   *ZERO     CSR
C
C* *INZSRでSKLINEの初期値を設定
C*
C   #INZSR99   ENDSR
              
            
RESET時

*INZSRが定義されているプログラム内のRESET時の挙動としては、*INZSRステップが終了した時点でのスナップショットがとられ、定義仕様書の初期設定値では無く*INZSRステップが終了した時点で各変数に格納されている値が初期値になります。