このプログラムでは、順次アクセスを使用して販売実績レコードの相対ファイルを作成します。 各レコードには、ある年の週ごとの販売数量と販売高の実績が、5 年間分含まれています。 ファイルには 52 個のレコードが入っており、各レコードはそれぞれ 1 週間を表しています。
各入力レコードは、ある年の週ごとの販売実績を表しています。 最近 5 年間 (昇順) の各年の最初の週のレコードが、最初の 5 つの入力レコードとなり、最近 5 年間の第 2 週のレコードが、 次の 5 つの入力レコードとなり、.... というようになります。 このように、5 つの入力レコードによって 1 つの出力レコードが作り出されます。
RELATIVE-FILE の RELATIVE KEY は指定されていません。 START ステートメントが使用されていない限り、順次アクセスでは必要ないからです。 (しかし更新において、キーは INPUT-WEEK です。)
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/UPDTSEQ ISERIES1 06/02/15 14:48:09 ページ 2
ソ ー ス
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
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 V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/CRTREL ISERIES1 06/02/15 14:49:23 ページ 3
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
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
* * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.