EXTNAME(file-name{:format-name}{:*ALL| *INPUT|*OUTPUT|*KEY|*NULL})

The EXTNAME keyword is used to specify the name of the file that contains the field descriptions used as the subfield description for the data structure being defined.

The file_name parameter is required. Optionally a format name may be specified to direct the compiler to a specific format within a file. If format_name parameter is not specified the first record format is used.

If a character literal is specified, the file or format name must be specified in the correct case. For example, if the external file is MYFILE, the file-name parameter could be specified as a name in mixed case such as myFile or myfile, but if specified as a literal it must be 'MYFILE'. If the file-name is a character literal, it can be in any of the following forms
'LIBRARY/FILE'
'FILE'
'*LIBL/FILE' 

Start of changeThe remaining extract-type parameters specify which fields in the external record to extract.End of change

Start of change*NULL can also be specified to indicate that instead of defining the subfields with the same data types as the fields in the file, the subfields are all indicators. For a database file, these indicators have the same layout as the null byte map for the record.End of change

Note:
  1. If the format-name is not specified, the record defaults to the first record in the file.
  2. Start of changeFor *INPUT and *OUTPUT when *NULL is not specified, subfields included in the data structure occupy the same start positions as in the external record description. When *NULL is specified, the indicators occupy the same start position as the null indicators in the null byte map for the external record for a database file. For other types of files, the start positions of the indicator subfields are assigned sequentially.End of change

Start of changeIf an externally-described data structure (EXT keyword for a free-form definition, or E in position 22 for a free-form definition, and the EXTNAME keyword is not specified, the data structure name is used for the external name.End of change

Start of changeIf *NULL is not specified, the compiler generates the following definition specification entries for all fields of the externally described data structure: End of change

If *NULL is specified, the subfield name will be generated in the same way. However, the length will be 1 and the data type will be indicator.

All data structure keywords except LIKEDS and LIKEREC are allowed with the EXTNAME keyword.

However, if *NULL is specified, CCSID(*EXACT) is not allowed.

Start of changeData structures that are defined with the extract-type *NULL cannot be used with I/O operations.End of change