定義仕様書外の変数初期値設定
概要
変数の初期値は通常、定義仕様書(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ステップが終了した時点で各変数に格納されている値が初期値になります。