ILE COBOL Programmer's Guide

Example of Using FORMATFILE Files in an ILE COBOL Program

This program prints detailed employee records for all male employees from a personnel file. The input records are arranged in ascending order of employee number. Both the input file and output file are externally described.

Figure 114. Example of using FORMATFILE files in an ILE COBOL program -- Physical file DDS


 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
      A* PHYSICAL FILE DDS FOR PERSONNEL FILE IN FORMATFILE EXAMPLE
      A
      A                                      UNIQUE
      A          R PERSREC
      A            EMPLNO         6S
      A            NAME          30
      A            ADDRESS1      35
      A            ADDRESS2      20
      A            BIRTHDATE      6
      A            MARSTAT        1
      A            SPOUSENAME    30
      A            NUMCHILD       2S
      A          K EMPLNO

Figure 115. Example of Using FORMATFILE Files in an ILE COBOL Program -- Printer File DDS


 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
      A* PRINTER FILE DDS FOR FORMATFILE EXAMPLE
      A*
      A                                   (1)INDARA REF(PERSFILE)
      A          R HEADING(2)                SKIPB(1) SPACE(3) (3)
      A                                    15'PERSONNEL LISTING'
      A                                      UNDERLINE
      A                                    33'- ORDERED BY'
      A            ORDERTYPE     15        46
      A                                    80DATE EDTCDE(Y)
      A                                    93TIME  (4)
      A                                   115'PAGE:'
      A                                    +1PAGNBR EDTCDE(3)
      A*
      A          R DETAIL(5)                 SPACEA(3)(6)
      A*    LINE 1
      A                                     1'NAME:'
      A            NAME      R             11UNDERLINE
      A                                    55'EMPLOYEE NUMBER:'
      A            EMPLNO    R             73
      A                                    87'DATE OF BIRTH:'
      A            BIRTHDATE R            103SPACEA(1)(7)
      A*    LINE 2
      A                                     1'ADDRESS:'
      A            ADDRESS1  R             11
      A                                    55'MARITAL STATUS:'
      A            MARSTAT   R             73
      A  01                                87'SPOUSE''S NAME:'
      A  01 (8)    SPOUSENAMER            103
      A*    LINE 3
      A            ADDRESS2  R             11SPACEB(1)
      A                                    55'CHILDREN:'
      A            NUMCHILD  R             73EDTCDE(3)(9)

(1)
INDARA specifies that a separate indicator area is to be used for the file.

(2)
HEADING is the format name that provides headings for each page.

(3)
SKIPB(1) and SPACEA(3) are used to:
  1. Skip to line 1 of the next page before format HEADING is printed.
  2. Leave 3 blank lines after format HEADING is printed.

(4)
DATE, TIME, and PAGNBR are used to have the current date, time and page number printed automatically when format HEADING is printed.

(5)
DETAIL is the format name used to print the detail line for each employee in the personnel file.

(6)
SPACEA(3) causes three lines to be left blank after each employee detail line.

(7)
SPACEA(1) causes a blank line to be printed after the field BIRTHDATE is printed. As a result, subsequent fields in the same format are printed on a new line.

(8)
01 means that these fields are printed only if the ILE COBOL program turns indicator 01 on and passes it when format DETAIL is printed.

(9)
EDTCDE(3) is used to remove leading zeros when printing this numeric field.

Figure 116. Example of Using FORMATFILE Files in an ILE COBOL Program


 5722WDS V5R3M0  030905 LN  IBM                  CBLGUIDE/FRMTFILE      ISERIES1   03/09/15 14:35:57        Page      2
                                     S o u r c e
  STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S COPYNAME   CHG DATE
     1     000100 IDENTIFICATION DIVISION.
     2     000200 PROGRAM-ID.     FRMTFILE.
           000300
     3     000400 ENVIRONMENT DIVISION.
     4     000500 CONFIGURATION SECTION.
     5     000600 SOURCE-COMPUTER. IBM-ISERIES
     6     000700 OBJECT-COMPUTER. IBM-ISERIES
     7     000800 INPUT-OUTPUT SECTION.
     8     000900 FILE-CONTROL.
     9     001000     SELECT PERSREPT ASSIGN TO FORMATFILE-PERSREPT-SI  (1)
    11     001100         ORGANIZATION IS SEQUENTIAL.
    12     001200     SELECT PERSFILE ASSIGN TO DATABASE-PERSFILE
    14     001300         ORGANIZATION IS INDEXED
    15     001400         ACCESS MODE IS SEQUENTIAL
    16     001500         RECORD IS EXTERNALLY-DESCRIBED-KEY.
           001600
    17     001700 DATA DIVISION.
    18     001800 FILE SECTION.
    19     001900 FD  PERSREPT.
    20     002000 01  PERSREPT-REC.
           002100     COPY DDS-ALL-FORMATS-O OF PERSREPT.  (2)
    21    +000001       05  PERSREPT-RECORD PIC X(130).                                        <-ALL-FMTS
          +000002* OUTPUT FORMAT:HEADING    FROM FILE PERSREPT   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
    22    +000004       05  HEADING-O     REDEFINES PERSREPT-RECORD.                           <-ALL-FMTS
    23    +000005           06 ORDERTYPE             PIC X(15).                                <-ALL-FMTS
          +000006* OUTPUT FORMAT:DETAIL     FROM FILE PERSREPT   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000007*                                                                             <-ALL-FMTS
    24    +000008       05  DETAIL-O      REDEFINES PERSREPT-RECORD.  (3)                       <-ALL-FMTS
    25    +000009           06 NAME                  PIC X(30).                                <-ALL-FMTS
    26    +000010           06 EMPLNO                PIC S9(6).                                <-ALL-FMTS
    27    +000011           06 BIRTHDATE             PIC X(6).                                 <-ALL-FMTS
    28    +000012           06 ADDRESS1              PIC X(35).                                <-ALL-FMTS
    29    +000013           06 MARSTAT               PIC X(1).                                 <-ALL-FMTS
    30    +000014           06 SPOUSENAME            PIC X(30).                                <-ALL-FMTS
    31    +000015           06 ADDRESS2              PIC X(20).                                <-ALL-FMTS
    32    +000016           06 NUMCHILD              PIC S9(2).                                <-ALL-FMTS
    33     002200 FD  PERSFILE.
    34     002300 01  PERSFILE-REC.
           002400     COPY DDS-ALL-FORMATS-O OF PERSFILE.
    35    +000001       05  PERSFILE-RECORD PIC X(130).                                        <-ALL-FMTS
          +000002*    I-O FORMAT:PERSREC    FROM FILE PERSFILE   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
          +000004*THE KEY DEFINITIONS FOR RECORD FORMAT  PERSREC                               <-ALL-FMTS
          +000005*  NUMBER               NAME                RETRIEVAL       ALTSEQ            <-ALL-FMTS
          +000006*   0001   EMPLNO                           ASCENDING         NO              <-ALL-FMTS
    36    +000007       05  PERSREC       REDEFINES PERSFILE-RECORD.                           <-ALL-FMTS
    37    +000008           06 EMPLNO                PIC S9(6).                                <-ALL-FMTS
    38    +000009           06 NAME                  PIC X(30).                                <-ALL-FMTS
    39    +000010           06 ADDRESS1              PIC X(35).                                <-ALL-FMTS
    40    +000011           06 ADDRESS2              PIC X(20).                                <-ALL-FMTS
    41    +000012           06 BIRTHDATE             PIC X(6).                                 <-ALL-FMTS
    42    +000013           06 MARSTAT               PIC X(1).                                 <-ALL-FMTS
 5722WDS V5R3M0  030905 LN  IBM                           CBLGUIDE/FRMTFILE        ISERIES1   03/09/15 14:35:57        Page      3
  STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S COPYNAME   CHG DATE
    43    +000014           06 SPOUSENAME            PIC X(30).                                <-ALL-FMTS
    44    +000015           06 NUMCHILD              PIC S9(2).                                <-ALL-FMTS
           002500
    45     002600 WORKING-STORAGE SECTION.
    46     002700 77  HEAD-ORDER                    PIC X(15)
           002800                                    VALUE "EMPLOYEE NUMBER".
    47     002900 01  PERSREPT-INDICS.
           003000     COPY DDS-ALL-FORMATS-O-INDIC OF PERSREPT.  (4)
    48    +000001       05  PERSREPT-RECORD.                                                   <-ALL-FMTS
          +000002* OUTPUT FORMAT:HEADING    FROM FILE PERSREPT   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000003*                                                                             <-ALL-FMTS
          +000004*          06 HEADING-O-INDIC.                                                <-ALL-FMTS
          +000005* OUTPUT FORMAT:DETAIL     FROM FILE PERSREPT   OF LIBRARY CBLGUIDE           <-ALL-FMTS
          +000006*                                                                             <-ALL-FMTS
    49    +000007           06 DETAIL-O-INDIC.                                                 <-ALL-FMTS
    50    +000008                07 IN01             PIC 1  INDIC 01.                          <-ALL-FMTS
           003100
    51     003200 77  EOF-FLAG                      PIC X(1)
           003300                                    VALUE "0".
    52     003400    88  NOT-END-OF-FILE             VALUE "0".
    53     003500    88  END-OF-FILE                 VALUE "1".
    54     003600 77  MARRIED                       PIC X(1)
           003700                                    VALUE "M".
           003800
    55     003900 PROCEDURE DIVISION.
           004000 MAIN-PROGRAM SECTION.
           004100 MAINLINE.
    56     004200     OPEN INPUT PERSFILE
           004300          OUTPUT PERSREPT.
    57     004400     PERFORM HEADING-LINE.
    58     004500     PERFORM UNTIL END-OF-FILE
    59     004600         READ PERSFILE
    60     004700             AT END SET END-OF-FILE TO TRUE
    61     004800             NOT AT END PERFORM PRINT-RECORD  (5)
           004900         END-READ
           005000     END-PERFORM
    62     005100     CLOSE PERSFILE
           005200           PERSREPT.
    63     005300     STOP RUN.
           005400
           005500 PRINT-RECORD.
    64     005600     MOVE CORR PERSREC TO DETAIL-O.  (6)
                 *** CORRESPONDING items for statement 64:
                 ***     EMPLNO
                 ***     NAME
                 ***     ADDRESS1
                 ***     ADDRESS2
                 ***     BIRTHDATE
                 ***     MARSTAT
                 ***     SPOUSENAME
                 ***     NUMCHILD
                 *** End of CORRESPONDING items for statement 64
    65     005700     IF MARSTAT IN PERSFILE-REC IS EQUAL MARRIED THEN  (7)
    66     005800         MOVE B"1" TO IN01 IN DETAIL-O-INDIC
           005900     ELSE
    67     006000         MOVE B"0" TO IN01 IN DETAIL-O-INDIC
           006100     END-IF
    68     006200     WRITE PERSREPT-REC FORMAT IS "DETAIL"  (8)
           006300         INDICATORS ARE DETAIL-O-INDIC
    69     006400         AT EOP PERFORM HEADING-LINE  (9)
           006500     END-WRITE.
           006600
           006700 HEADING-LINE.
    70     006800     MOVE HEAD-ORDER TO ORDERTYPE
    71     006900     WRITE PERSREPT-REC FORMAT IS "HEADING"
           007000     END-WRITE.
           007100
                           * * * * *   E N D   O F   S O U R C E   * * * * *

(1)
The externally described printer file is assigned to device FORMATFILE. SI indicates that a separate indicator area has been specified in the DDS.

(2)
The Format 2 COPY statement is used to copy the fields for the printer file into the program.

(3)
Note that, although the fields in format DETAIL will be printed on three separate lines, they are defined in one record.

(4)
The Format 2 COPY statement is used to copy the indicators used in the printer file into the program.

(5)
Paragraph PROCESS-RECORD processes PRINT-RECORD for each employee record.

(6)
All fields in the employee record are moved to the record for format DETAIL.

(7)
If the employee is married, indicator 01 is turned on; if not, the indicator is turned off, preventing the spouse's name field in DETAIL from being printed.

(8)
Format DETAIL is printed with indicator 01 passed to control printing.

(9)
If the number of lines per page has been exceeded, END-OF-PAGE occurs. The format HEADING is printed on a new page.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]