Array descriptors

In the following declares, the upper bound for the arrays is declared as 15, but it should be understood that the actual upper bound will always match the number of dimensions in the array it describes.

The declare for a CMPAT(V1) array descriptor is as follows:

declare
  1 dso_v1  based,
    2 dso_v1_rvo      fixed bin(31),    /* relative virtual origin */
    2 dso_v1_data(1:15),
      3 dso_v1_stride fixed bin(31),    /*   multiplier            */
      3 dso_v1_hbound fixed bin(15),    /*   hbound                */
      3 dso_v1_lbound fixed bin(15);    /*   lbound                */

The declare for a CMPAT(V2) array descriptor is as follows:

declare
  1 dso_v2  based,
    2 dso_v2_rvo      fixed bin(31),    /* relative virtual origin */
    2 dso_v2_data(1:15),
      3 dso_v2_stride fixed bin(31),    /*   multiplier            */
      3 dso_v2_hbound fixed bin(31),    /*   hbound                */
      3 dso_v2_lbound fixed bin(31);    /*   lbound                */

The declare for a CMPAT(V3) array descriptor is as follows:

declare
  1 dso_v3  based,
    2 dso_v3_rvo      fixed bin(63),    /* relative virtual origin */
    2 dso_v3_data(1:15),
      3 dso_v3_stride fixed bin(63),    /*   multiplier            */
      3 dso_v3_hbound fixed bin(63),    /*   hbound                */
      3 dso_v3_lbound fixed bin(63);    /*   lbound                */