EXTNAME(ファイル名{:形式名}{:*ALL| *INPUT|*OUTPUT|*KEY|*NULL})
EXTNAME キーワードは、定義中のデータ構造のサブフィールド記述として使用さ れるフィールド記述が入っているファイルの名前を指定するために使用されます。
ファイル名パラメーターは必須です。 オプションで形式名を指定して、 コンパイラーにファイル内の特定の形式を指示す ることができます。 形式名パラメーターが指定されない場合には、最初のレコード様式が使用されます。
自由形式定義では、ファイル名パラメーターおよび形式名パラメーター
は、文字リテラルか、または文字リテラルを表す名前付き定数でなければなりません。
パラメーターが名前付き定数である場合、その定数は
定義ステートメントの前に定義されている必要があります。
固定形式定義では、ファイル名パラメーターおよび形式名パラメーター
には、名前または文字リテラルのいずれかを指定できます。
文字リテラルを指定する場合は、ファイル名または形式名の大/小文字を正確に指定する必要があります。
例えば、MYFILE という外部ファイルの場合、そのファイル名パラメーターについては、myFile、myfile などのように大/小文字を組み合わせて指定することもできますが、リテラルとして指定するのであれば「MYFILE」としなければなりません。
ファイル名が文字リテラルの場合は、以下のいずれかの形式になります。
'LIBRARY/FILE'
'FILE'
'*LIBL/FILE'
残りの抜き出しタイプ・パラメーターは、外部レコード内のどのフィールドを抜き出すか指定します。
- *ALL はすべてのフィールドを抜き出します。
- *INPUT は入力可能フィールドのみを抜き出します。
- *OUTPUT は出力可能フィールドのみを抜き出します。
- *KEY はキー・フィールドのみを抜き出します。
ファイル内のフィールドと同じデータ・タイプを持つサブフィールドを定義するのではなく、それらのサブフィールドがすべて標識であることを示すために、*NULL を指定することもできます。
データベース・ファイルの場合、これらの標識のレイアウトは、レコードのヌル・バイト・マップと同じです。
注:
- 形式名が指定されていない場合、レコードは、デフォルトの値であるファイル内の最初のレコードになります。
*INPUT および *OUTPUT の場合、*NULL が指定されなければ、データ構造に含まれるサブフィールドは、外部レコード記述内と同じ開始位置を占めます。
*NULL が指定されると、標識はデータベース・ファイルの外部レコードのヌル・バイト・マップ内のヌル標識と同じ開始位置を占めます。
その他のタイプのファイルの場合は、標識サブフィールドの開始位置は順次に割り当てられます。
外部記述データ構造 (自由形式定義で EXT キーワードがあるか、
自由形式定義で 22 桁目に E がある) であり、EXTNAME キーワードが
指定されていない場合、データ構造名が外部名に使用されます。
*NULL が指定されないと、コンパイラーは外部記述データ構造のすべてのフィールドについて、次の定義仕様書項目を生成します。
- サブフィールド名 (データ構造に ALIAS キーワードが指定されているか、 EXTFLD キーワードによってフィールドが名前変更されているか、 あるいは定義仕様書の PREFIX キーワードを使用して接頭部を適用する場合を除いて、名前は 外部名と同じになります。)
- サブフィールドの長さ
- サブフィールドの内部データ・タイプ (タイプ に CVTOPT 制御仕様書キーワードまたはコマンド・パラメーターを 指定した場合を除いて、外部タイプと同じになります。 このコンパイル・オプションを指定した場合には、データ・タイプは文字になります。)

*NULL が指定されると、上述のようにサブフィールド名が生成されます。 ただし、長さは 1 になり、データ・タイプは標識になります。
LIKEDS および LIKEREC を除くすべてのデータ構造キーワードは、EXTNAME キーワードと一緒に使用すること ができます。
ただし、*NULL が指定された場合は、CCSID(*EXACT) を指定することはできません。
抜き出しタイプ *NULL で定義されたデータ構造を入出力操作と一緒に使用することはできません。