Library /sys$common/syshlp/CDDLHELP.HLB  —  OCCURS_DEPENDING
  The OCCURS .  .  .   DEPENDING  field  attribute  clause  declares  a
  variable-length, one-dimensional array.

1  –  Parameters

  min_number, max_number

      The range for the number of occurrences.

  dep_field_name

      The tag variable field, whose value determines the actual  number
      of occurrences.

  COB_index

      A VAX COBOL index name.

2  –  Syntax Rules

   o  Two unsigned integers (min_number, max_number)  specify  a  range
      for  the  number of occurrences; min_number specifies the minimum
      number of occurrences and must be greater than or equal to  zero;
      max_number  specifies  the maximum number of occurrences and must
      be greater than or equal to min_number.

   o  The actual number of occurrences varies according to the value of
      the named field.

   o  The field (dep_field_name) named in the DEPENDING clause must  be
      an elementary field fixed in the record and not part of an array.
      Its field description must precede the array  field  description,
      and its value must never be less than min_number nor greater than
      max_number.  You must name the field.

   o  You must fully qualify the field name if it is not unique  within
      the  record.   A  fully  qualified  field  name  consists  of  an
      elementary field name preceded by the field names of as  many  of
      its  direct ancestors as you need to specify the elementary field
      uniquely.  Once the elementary field name is identified uniquely,
      you  can  omit  any  remaining  ancestors' field names.  You must
      separate each element of a fully qualified field  name  from  the
      next with a period.

3  –  Usage Notes

   o  The unsigned integers min_number and max_number declare the range
      for the array's upper bound; the lower bound of an array declared
      with OCCURS . . . DEPENDING is always 1.  If you need to  specify
      an array with a lower bound other than 1, use the ARRAY clause.

   o  If the tag variable's name is not unique within the record,  none
      of  the  ancestors  in  its  fully  qualified name can be unnamed
      fields.

   o  Only VAX COBOL supports the INDEXED FOR COBOL BY field  attribute
      clause.  Other processors ignore it.

   o  You cannot use the INDEXED FOR COBOL BY optional field  attribute
      clause with Version 3.0 of VAX COBOL or any earlier version.  VAX
      COBOL supports INDEXED FOR COBOL BY in Version 3.1 and later.

   o  If you use a name as a COBOL index name you cannot use that  name
      as  a  field  name or COBOL-specific name elsewhere in the record
      description.

4  –  Example

  In the following example, a variable length array defines  individual
  transactions within the STRUCTURE field SALES.

  SALES STRUCTURE.
      TRANSACTION_COUNT               DATATYPE IS UNSIGNED WORD
                                      VALID FOR DTR IF
                                          "TRANSACTION_COUNT > 0".
      TRANSACTION STRUCTURE           OCCURS 1 TO 99 TIMES
                                          DEPENDING ON
                                          TRANSACTION_COUNT.
          TRANS_DATE                  DATATYPE IS DATE.
          ORDER_NUMBER                DATATYPE IS UNSIGNED NUMERIC
                                      SIZE IS 10 DIGITS.
          AMOUNT                      DATATYPE IS UNSIGNED NUMERIC
                                      SIZE IS 8 DIGITS 2 FRACTIONS
                                      PICTURE FOR COBOL IS "9(6)V99".
      END TRANSACTION STRUCTURE.
  END SALES STRUCTURE.

  The   fully   qualified   field   name   of   TRANSACTION_COUNT    is
  SALES.TRANSACTION_COUNT.
Close Help