ILE COBOL プログラムでの標識の使用例

ここでは、レコード域または別個の標識域のいずれかで標識を使用する ILE COBOL プログラムの例を示します。

すべての ILE COBOL プログラムは、次のことを行います。

  1. 現在の日付を調べる。
  2. それが月の最初の日である場合、出力フィールドを表示して明滅させるオプション標識をオンに変える。
  3. ユーザーがプログラムを終了させるためにファンクション・キーを押せるようにするか、 または応答標識をオンに変えて日報または月報を作成するプログラムを呼び出す。

図 135 には、レコード域内の標識は使用するが、入出力ステートメントの中で INDICATORS 句を使わない ILE COBOL プログラムを示します。 図 134 には、そのファイルに対する関連付けられた DDS を示します。

図 136 には、レコード域の中の標識を使用し、入出力ステートメントで INDICATORS 句を使用する ILE COBOL プログラムが示されています。 図 136 に対する関連付けられた DDS は、図 134 です。

図 138 には、形式 2 の COPY ステートメントを使用して WORKING-STORAGE SECTION 中で定義された別個の標識域で標識を使う ILE COBOL プログラムが示されています。 図 137 には、そのファイルに対する関連付けられた DDS を示します。

図 139 で、WORKING-STORAGE SECTION のテーブルで定義され、個別の標識域の標識を使用する、ILE COBOL プログラムを示します。 そのファイルに関連する DDS は 図 137 と同じです。

図 134. 入出力ステートメント中の INDICATORS 句を使わずにレコード域の標識を使用するプログラムの例 - DDS
 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
      A* DISPLAY FILE DDS FOR INDICATOR EXAMPLES - INDICATORS IN RECORD AREA
      A* DSPFILEX                             1 
      A      2   R FORMAT1                 3 CF01(99 'END OF PROGRAM')
      A                                      CF05(51 'DAILY REPORT')
      A                                      CF09(52 'MONTHLY REPORT')
      A*
      A                            4    10 10'DEPARTMENT NUMBER:'
      A            DEPTNO         5   I 10 32
      A   5 01                          20 26'PRODUCE MONTHLY REPORTS'
      A                                      DSPATR(BL)
      A*
      A                             6   24 01'F5 = DAILY REPORT'
      A                                 24 26'F9 = MONTHLY REPORT'
      A                                 24 53'F1 = TERMINATE'
      A          R ERRFMT
      A     98                           6  5'INPUT-OUTPUT ERROR'
 1 
INDARA キーワードは使用しません。 標識はデータ・フィールドとともにレコード域に保管されます。
 2 
レコード様式 FORMAT1 を指定しています。
 3 
3 つの標識が 3 つのファンクション・キーに関連付けられています。 F1 キーを押すと標識 99 がオンに設定されます。その他も同様です。
 4 
入力用に 1 つのフィールドが定義されます。
 5 
標識がオンの場合には関連付けられた固定情報フィールドが明滅するように、標識 01 が定義されます。
 6 
機能 (F) キー定義が、ワークステーションのディスプレイ装置上に表示されるようにします。
図 135. 入出力ステートメント中の INDICATORS 句を使わずにレコード域の標識を使用するプログラムの例 - COBOL ソース・プログラム
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 14:59:29        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
     1     000100 IDENTIFICATION DIVISION.
     2     000200   PROGRAM-ID.     INDIC1.
           000300*    SAMPLE PROGRAM WITH INDICATORS IN RECORD AREA.
           000400
     3     000500 ENVIRONMENT DIVISION.
     4     000600   CONFIGURATION SECTION.
     5     000700 SOURCE-COMPUTER. IBM-ISERIES
     6     000800 OBJECT-COMPUTER. IBM-ISERIES
     7     000900   INPUT-OUTPUT SECTION.
     8     001000   FILE-CONTROL.
     9     001100     SELECT DISPFILE
    10     001200       ASSIGN TO WORKSTATION-DSPFILEX   1 
    11     001300       ORGANIZATION IS TRANSACTION
    12     001400         ACCESS IS SEQUENTIAL.
           001500
    13     001600 DATA DIVISION.
    14     001700 FILE SECTION.
    15     001800 FD  DISPFILE.
    16     001900 01  DISP-REC.
           002000       COPY DDS-ALL-FORMATS OF DSPFILEX.   2 
    17    +000001       05  DSPFILEX-RECORD PIC X(8).                                          <-ALL-FMTS
          +000002*  INPUT FORMAT:FORMAT1    FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    18    +000004       05  FORMAT1-I     REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    19    +000005           06 FORMAT1-I-INDIC.                                                <-ALL-FMTS
    20    +000006                07 IN99             PIC 1  INDIC 99.   3                      <-ALL-FMTS
          +000007*                          END OF PROGRAM                                     <-ALL-FMTS
    21    +000008                07 IN51             PIC 1  INDIC 51.                          <-ALL-FMTS
          +000009*                          DAILY REPORT                                       <-ALL-FMTS
    22    +000010                07 IN52             PIC 1  INDIC 52.                          <-ALL-FMTS
          +000011*                          MONTHLY REPORT                                     <-ALL-FMTS
    23    +000012           06 DEPTNO                PIC X(5).                                 <-ALL-FMTS
          +000013* OUTPUT FORMAT:FORMAT1    FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000014*                                                                             <-ALL-FMTS
    24    +000015       05  FORMAT1-O     REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    25    +000016           06 FORMAT1-O-INDIC.                                                <-ALL-FMTS
    26    +000017                07 IN01             PIC 1  INDIC 01.                          <-ALL-FMTS
          +000018*  INPUT FORMAT:ERRFMT     FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000019*                                                                             <-ALL-FMTS
          +000020*      05  ERRFMT-I      REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
          +000021* OUTPUT FORMAT:ERRFMT     FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000022*                                                                             <-ALL-FMTS
    27    +000023       05  ERRFMT-O      REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    28    +000024           06 ERRFMT-O-INDIC.                                                 <-ALL-FMTS
    29    +000025                07 IN98             PIC 1  INDIC 98.                          <-ALL-FMTS
           002100
    30     002200 WORKING-STORAGE SECTION.
    31     002300 01  CURRENT-DATE.
    32     002400     05  CURR-YEAR                 PIC 9(2).
    33     002500     05  CURR-MONTH                PIC 9(2).
    34     002600     05  CURR-DAY                  PIC 9(2).
    35     002700 01  INDIC-AREA.   4 
    36     002800    05  IN01                       PIC 1.
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 14:59:29        ページ    3
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
    37     002900       88  NEW-MONTH               VALUE B"1".   5 
    38     003000    05  IN51                       PIC 1.
    39     003100       88  WANT-DAILY              VALUE B"1".
    40     003200    05  IN52                       PIC 1.
    41     003300       88  WANT-MONTHLY            VALUE B"1".
    42     003400    05  IN98                       PIC 1.
    43     003500       88  IO-ERROR                VALUE B"1".
    44     003600    05  IN99                       PIC 1.
    45     003700       88  NOT-END-OF-JOB          VALUE B"0".
    46     003800       88  END-OF-JOB              VALUE B"1".
           003900
    47     004000 PROCEDURE DIVISION.
    48     004100 DECLARATIVES.
           004200 DISPLAY-ERR-SECTION SECTION.
           004300     USE AFTER STANDARD EXCEPTION PROCEDURE ON DISPFILE.
           004400 DISPLAY-ERR-PARAGRAPH.
    49     004500     SET IO-ERROR TO TRUE
    50     004600     MOVE CORR INDIC-AREA TO ERRFMT-O-INDIC
                 *** CORRESPONDING items for statement 50:
                 ***     IN98
                 *** End of CORRESPONDING items for statement 50
    51     004700     WRITE DISP-REC FORMAT IS "ERRFMT"
           004800     END-WRITE
    52     004900     CLOSE DISPFILE.
    53     005000     STOP RUN.
           005100 END DECLARATIVES.
           005200
           005300 MAIN-PROGRAM SECTION.
           005400 MAINLINE.
    54     005500     OPEN I-O DISPFILE.
    55     005600     ACCEPT CURRENT-DATE FROM DATE.
    56     005700     SET NOT-END-OF-JOB TO TRUE.
    57     005800     PERFORM UNTIL END-OF-JOB
           005900
    58     006000         MOVE ZEROS TO INDIC-AREA   6 
    59     006100         IF CURR-DAY = 01 THEN
    60     006200            SET NEW-MONTH TO TRUE   7 
           006300         END-IF
    61     006400         MOVE CORR INDIC-AREA TO FORMAT1-O-INDIC   8 
                 *** CORRESPONDING items for statement 61:
                 ***     IN01
                 *** End of CORRESPONDING items for statement 61
    62     006500         WRITE DISP-REC FORMAT IS "FORMAT1"   9 
           006600         END-WRITE
           006700
    63     006800         MOVE ZEROS TO INDIC-AREA
    64     006900         READ DISPFILE FORMAT IS "FORMAT1"   10 
           007000         END-READ
    65     007100         MOVE CORR FORMAT1-I-INDIC TO INDIC-AREA   11 
                 *** CORRESPONDING items for statement 65:
                 ***     IN99
                 ***     IN51
                 ***     IN52
                 *** End of CORRESPONDING items for statement 65
    66     007200         IF WANT-DAILY THEN
    67     007300            CALL "DAILY" USING DEPTNO
           007400         ELSE
    68     007500            IF WANT-MONTHLY THEN
    69     007600               CALL "MONTHLY" USING DEPTNO   12 
           007700             END-IF
           007800         END-IF
           007900
           008000     END-PERFORM.
    70     008100     CLOSE DISPFILE.
    71     008200     STOP RUN.
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *
 1 
別個の標識域属性 SI は、ASSIGN 文節中にはコーディングしません。 その結果、標識はレコード域の一部となります。
 2 
形式 2 の COPY ステートメントで、レコード域の中のデータ・フィールドと標識を定義します。
 3 
ファイル標識がレコード域の一部となっているので、DDS 中で使用されている順序で応答およびオプション標識を定義し、標識番号が文書として扱われます。
 4 
プログラムが使うすべての標識は、WORKING-STORAGE SECTION のデータ記述項目の中で意味をもつ名前を付けて定義されています。 標識番号は影響はないので、ここでは省略されています。
 5 
各標識ごとに、その標識の値と、意味のあるレベル 88 条件名とが関連付けられています。
 6 
グループ・レベルをゼロに初期設定します。
 7 
月の最初の日である場合、WORKING-STORAGE SECTION の IN01 をオンに設定します。
 8 
FORMAT1 の出力に該当する標識を、レコード域にコピーします。
 9 
FORMAT1 が、レコード域のデータおよび標識値の両方とともに、ワークステーションのディスプレイ装置に書き込まれます。

別個の標識域はなく、 これ以前の MOVE CORRESPONDING ステートメントでレコード域内に標識値が設定されているので、INDICATORS 句は不要です。

 10 
FORMAT1 (データと標識の両方を含む) がディスプレイ装置から読み込まれます。
 11 
FORMAT1 に対する応答標識を、レコード域から WORKING-STORAGE SECTION のデータ記述項目にコピーします。
 12 
F5 が押されている場合、プログラム呼び出しを処理します。
図 136. レコード域の標識と入出力ステートメントの INDICATORS 句を使用するプログラムの例 - COBOL ソース・プログラム
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 15:00:29        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
     1     000100 IDENTIFICATION DIVISION.
     2     000200   PROGRAM-ID.     INDIC2.
           000300*    SAMPLE PROGRAM - FILE WITH INDICATORS IN RECORD AREA
           000400
     3     000500 ENVIRONMENT DIVISION.
     4     000600   CONFIGURATION SECTION.
     5     000700 SOURCE-COMPUTER. IBM-ISERIES
     6     000800 OBJECT-COMPUTER. IBM-ISERIES
     7     000900   INPUT-OUTPUT SECTION.
     8     001000   FILE-CONTROL.
     9     001100     SELECT DISPFILE
    10     001200       ASSIGN TO WORKSTATION-DSPFILEX   1 
    11     001300       ORGANIZATION IS TRANSACTION
    12     001400         ACCESS IS SEQUENTIAL.
           001500
    13     001600 DATA DIVISION.
    14     001700 FILE SECTION.
    15     001800 FD  DISPFILE.
    16     001900 01  DISP-REC.
           002000       COPY DDS-ALL-FORMATS OF DSPFILEX.   2 
    17    +000001       05  DSPFILEX-RECORD PIC X(8).                                          <-ALL-FMTS
          +000002*  INPUT FORMAT:FORMAT1    FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    18    +000004       05  FORMAT1-I     REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    19    +000005           06 FORMAT1-I-INDIC.                                                <-ALL-FMTS
    20    +000006                07 IN99             PIC 1  INDIC 99.   3                      <-ALL-FMTS
          +000007*                          END OF PROGRAM                                     <-ALL-FMTS
    21    +000008                07 IN51             PIC 1  INDIC 51.                          <-ALL-FMTS
          +000009*                          DAILY REPORT                                       <-ALL-FMTS
    22    +000010                07 IN52             PIC 1  INDIC 52.                          <-ALL-FMTS
          +000011*                          MONTHLY REPORT                                     <-ALL-FMTS
    23    +000012           06 DEPTNO                PIC X(5).                                 <-ALL-FMTS
          +000013* OUTPUT FORMAT:FORMAT1    FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000014*                                                                             <-ALL-FMTS
    24    +000015       05  FORMAT1-O     REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    25    +000016           06 FORMAT1-O-INDIC.                                                <-ALL-FMTS
    26    +000017                07 IN01             PIC 1  INDIC 01.                          <-ALL-FMTS
          +000018*  INPUT FORMAT:ERRFMT     FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000019*                                                                             <-ALL-FMTS
          +000020*      05  ERRFMT-I      REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
          +000021* OUTPUT FORMAT:ERRFMT     FROM FILE DSPFILEX   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000022*                                                                             <-ALL-FMTS
    27    +000023       05  ERRFMT-O      REDEFINES DSPFILEX-RECORD.                           <-ALL-FMTS
    28    +000024           06 ERRFMT-O-INDIC.                                                 <-ALL-FMTS
    29    +000025                07 IN98             PIC 1  INDIC 98.                          <-ALL-FMTS
           002100
    30     002200 WORKING-STORAGE SECTION.
    31     002300 01  CURRENT-DATE.
    32     002400     05  CURR-YEAR                 PIC 9(2).
    33     002500     05  CURR-MONTH                PIC 9(2).
    34     002600     05  CURR-DAY                  PIC 9(2).
           002700
    35     002800 77  IND-OFF                       PIC 1      VALUE B"0".
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 15:00:29        ページ    3
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
    36     002900 77  IND-ON                        PIC 1      VALUE B"1".
           003000
    37     003100 01  RESPONSE-INDICS.
    38     003200     05  END-OF-PROGRAM            PIC 1.   4 
    39     003300     05  DAILY-REPORT              PIC 1.
    40     003400     05  MONTHLY-REPORT            PIC 1.
    41     003500 01  OPTION-INDICS.
    42     003600     05  NEW-MONTH                 PIC 1.
    43     003700 01  ERROR-INDICS.
    44     003800     05  IO-ERROR                  PIC 1.
           003900
    45     004000 PROCEDURE DIVISION.
    46     004100 DECLARATIVES.
           004200 DISPLAY-ERR-SECTION SECTION.
           004300     USE AFTER STANDARD EXCEPTION PROCEDURE ON DISPFILE.
           004400 DISPLAY-ERR-PARAGRAPH.
    47     004500     MOVE IND-ON TO IO-ERROR
    48     004600     WRITE DISP-REC FORMAT IS "ERRFMT"
           004700                    INDICATORS ARE ERROR-INDICS
           004800     END-WRITE
    49     004900     CLOSE DISPFILE.
    50     005000     STOP RUN.
           005100 END DECLARATIVES.
           005200
           005300 MAIN-PROGRAM SECTION.
           005400 MAINLINE.
    51     005500     OPEN I-O DISPFILE.
    52     005600     ACCEPT CURRENT-DATE FROM DATE.
    53     005700     MOVE IND-OFF TO END-OF-PROGRAM.
    54     005800     PERFORM UNTIL END-OF-PROGRAM = IND-ON
    55     005900         MOVE ZEROS TO OPTION-INDICS
    56     006000         IF CURR-DAY = 01 THEN   5 
    57     006100            MOVE IND-ON TO NEW-MONTH
           006200         END-IF
    58     006300         WRITE DISP-REC FORMAT IS "FORMAT1"   6 
           006400                        INDICATORS ARE OPTION-INDICS
           006500         END-WRITE
           006600
    59     006700         MOVE ZEROS TO RESPONSE-INDICS
    60     006800         READ DISPFILE FORMAT IS "FORMAT1"   7 
           006900                       INDICATORS ARE RESPONSE-INDICS   8 
           007000         END-READ
    61     007100         IF DAILY-REPORT = IND-ON THEN
    62     007200            CALL "DAILY" USING DEPTNO   9 
           007300         ELSE
    63     007400            IF MONTHLY-REPORT = IND-ON THEN
    64     007500               CALL "MONTHLY" USING DEPTNO
           007600            END-IF
           007700             END-IF
           007800
           007900     END-PERFORM
    65     008000     CLOSE DISPFILE.
    66     008100     STOP RUN.
           008200
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *
 1 
別個の標識域属性 SI は、ASSIGN 文節中にはコーディングしません。
 2 
形式 2 の COPY ステートメントで、レコード域の中のデータ・フィールドと標識を定義します。
 3 
ファイルに別個の標識域がないので、応答標識とオプション標識は DDS 中で使われている順番で定義され、 標識番号が文書として処理されます。
 4 
プログラムが使うすべての標識は、WORKING-STORAGE SECTION のデータ記述項目の中で意味をもつ名前を付けて定義されています。 標識番号は影響はないので、ここでは省略されています。 ディスプレイ・ファイルで必要となる順番で標識を定義する必要があります。
 5 
月の最初の日である場合、WORKING-STORAGE SECTION の IN01 をオンに設定します。
 6 
FORMAT1 が以下のようにしてワークステーションのディスプレイ装置に書き込まれます。
 7 
FORMAT1 (データと標識の両方を含む) がワークステーションのディスプレイ装置から読み込まれます。
 8 
INDICATORS 句によって、レコード域の先頭からのバイトが RESPONSE-INDICS にコピーされます。
 9 
F5 が押されている場合、プログラム呼び出しを処理します。
図 137. COPY ステートメントを使用して WORKING-STORAGE 内で定義される別個の標識域中の標識を使用するプログラムの例 - DDS
 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
      A* DISPLAY FILE FOR INDICATOR EXAMPLES - INDICATORS IN SI AREA
      A* DSPFILE
      A                                      INDARA  1 
      A          R FORMAT1                   CF01(99 'END OF PROGRAM')
      A                                      CF05(51 'DAILY REPORT')
      A                                      CF09(52 'MONTHLY REPORT')
      A*
      A                                 10 10'DEPARTMENT NUMBER:'
      A            DEPTNO         5   I 10 32
      A     01                          20 26'PRODUCE MONTHLY REPORTS'
      A                                      DSPATR(BL)
      A*
      A                                 24 01'F5 = DAILY REPORT'
      A                                 24 26'F9 = MONTHLY REPORT'
      A                                 24 53'F1 = TERMINATE'
      A          R ERRFMT
      A     98                           6  5'INPUT-OUTPUT ERROR'
 1 
INDARA キーワードが指定されています。 標識はレコード域ではなく、別個の標識域に保管されます。 この指定以外については、このファイルの DDS は 図 134 に示されているものと同じです。
図 138. 別個の標識域の中の標識を使用する COBOL のリスト
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 15:01:36        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
     1     000100 IDENTIFICATION DIVISION.
     2     000200 PROGRAM-ID.     INDIC3.
           000300*    SAMPLE PROGRAM - FILE WITH SEPERATE INDICATORS AREA
           000400
     3     000500 ENVIRONMENT DIVISION.
     4     000600   CONFIGURATION SECTION.
     5     000700 SOURCE-COMPUTER. IBM-ISERIES
     6     000800 OBJECT-COMPUTER. IBM-ISERIES
     7     000900   INPUT-OUTPUT SECTION.
     8     001000   FILE-CONTROL.
     9     001100     SELECT DISPFILE
    10     001200         ASSIGN TO WORKSTATION-DSPFILE-SI   1 
    11     001300       ORGANIZATION IS TRANSACTION
    12     001400         ACCESS IS SEQUENTIAL.
           001500
    13     001600 DATA DIVISION.
    14     001700 FILE SECTION.
    15     001800 FD  DISPFILE.
    16     001900 01  DISP-REC.
           002000     COPY DDS-ALL-FORMATS OF DSPFILE.   2 
    17    +000001       05  DSPFILE-RECORD PIC X(5).                                           <-ALL-FMTS
          +000002*  INPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    18    +000004       05  FORMAT1-I     REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
    19    +000005           06 DEPTNO                PIC X(5).                                 <-ALL-FMTS
          +000006* OUTPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000007*                                                                             <-ALL-FMTS
          +000008*      05  FORMAT1-O     REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
          +000009*  INPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000010*                                                                             <-ALL-FMTS
          +000011*      05  ERRFMT-I      REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
          +000012* OUTPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000013*                                                                             <-ALL-FMTS
          +000014*      05  ERRFMT-O      REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
           002100
    20     002200 WORKING-STORAGE SECTION.
    21     002300 01  CURRENT-DATE.
    22     002400    05  CURR-YEAR                  PIC 9(2).
    23     002500    05  CURR-MONTH                 PIC 9(2).
    24     002600    05  CURR-DAY                   PIC 9(2).
           002700
    25     002800    77 IND-OFF                     PIC 1 VALUE B"0".
    26     002900    77 IND-ON                      PIC 1 VALUE B"1".
           003000
    27     003100 01  DISPFILE-INDICS.
           003200     COPY DDS-ALL-FORMATS-INDIC OF DSPFILE.   3 
    28    +000001       05  DSPFILE-RECORD.                                                    <-ALL-FMTS
          +000002*  INPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    29    +000004           06 FORMAT1-I-INDIC.                                                <-ALL-FMTS
    30    +000005                07 IN51             PIC 1  INDIC 51.   4                      <-ALL-FMTS
          +000006*                          DAILY REPORT                                       <-ALL-FMTS
    31    +000007                07 IN52             PIC 1  INDIC 52.                          <-ALL-FMTS
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC1          ISERIES1   06/02/15 15:01:36        ページ    3
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
          +000008*                          MONTHLY REPORT                                     <-ALL-FMTS
    32    +000009                07 IN99             PIC 1  INDIC 99.                          <-ALL-FMTS
          +000010*                          END OF PROGRAM                                     <-ALL-FMTS
          +000011* OUTPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000012*                                                                             <-ALL-FMTS
    33    +000013           06 FORMAT1-O-INDIC.                                                <-ALL-FMTS
    34    +000014                07 IN01             PIC 1  INDIC 01.                          <-ALL-FMTS
          +000015*  INPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000016*                                                                             <-ALL-FMTS
          +000017*          06 ERRFMT-I-INDIC.                                                 <-ALL-FMTS
          +000018* OUTPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000019*                                                                             <-ALL-FMTS
    35    +000020           06 ERRFMT-O-INDIC.                                                 <-ALL-FMTS
    36    +000021                07 IN98             PIC 1  INDIC 98.                          <-ALL-FMTS
           003300
    37     003400 PROCEDURE DIVISION.
    38     003500 DECLARATIVES.
           003600 DISPLAY-ERR-SECTION SECTION.
           003700     USE AFTER STANDARD EXCEPTION PROCEDURE ON DISPFILE.
           003800 DISPLAY-ERR-PARAGRAPH.
    39     003900     MOVE IND-ON TO IN98 IN ERRFMT-O-INDIC
    40     004000     WRITE DISP-REC FORMAT IS "ERRFMT"
           004100                    INDICATORS ARE ERRFMT-O-INDIC
           004200     END-WRITE
    41     004300     CLOSE DISPFILE.
    42     004400     STOP RUN.
           004500 END DECLARATIVES.
           004600
           004700 MAIN-PROGRAM SECTION.
           004800 MAINLINE.
           004900
    43     005000     OPEN I-O DISPFILE.
    44     005100     ACCEPT CURRENT-DATE FROM DATE.
    45     005200     MOVE IND-OFF TO IN99 IN FORMAT1-I-INDIC.
    46     005300     PERFORM UNTIL IN99 IN FORMAT1-I-INDIC = IND-ON
           005400
    47     005500         MOVE ZEROS TO FORMAT1-O-INDIC
    48     005600         IF CURR-DAY = 01 THEN
    49     005700            MOVE IND-ON TO IN01 IN FORMAT1-O-INDIC   5 
           005800         END-IF
    50     005900         WRITE DISP-REC FORMAT IS "FORMAT1"
           006000                        INDICATORS ARE FORMAT1-O-INDIC   6 
           006100         END-WRITE
           006200
    51     006300         MOVE ZEROS TO FORMAT1-I-INDIC
    52     006400         READ DISPFILE FORMAT IS "FORMAT1"
           006500                       INDICATORS ARE FORMAT1-I-INDIC   7 
           006600         END-READ
    53     006700         IF IN51 IN FORMAT1-I-INDIC = IND-ON THEN
    54     006800             CALL "DAILY" USING DEPTNO
           006900         ELSE
    55     007000             IF IN52 IN FORMAT1-I-INDIC = IND-ON THEN
    56     007100                 CALL "MONTHLY" USING DEPTNO   8 
           007200             END-IF
           007300         END-IF
           007400
           007500     END-PERFORM
    57     007600     CLOSE DISPFILE.
    58     007700     STOP RUN.
           007800
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *
 1 
別個の標識域属性 SI は、ASSIGN 文節の中に指定します。
 2 
形式 2 の COPY ステートメントは、データ・フィールドのみのレコード域の中にデータ記述を生成します。 そのファイルに対して別個の標識域が指定されているので、標識のデータ記述項目は生成されません。
 3 
INDICATOR 属性 INDIC が指定されている形式 2 の COPY ステートメントにより、 ファイルのレコード様式の DDS 内で使用されるすべての標識のデータ記述項目を WORKING-STORAGE SECTION の中で定義します。
 4 
ファイルに別個の標識域があるので、データ記述項目内で使われている標識番号は、文書としては扱われません。
 5 
FORMAT1 のための別個の標識域の IN01 は、月の最初の日である場合に、オンに設定されます。
 6 
標識値をワークステーションのディスプレイ装置へ送るため、INDICATORS 句が必要です。
 7 
標識値をワークステーションのディスプレイ装置から受け取るため、INDICATORS 句が必要です。 F5 キーを押した場合、IN51 がオンに設定されます。
 8 
IN51 がオンに設定されている場合、プログラム呼び出しが処理されます。
図 139. WORKING-STORAGE の表で定義され、個別の標識域の標識を使用するプログラムの例
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC4          ISERIES1   06/02/15 15:02:22        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
     1     000100 IDENTIFICATION DIVISION.
     2     000200 PROGRAM-ID.     INDIC4.
           000300*    SAMPLE PROGRAM
           000400*    FILE WITH SEPERATE INDICATORS AREA IN WORKING STORAGE
           000500
     3     000600 ENVIRONMENT DIVISION.
     4     000700 CONFIGURATION SECTION.
     5     000800 SOURCE-COMPUTER. IBM-ISERIES
     6     000900 OBJECT-COMPUTER. IBM-ISERIES
     7     001000 INPUT-OUTPUT SECTION.
     8     001100 FILE-CONTROL.
     9     001200     SELECT DISPFILE
    10     001300         ASSIGN TO WORKSTATION-DSPFILE-SI   1 
    11     001400         ORGANIZATION IS TRANSACTION
    12     001500         ACCESS IS SEQUENTIAL.
           001600
    13     001700 DATA DIVISION.
    14     001800 FILE SECTION.
    15     001900 FD  DISPFILE.
    16     002000 01  DISP-REC.
           002100     COPY DDS-ALL-FORMATS OF DSPFILE.   2 
    17    +000001       05  DSPFILE-RECORD PIC X(5).                                           <-ALL-FMTS
          +000002*  INPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    18    +000004       05  FORMAT1-I     REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
    19    +000005           06 DEPTNO                PIC X(5).                                 <-ALL-FMTS
          +000006* OUTPUT FORMAT:FORMAT1    FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000007*                                                                             <-ALL-FMTS
          +000008*      05  FORMAT1-O     REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
          +000009*  INPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000010*                                                                             <-ALL-FMTS
          +000011*      05  ERRFMT-I      REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
          +000012* OUTPUT FORMAT:ERRFMT     FROM FILE DSPFILE    OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000013*                                                                             <-ALL-FMTS
          +000014*      05  ERRFMT-O      REDEFINES DSPFILE-RECORD.                            <-ALL-FMTS
           002200
    20     002300 WORKING-STORAGE SECTION.
    21     002400 01  CURRENT-DATE.
    22     002500    05  CURR-YEAR                  PIC 9(2).
    23     002600    05  CURR-MONTH                 PIC 9(2).
    24     002700    05  CURR-DAY                   PIC 9(2).
           002800
    25     002900 01  INDIC-AREA.
    26     003000    05 INDIC-TABLE  OCCURS 99      PIC 1    INDICATOR 1.   3 
    27     003100      88  IND-OFF                           VALUE B"0".
    28     003200      88  IND-ON                            VALUE B"1".
           003300
    29     003400 01  DISPFILE-INDIC-USAGE.
    30     003500    05  IND-NEW-MONTH              PIC 9(2) VALUE 01.
    31     003600    05  IND-DAILY                  PIC 9(2) VALUE 51.   4 
    32     003700    05  IND-MONTHLY                PIC 9(2) VALUE 52.
    33     003800    05  IND-IO-ERROR               PIC 9(2) VALUE 98.
    34     003900    05  IND-EOJ                    PIC 9(2) VALUE 99.
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/INDIC4          ISERIES1   06/02/15 15:02:22        ページ    3
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
           004000
    35     004100 PROCEDURE DIVISION.
    36     004200 DECLARATIVES.
           004300 DISPLAY-ERR-SECTION SECTION.
           004400     USE AFTER STANDARD EXCEPTION PROCEDURE ON DISPFILE.
           004500 DISPLAY-ERR-PARAGRAPH.
    37     004600     SET IND-ON (IND-IO-ERROR) TO TRUE
    38     004700     WRITE DISP-REC FORMAT IS "ERRFMT"
           004800                    INDICATORS ARE INDIC-TABLE
           004900     END-WRITE
    39     005000     CLOSE DISPFILE.
    40     005100     STOP RUN.
           005200 END DECLARATIVES.
           005300
           005400 MAIN-PROGRAM SECTION.
           005500 MAINLINE.
    41     005600     OPEN I-O DISPFILE.
    42     005700     ACCEPT CURRENT-DATE FROM DATE.
    43     005800     SET IND-OFF (IND-EOJ) TO TRUE.
    44     005900     PERFORM UNTIL IND-ON (IND-EOJ)
           006000
    45     006100         MOVE ZEROS TO INDIC-AREA
    46     006200         IF CURR-DAY = 01 THEN
    47     006300            SET IND-ON (IND-NEW-MONTH) TO TRUE   5 
           006400         END-IF
    48     006500         WRITE DISP-REC FORMAT IS "FORMAT1"
           006600                        INDICATORS ARE INDIC-TABLE   6 
           006700         END-WRITE
           006800
    49     006900         READ DISPFILE FORMAT IS "FORMAT1"
           007000                        INDICATORS ARE INDIC-TABLE   7 
           007100         END-READ
    50     007200         IF IND-ON (IND-DAILY) THEN
    51     007300             CALL "DAILY" USING DEPTNO   8 
           007400         ELSE
    52     007500             IF IND-ON (IND-MONTHLY) THEN
    53     007600                 CALL "MONTHLY" USING DEPTNO
           007700             END-IF
           007800         END-IF
           007900
           008000     END-PERFORM
    54     008100     CLOSE DISPFILE.
    55     008200     STOP RUN.
           008300
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *
 1 
別個の標識域属性 SI は、ASSIGN 文節の中に指定します。
 2 
形式 2 の COPY ステートメントは、データ・フィールドについてのみレコード域の中にフィールドを生成します。
 3 
99 個のブール・データ項目の表を、WORKING-STORAGE SECTION の中に定義します。 このデータ記述項目に対する INDICATOR 文節によって、これらのデータ項目がそれぞれ標識 1 〜 99 に関連付けられます。 このような表を使うことによって、個々の標識に対する複数の従属項目をもつグループ項目を使うより、パフォーマンスが向上する場合があります。
 4 
標識の表を参照するために使う添え字に意味のある名前を与えるために、WORKING-STORAGE SECTION に一連のデータ項目が定義されています。 このようなデータ項目を使うことは必要ではありません。
 5 
FORMAT1 のための別個の標識域の INDIC-TABLE (01) は、月の最初の日である場合に、オンに設定されます。
 6 
標識値をワークステーションのディスプレイ装置へ送るため、INDICATOR 句が必要です。
 7 
標識値をワークステーションのディスプレイ装置から受け取るため、INDICATOR 句が必要です。 F5 キーが押された場合、INDIC-TABLE (51) はオンに設定されます。
 8 
INDIC-TABLE (51) がオンに設定されている場合、プログラム DAILY が呼び出されます。