Understanding how the XFD File is Formed

Micro Focus's data dictionaries (XFDs) enable the Acu4GL and AcuXML interfaces to create a table (or access an existing one) in a database for each indexed, relative, or sequential file. Each column in the table contains the values for one field. The column names are essentially the field names.

XFDs also allow the alfred record editor to display and accept data in an indexed file at the field level, instead of character-by-character. If an XFD is available to alfred, it has enough information to display fields on the screen, instead of just groups of characters. This makes the screen easier to read, and helps make editing more efficient.

Each XFD file is based on the largest record in the COBOL file, and contains the fields from that record, plus any key fields (key fields are those which are named in KEY IS phrases of SELECT verbs in the File-Control section). This ensures that data from all COBOL records will fit within database tables, and simplifies the storage and retrieval process. If you were to examine the XFD file, only the fields from the largest record, and the key fields, would appear.

Note: If the field named in the KEY IS phrase is a group item, it will not be named as a field in the XFD file. This means it will not be used as a column in a database table, if you are using an Acu4GL interface, and it will not appear on the screen if you use the alfred editor. Instead, all elementary items subordinate to the named group item will be named in the XFD. You can force the group item to be a named field by using the USE GROUP directive.

With multiple record formats (level 01), not all COBOL fields are named in the XFD file, but all fields are storable and retrievable. The data dictionary maps fields from all records of a file to the corresponding locations in the master (largest) record of the file. Since Acu4GL and alfred have access to the data dictionary, they know where the data from a given COBOL record fits. This activity is invisible to the COBOL application.

For example, if your program has one file with the three records shown below, the underlined fields will be included as fields in the XFD file by default (this example assumes that ar-codes-key is named in a KEY IS phrase). Some fields will not appear by name in the file, but will be mapped to the master field names. The interface thus will eliminate redundancies and give you optimum performance.

01  ar-codes-record.
  03  ar-codes-key.
    05  ar-code-type      pic x.
    05  ar-code-num       pic 999.

01  ship-code-record.
  03  filler              pic x(4).
  03  ship-weight         pic s999v9.
  03  ship-instruct       pic x(15).

01  terms-code-record.
  03  filler              pic x(4).
  03  terms-rate-1        pic s9v999.
  03  terms-days-1        pic 9(3).
  03  terms-rate-2        pic s9v999.
  03  terms-descript      pic x(15).

The following diagram shows how Acu4GL creates database columns for some of the fields in the COBOL record, while other fields are mapped to those columns by the data dictionary; this means that all the fields are accessible to the COBOL program.