OCCURS Clause

The OCCURS clause allows for the creation of tables or arrays.

Format 1

OCCURS table-size TIMES

   [ {ASCENDING } KEY IS {key-name} ... ] ...
     {DESCENDING}

   [ INDEXED BY {index-name} ... ]

Format 2

OCCURS [ min-size TO ] max-size TIMES DEPENDING ON dep-item

   [ {ASCENDING } KEY IS {key-name} ... ] ...
     {DESCENDING}

   [ INDEXED BY {index-name} ... ]

Syntax Rules

  1. table-size is a positive integer that specifies the exact number of occurrences.
  2. min-size is an integer that specifies the minimum number of occurrences. Its value must be greater than or equal to zero. If omitted, it has a default value of one.
  3. max-size is an integer that specifies the maximum number of occurrences. Its value cannot be less than min-size; it cannot be larger than 2147483647.
  4. dep-item is the name of an elementary unsigned integer data item. Its value specifies the current number of occurrences.
  5. Index-name is an index-name. It associates an index with the table. Index-name is implicitly defined by the INDEXED phrase. It may not be defined elsewhere in the program. Each index-name must be a unique word in the program, because it cannot be qualified.
  6. key-name is the data-name of the entry that contains the OCCURS clause, or an entry subordinate to it. key-name may be qualified. Each key-name after the first must name a subordinate item to the entry containing the OCCURS clause. A key-name may not contain an OCCURS clause unless that key-name is the name of the subject of the current OCCURS clause.
  7. If a Format 2 OCCURS clause appears in a record description for a file, dep-item must appear in the same record.
  8. An item described by a Format 2 OCCURS clause can be followed, in the same record description, only by items subordinate to it.
  9. An OCCURS clause may not appear in a data description entry that has a level-number of 66, 78, or 88. A variable occurrence data item (one that has a Format 2 OCCURS clause) may not be subordinate to another data item that has an OCCURS clause.
  10. The dep-item may not occupy any character positions subordinate to the data item described by that OCCURS clause.

General Rules

  1. The OCCURS clause defines tables. All items subordinate to an OCCURS clause must be referenced with subscripting or indexing.
  2. Except for the OCCURS clause itself, all data description clauses associated with that data item apply to each occurrence of the item.
  3. A Format 1 OCCURS clause defines a fixed-size table.
  4. A Format 2 OCCURS clause defines a table that contains a variable number of occurrences. The current number of occurrences depends on dep-item. Only the number of occurrences is variable; the table's size is fixed (max-size). dep-item must fall in the range from min-size to max-size. Values contained in the table that are beyond the current number of occurrences (dep-item) are unpredictable.
  5. The size occupied by a table is the size of one of its occurrences multiplied by the maximum number of occurrences in the table (max-size in Format 2).
  6. If a group item containing a subordinate data item with a Format 2 OCCURS clause is involved in an operation, the operation uses only that part of the table specified by dep-item.
  7. Index names are treated in all respects as USAGE INDEX data items by the compiler.
  8. The KEY IS phrase indicates that the data is arranged in ascending or descending order according to the values in the data items named by key-name. The position of each key-name in the list determines its significance. The first key-name is the most significant, the last is the least significant. The KEY IS phrase is used by the SEARCH ALL verb.