Record properties define the characteristics of the data you store in record elements. You can remove a record property by adding the NO keyword to the property name. For example, NOARRAY removes the ARRAY property. Not all languages or language processors support all CDO properties. Those properties that are not supported are ignored. The valid CDO field properties appear below.
1 – ARRAY
Format [ ROW_MAJOR ] [ COLUMN_MAJOR ] ARRAY { [ n1: ] n2 } ... [ ]
1.1 – Parameters
1.1.1 – n1
Specifies the lower bound of the subscript. Replace n1 with a signed integer or a value expression that translates to a signed integer. The default value is 1.
1.1.2 – n2
Specifies the upper bound of the subscript. Replace n2 with a signed integer or a value expression that translates to a signed integer. This value is greater than or equal to n1.
1.2 – Description
The ARRAY property defines a single- or multidimensional array in a field or record element. In multidimensional arrays, ROW_MAJOR declares the rightmost subscript to be the fastest varying. COLUMN_MAJOR declares the leftmost subscript to be the fastest varying. If you do not specify either ROW_MAJOR or COLUMN_MAJOR, the default is ROW_MAJOR.
1.3 – Examples
1.CDO> DEFINE FIELD SUPPLIER cont> ARRAY 0:19 1:4 cont> DATATYPE IS TEXT cont> SIZE IS 30 CHARACTERS. In this example, the DEFINE RECORD command includes an ARRAY property that declares 20 instances of the SUPPLIER field element (from 0 to 19). Each instance is four 30-character strings. 2.CDO> DEFINE RECORD SUPPLIER_REC cont> ROW_MAJOR ARRAY 1:20. cont> END RECORD. In this example, the DEFINE RECORD command includes an ARRAY property that creates the SUPPLIER_REC record element as an array. 3.CDO> CHANGE RECORD SUPPLIER_REC. cont> NOARRAY. cont> END RECORD. In this example, the CHANGE RECORD command includes a NOARRAY property that removes the ARRAY property from the SUPPLIER_REC record element.
2 – NAME
Format { BASIC } { COBOL } NAME FOR { PLI } IS name { } { RPG }
2.1 – Parameters
2.1.1 – name
Specifies a language-specific name for a field or record element.
2.2 – Description
The NAME property declares a language-specific name for a field or record element. This name must be a valid name for the specified language or language processor. CDO does not check the validity of the name that you specify. Once you have assigned a language-specific name to an element, the specific language no longer recognizes the element's original name. You can assign only one language-specific name per language to an element. CAUTION Be careful when you use the NAME field property because it allows you to assign completely different names to the same field or record element. Choose a language-specific name that is similar to the element's directory or processing name to avoid confusion.
2.3 – Examples
CDO> DEFINE FIELD ORDER_NUMBER cont> DATATYPE IS UNSIGNED NUMERIC cont> SIZE IS 10 DIGITS cont> NAME FOR COBOL IS ORDER-NUMBER. In this example, the NAME property assigns a language-specific processing name to the ORDER_NUMBER field used by COBOL.
3 – OCCURS_DEPENDING
Format { TO n2 TIMES DEPENDING ON name1 [ IN name2 ] ... } OCCURS n1 { TIMES } { } [ INDEXED BY index-name ]
3.1 – Parameters
3.1.1 – n1,_n2
Specifies the range for the number of occurrences. The value of n1 is greater than or equal to zero. The value of n2 is greater than or equal to n1.
3.1.2 – name1
Specifies the field element whose value determines the actual number of occurrences.
3.1.3 – name2
Specifies the element that contains the depending field. This element is often a record.
3.1.4 – index-name
Specifies the field element that functions as an index.
3.2 – Description
The OCCURS ... DEPENDING record property declares a variable- length, one-dimensional array. The actual number of occurrences varies according to the value of the name1 field element. An error occurs if name2 does not include the name1 field, or if name2 specifies an array record element. You can repeat name2 as many times as necessary to identify the particular instance of name1. For example, name2 can repeat to identify a field element within nested record elements: CDO> DEFINE RECORD RETIREMENT_CHECKS OCCURS 1 TO 2 TIMES cont> DEPENDING ON ID_NUMBER IN EMPLOYEES cont> IN MEDICALLY_RETIRED_EMPLOYEES IN RETIRED_EMPLOYEES. cont> END RECORD.
3.3 – Examples
1.CDO> DEFINE RECORD VACATION_PAY OCCURS 1 TO 2 TIMES cont> DEPENDING ON EXCESS_VACATION IN EMPLOYEE_BENEFITS. cont> EMP_SSN. cont> WEEKLY_SALARY. cont> END RECORD. In this example, the OCCURS ... DEPENDING record property specifies the number of times the VACATION_PAY record element occurs. The number of occurrences is based on the run-time value of the tag variable field element, EXCESS_VACATION, which is part of the EMPLOYEE_BENEFITS record element. 2.CDO> CHANGE RECORD VACATION_PAY cont> NOOCCURS. cont> END RECORD. In this example, the keyword NOOCCURS in the CHANGE RECORD command removes the OCCURS ... DEPENDING record property from the VACATION_PAY record element. 3.CDO> DEFINE FIELD MESSAGE_TABLE_IDX DATATYPE IS LONGWORD. CDO> DEFINE FIELD MESSAGE_TEXT DATATYPE IS TEXT SIZE IS cont> 256 CHARACTERS. CDO> DEFINE RECORD MESSAGE_TABLE. cont> MESSAGE_STRUCT STRUCTURE OCCURS 10 TIMES INDEXED BY cont> MESSAGE_TABLE_IDX. cont> MESSAGE_TEXT. cont> END MESSAGE STRUCTURE. cont> END MESSAGE_TABLE RECORD. CDO> DEFINE RECORD MESSAGE_TABLE2. cont> MESSAGE_STRUCT STRUCTURE OCCURS 1 TO 10 TIMES cont> DEPENDING ON MESSAGE_TEXT cont> INDEXED BY MESSAGE_TABLE_IDX. cont> MESSAGE_TEXT. cont> END MESSAGE STRUCTURE. cont> END MESSAGE_TABLE2 RECORD. CDO> SHOW RECORD MESSAGE_TABLE/FULL Definition of record MESSAGE_TABLE | Contains record MESSAGE_STRUCT | | Occurs 10 indexed by MESSAGE_TABLE_IDX | | Contains field MESSAGE_TEXT | | | Datatype text size is 256 characters CDO> SHOW RECORD MESSAGE_TABLE2/FULL Definition of record MESSAGE_TABLE2 | Contains record MESSAGE_STRUCT | | Occurs 1 to 10 depending on MESSAGE_TEXT indexed by MESSAGE_TABLE_IDX | | Contains field MESSAGE_TEXT | | | Datatype text size is 256 characters In this example, the MESSAGE_TABLE record contains an INDEXED BY clause. The name of the index field must already be defined.