INZ
キーワードは、独立フィールド、データ構造、データ構造サブフィールド、またはオブジェクトをそのデータ・タイプごとのデフォルトの値、あるいはオプションで、括弧の中に指定された定数に初期化します。
- プログラム記述データ構造の場合、INZ
キーワードにパラメーターを指定することはできません。
- 外部記述データ構造の場合は、*EXTDFT パラメーターだけが
指定できます。
- LIKEDS キーワードを使用して定義されているデータ構造の場合、値 *LIKEDS は、サブフィールドが親データ構造と同じ方法で初期化されることを指定します
。これは、親サブフィールドにおいて INZ キーワードで指定された初期化についてのみ適用されます。 CTDATA キーワードまたは
FROMFILE キーワードで指定された初期化については適用されません。 親データ構造に CTDATA または FROMFILE で初期化されたサブフィールドがいくつか存在する
場合、INZ(*LIKEDS) を使用して初期化されたデータ構造には、CTDATA データまたは FROMFILE データは存在しません。
- オブジェクトの場合は *NULL パラメーターのみが許可されます。すべてのオブジェクトは、INZ(*NULL)
を指定しているかどうかにかかわらず *NULL に初期化されます。
指定される初期値は、初期化されるタイプと整合性がなければなりません。
この初期値は、リテラル、名前付き定数、形象定数、組み込み関数、または 特殊値
*SYS、*JOB、*EXTDFT、*USER、*LIKEDS、または
*NULL のいずれかが可能です。日付または時刻データ・タイプ・フィールドあるいは日付または時刻の値を持つ
名前付き定数を初期化する場合には、日付または時刻フィールドの実際の
形式とは無関係に、リテラルの形式には制御仕様書から引き出されたとおりのデフォルト
の形式との整合性がなければなりません。
UCS-2 フィールドは、文字、UCS-2、または図形定数によって初期化されます。
定数が UCS-2 ではない場合、コンパイル時にコンパイラーによって暗黙的に UCS-2 へ変換されます。
数値フィールドは、どのタイプの数値リテラルでも初期化する
ことができます。 しかし、浮動リテラルは浮動フィールドでしか使用する
ことはできません。 数値フィールドは、16 桁以下
の 16 進数リテラルによって初期化できます。
この場合、16 進数リテラルは符号なし数値と見なされます。
INZ(*EXTDFT) を指定すると、DDS 内の DFT キーワードからの
デフォルト値を使用して、外部記述データ構造サブフィールドが初期化されます。
DFT または定数値が指定されない場合、フィールド・タイプの DDS デフォルト値
が使用されます。
サブフィールド仕様のパラメーターを指定して、または指定せずに INZ を
コーディングすることにより、DDS 内で指定されている値を一時変更できます。
外部データ構造定義に INZ(*EXTDFT) を指定すると、外部記述サブフィールド
がすべて、その DDS デフォルト値に初期化されます。
外部記述データ構造に追加のプログラム記述サブフィールドが
ある場合、これらは RPG デフォルト値に初期化されます。
INZ(*EXTDFT) を使用するときは、次の点に留意してください。
- 日付または時刻フィールドの DDS 値が RPG 内部形式で
ない場合、その値は事実上プログラムの内部形式に変換されます。
- 外部記述は物理ファイル内になければなりません。
- DDS 内のヌル可能フィールドに *NULL が指定
されている場合、コンパイラーは初期値として、そのフィールドの DDS デフォルト値
を使用します。
- 可変長フィールドに DFT('') が指定されている場合、そのフィールド
は長さ 0 のストリングを使用して初期化されます。
- INZ(*EXTDFT) は、CVTOPT オプションが有効である場合には使用
できません。
INZ(*USER) を指定すると、文字フィールドまたはサブフィールド
はどれも、現行ユーザー・プロファイルの名前に初期化されます。
文字フィールドの長さは少なくとも 10 文字にする必要があります。
フィールドの長さが 10 文字より長い場合、ユーザー名
はフィールド内で左寄せされ、残りの部分にはブランクが使用されます。
日付フィールドは *SYS または *JOB に初期化
できます。時刻フィールドとタイム・スタンプ・フィールドは *SYS に
初期化できます。
ネストされたデータ構造の初期化における INZ キーワードの使用についての詳細な説明は、ネストされたデータ構造の初期化を参照してください。
INZ キーワードによって定義されたデータ構造、データ構造サブフィールド、ま
たは独立フィールドを *ENTRY PLIST のパラメーターとして指定することはでき
ません。
注: INZ パラメーターが指定
されていない 場合には、次のようになります。
- 初期化されたデータ構造の静的独立フィールドおよびサブフィールドは、それらの
RPG でのデフォルトの初期値 (たとえば、文字の場合はブランク、数値の場合は 0)
に初期化されます。
- 初期化されていない (データ構造についての定義仕様書に INZ が指定されて
いない) データ構造のサブフィールドは (データ・タイプとは無関係
に) ブランクに初期化されます。
このキーワードと BASED または IMPORT との組み合わせは正しくありません。