ご使用のブラウザはJavaScriptをサポートしていません。このヘルプ・ページを正しく表示するにはJavaScriptが必要です。 フィールドに定義された配列
ヘッダーをスキップ
前へ
前へ
 
次へ
次へ

フィールドに定義された配列

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となります。