EXTFLD{(フィールド名) }
EXTFLD キーワードは、外部記述データ構造の中のサブフィールドの名前を変更す
るために使用されます。 また、自由形式定義では、サブフィールドが外部サブフィールドであることを
示すためにも使用されます。
EXTFLD キーワードのパラメーターとして、サブフィールドの外部名を入力します。
自由形式定義では、EXTFLD キーワードは最初のキーワードでなければなりません。
サブフィールドの名前がフィールドの外部名と同じである場合、
パラメーターは任意指定です。
指定する場合、外部名は文字リテラルまたは名前付き定数として指定する必要があります。
名前付き定数である場合、定義ステートメントの前にその定数が定義されている必要があります。
固定形式定義では、EXTFLD キーワードのパラメーターとしてサブフィールドの外部名
を記入し、プログラムで使用される名前を名前フィールド (7 から 21 桁目) に指定します。
外部名には、単純名または文字リテラルが可能です。
文字リテラルを指定する場合は、外部名の大/小文字を正確に指定する必要があります。 例えば、外部名が MYFIELD である場合、固定形式定義では 大/小文字混合の名前 (myField や myfield など) をフィールド名パラメーターに指定できますが、 リテラルとして指定する場合は「MYFIELD」でなければなりません。
次の例では、ファイル内の 3 つの外部フィールド名 は、NAME、ADR、 および ID です。
- サブフィールド name は 'UNKNOWN' に初期設定されます。
- 自由形式版のコードでは、サブフィールド名は外部名と同じであるため、 EXTFLD のパラメーターは必要ありません。
- 固定形式版のコードでは、このサブフィールドは名前変更されないため、EXTFLD キーワード は指定されていません。
- サブフィールド address は外部フィールド ADR から名前変更されます。
- 自由形式版のコードでは、外部名はリテラルとして指定されています。
- 固定形式版のコードでは、外部名は単純名として指定されています。
- サブフィールド id_number は
外部フィールド ID から名前変更され、-1 に初期設定されます。
- 自由形式版のコードでは、 外部名は値が「ID」である名前付き定数 ID_EXT_NAME として指定されています。
- 固定形式版のコードでは、 外部名はリテラルとして指定されています。
DCL-C ID_EXT_NAME 'ID'; 3a
DCL-DS custInfo EXTNAME('CUSTMAST');
name EXTFLD INZ('UNKNOWN'); 1a
address EXTFLD('ADR'); 2a
id_number EXTFLD(ID_EXT_NAME) INZ(-1); 3a
END-DS;
D custInfo E DS EXTNAME(custMast)
D name E INZ('UNKNOWN') 1b
D address E EXTFLD(adr) 2b
D id_number E EXTFLD('ID') INZ(-1) 3b
名前が有効な単純 RPG 名でない場合には、リテラルとして指定する必要があります。 例えば、外部フィールド A.B を名前変更する場合には、EXTFLD('A.B') と指定します。
このキーワードは任意指定です。 指定されていない場合には、外部定義から抜き出された名前がデータ構造サブフ ィールド名として使用されます。
データ構造に PREFIX キーワードが指定されている場合、EXTFLD によって名前が変更されるフィールドには接頭部は適用されません。 図 1 に、ALIAS キーワードと一緒に EXTFLD キーワードを指定した例が示されています。