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:
declare
1 dso_v1 based( null() ),
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:
declare
1 dso_v2 based( null() ),
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:
declare
1 dso_v3 based( null() ),
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 */