This program creates a relative file of summary sales records using sequential access. Each record contains a five-year summary of unit and dollar sales for one week of the year; there are 52 records within the file, each representing one week.
Each input record represents the summary sales for one week of one year. The records for the first week of the last five years (in ascending order) are the first five input records. The records for the second week of the last five years are the next five input records, and so on. Thus, five input records fill one output record.
The RELATIVE KEY for the RELATIVE-FILE is not specified because it is not required for sequential access unless the START statement is used. (For updating, however, the key is INPUT-WEEK.)
Figure 124. Example of a Relative File Program
5722WDS V5R3M0 030905 LN IBM ILE COBOL CBLGUIDE/UPDTSEQ ISERIES1 03/09/15 14:48:09 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. CRTREL. 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 RELATIVE-FILE ASSIGN TO DISK-FILED 11 001100 ORGANIZATION IS RELATIVE 12 001200 ACCESS IS SEQUENTIAL 13 001300 FILE STATUS RELATIVE-FILE-STATUS. 14 001400 SELECT INPUT-FILE ASSIGN TO DISK-FILEC 16 001500 ORGANIZATION IS SEQUENTIAL 17 001600 ACCESS IS SEQUENTIAL 18 001700 FILE STATUS INPUT-FILE-STATUS. 001800 19 001900 DATA DIVISION. 20 002000 FILE SECTION. 21 002100 FD RELATIVE-FILE. 22 002200 01 RELATIVE-RECORD-01. 23 002300 05 RELATIVE-RECORD OCCURS 5 TIMES INDEXED BY REL-INDEX. 24 002400 10 RELATIVE-YEAR PICTURE 99. 25 002500 10 RELATIVE-WEEK PICTURE 99. 26 002600 10 RELATIVE-UNIT-SALES PICTURE S9(6). 27 002700 10 RELATIVE-DOLLAR-SALES PICTURE S9(9)V99. 28 002800 FD INPUT-FILE. 29 002900 01 INPUT-RECORD. 30 003000 05 INPUT-YEAR PICTURE 99. 31 003100 05 INPUT-WEEK PICTURE 99. 32 003200 05 INPUT-UNIT-SALES PICTURE S9(6). 33 003300 05 INPUT-DOLLAR-SALES PICTURE S9(9)V99. 003400 34 003500 WORKING-STORAGE SECTION. 35 003600 77 RELATIVE-FILE-STATUS PICTURE XX. 36 003700 77 INPUT-FILE-STATUS PICTURE XX. 37 003800 77 OP-NAME PICTURE X(5). 38 003900 01 WORK-RECORD. 39 004000 05 WORK-YEAR PICTURE 99 VALUE 00. 40 004100 05 WORK-WEEK PICTURE 99. 41 004200 05 WORK-UNIT-SALES PICTURE S9(6). 42 004300 05 WORK-DOLLAR-SALES PICTURE S9(9)V99. 43 004400 01 INPUT-END PICTURE X VALUE SPACE. 44 004500 88 THE-END-OF-INPUT VALUE "E". 004600 45 004700 PROCEDURE DIVISION. 46 004800 DECLARATIVES. 004900 INPUT-ERROR SECTION. 005000 USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE. 005100 INPUT-ERROR-PARA. 47 005200 DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR INPUT-FILE ". 48 005300 DISPLAY "FILE STATUS IS ", INPUT-FILE-STATUS. 5722WDS V5R3M0 030905 LN IBM ILE COBOL CBLGUIDE/CRTREL ISERIES1 03/09/15 14:49:23 Page 3 STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE 49 005400 DISPLAY "PROCESSING ENDED" 50 005500 STOP RUN. 005600 005700 OUTPUT-ERROR SECTION. 005800 USE AFTER STANDARD ERROR PROCEDURE ON RELATIVE-FILE. 005900 OUTPUT-ERROR-PARA. 51 006000 DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR RELATIVE-FILE". 52 006100 DISPLAY "FILE STATUS IS ", RELATIVE-FILE-STATUS. 53 006200 DISPLAY "PROCESSING ENDED" 54 006300 STOP RUN. 006400 END DECLARATIVES. 006500 006600 MAIN-PROGRAM SECTION. 006700 MAINLINE. 55 006800 MOVE "OPEN" TO OP-NAME. 56 006900 OPEN INPUT INPUT-FILE 007000 OUTPUT RELATIVE-FILE. 007100 57 007200 SET REL-INDEX TO 1. 58 007300 MOVE "READ" TO OP-NAME. 59 007400 READ INPUT-FILE 60 007500 AT END SET THE-END-OF-INPUT TO TRUE 007600 END-READ. 007700 61 007800 PERFORM UNTIL THE-END-OF-INPUT 62 007900 MOVE INPUT-RECORD TO RELATIVE-RECORD (REL-INDEX) 63 008000 IF REL-INDEX NOT = 5 64 008100 SET REL-INDEX UP BY 1 008200 ELSE 65 008300 SET REL-INDEX TO 1 66 008400 MOVE "WRITE" TO OP-NAME 67 008500 WRITE RELATIVE-RECORD-01 008600 END-IF 008700 68 008800 MOVE "READ" TO OP-NAME 69 008900 READ INPUT-FILE 70 009000 AT END SET THE-END-OF-INPUT TO TRUE 009100 END-READ 009200 END-PERFORM. 009300 71 009400 CLOSE RELATIVE-FILE 009500 INPUT-FILE. 72 009600 STOP RUN. 009700 * * * * * E N D O F S O U R C E * * * * * |
(C) Copyright IBM Corporation 1992, 2005. All Rights Reserved.