前へ |
次へ |
COBOLでは配列と可変長配列の両方がサポートされます。これらの複雑な構造は、OCCURS句を使用して指定します。可変長配列はDEPENDING ON句の指定を追加することにより定義します。配列の場合、OCCURS句に配列内の要素数を指定します。可変長配列の場合は、OCCURS指定に要素の範囲であるFROM n TO nを含め、DEPENDING ON句に、配列内の実際の要素数を含んだフィールドを指定します。配列または可変長配列は、基本フィールドまたはグループに定義できます。「例: 基本フィールドに定義された配列」には、基本フィールドに定義された配列の例が記載されています。
基本フィールドに定義された配列
01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE. 10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-LEVEL PIC 99 OCCURS 4 TIMES. 05 EMP-SKILL-ID PIC 9(4) OCCURS 4 TIMES.
EMP-SKILL_LEVELとEMP-SKILL_IDに1つずつ計2つの独立した配列が定義されています。この例のレコードでは、EMP-SKILL-LEVELが4回出現した後に、EMP- SKILL-IDが4回出現します。したがって、ファイルの各レコード内のフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_ID、EMP_SKILL_ID、EMP_ SKILL_IDとなります。
「例: 基本フィールドに定義された可変長配列」には、基本フィールドに定義される可変長配列の例が記載されています。
基本フィールドに定義された可変長配列
01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE. 10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-COUNT PIC 99. 05 EMP-SKILL-LEVEL PIC 99 OCCURS 1 TO 4 TIMES. DEPENDING ON EMP-SKILL-COUNT. 05 EMP-SKILL-ID PIC 9(4) OCCURS 1 to 4 TIMES. DEPENDING ON EMP-SKILL-COUNT.
EMP-SKILL_LEVELおよびEMP-SKILL_IDにそれぞれ1つずつ計2つの独立した配列が定義されています。この例では、EMP-SKILL-COUNTの値が両方の配列内の発生数を示しています。ファイル内では、EMP_SKILL_COUNTが1のレコードはEMP_SKILL_LEVEL、EMP_SKILL_IDとして構築されます。EMP-SKILL-COUNTの値が2の場合は、2つのEMP-SKILL-LEVELの発生の後に、2つのEMP-SKILL-IDの発生が続きます。ファイル内では、EMP_SKILL_COUNTが2のレコードのフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_IDとなります。
「例: グループ・フィールドに定義された配列」には、グループ・フィールドに定義された配列の例が記載されています。
グループ・フィールドに定義された配列
01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE. 10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILLS OCCURS 4 TIMES. 10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9(4).
この例では、1つの配列が4つの要素で定義されています。各要素には、EMP_SKILL_LEVELおよびEMP_SKILL_IDの各フィールドの発生が1つずつ含まれています。ファイル内の各レコード内のフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_IDとなります。
「例: グループ・フィールドに定義された可変長配列」には、グループ・フィールドに定義された可変長配列の例が記載されています。
グループ・フィールドに定義された可変長配列
01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE. 10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-COUNT PIC 99. 05 EMP-SKILLS OCCURS 4 TIMES DEPENDING ON EMP-SKILL-COUNT. 10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9(4).
この例では、1つの配列が最大4つの要素で定義されています。EMP-SKILL-COUNTの値は、配列内の発生数を定義します。したがって、EMP-SKILL-COUNTの値を1に設定すると、EMP_SKILLSの発生は1つになります。ファイル内では、EMP_SKILL_COUNTが1のレコードのフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_IDとなります。EMP-SKILL-COUNTの値が2の場合は、EMP-SKILLSの発生が2つになります。ファイル内では、EMP_SKILL_COUNTが2のレコードのフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_IDとなります。