ILE COBOL Programmer's Guide
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:
- Skip to line 1 of the next page before format HEADING is printed.
- 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 ]
(C) Copyright IBM Corporation 1992, 2005. All Rights Reserved.