図 104 は、現在の売上と年間の売上のソート・ファイルを作成する方法を示すものです。
まず、現在の売上に関する SORT ステートメントが実行されます。 このソート操作に関する入力プロシージャーは SCREEN-DEPT です。 レコードは、部門については昇順でソートされ、各部門の純売上 (SALES) については降順でソートされます。 次に、このソートに関する出力が印刷されます。
ソート操作が完了すると、現在の売上 (CURRENT-SALES) のレコードと年間の売上 (YTD-SALES) のレコードがマージされます。 このファイルのレコードは、部門番号については昇順、各部門の従業員番号については昇順、 月 (MONTH) については昇順にマージされ、更新された年間基本マスター・ファイルを作成します。
マージ処理が終了すると、更新された年間マスター・ファイルを印刷します。
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SORTMERG ISERIES1 06/02/15 13:56:03 ページ 2
ソ ー ス
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
1 000100 IDENTIFICATION DIVISION.
2 000200 PROGRAM-ID. SORTMERGE.
000300*********************************************************
000400* THIS IS A SORT/MERGE EXAMPLE USING AN INPUT PROCEDURE *
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 WORK-FILE
10 001300 ASSIGN TO DISK-WRK.
11 001400 SELECT CURRENT-SALES-FILE-IN
12 001500 ASSIGN TO DISK-CURRIN.
13 001600 SELECT CURRENT-SALES-FILE-OUT
14 001700 ASSIGN TO DISK-CURROUT.
15 001800 SELECT YTD-SALES-FILE-IN
16 001900 ASSIGN TO DISK-YTDIN.
17 002000 SELECT YTD-SALES-FILE-OUT
18 002100 ASSIGN TO DISK-YTDOUT.
19 002200 SELECT PRINTER-OUT
20 002300 ASSIGN TO PRINTER-PRTSUMM.
002400
21 002500 DATA DIVISION.
22 002600 FILE SECTION.
23 002700 SD WORK-FILE.
24 002800 01 SALES-RECORD.
25 002900 05 EMPL-NO PIC 9(6).
26 003000 05 DEPT PIC 9(2).
27 003100 05 SALES PIC 9(7)V99.
28 003200 05 NAME-ADDR PIC X(61).
29 003300 05 MONTH PIC X(2).
30 003400 FD CURRENT-SALES-FILE-IN.
31 003500 01 CURRENT-SALES-IN.
32 003600 05 EMPL-NO PIC 9(6).
33 003700 05 DEPT PIC 9(2).
34 003800 88 ON-SITE-EMPLOYEE VALUES 0 THRU 6, 8.
35 003900 05 SALES PIC 9(7)V99.
36 004000 05 NAME-ADDR PIC X(61).
37 004100 05 MONTH PIC X(2).
38 004200 FD CURRENT-SALES-FILE-OUT.
39 004300 01 CURRENT-SALES-OUT.
40 004400 05 EMPL-NO PIC 9(6).
41 004500 05 DEPT PIC 9(2).
42 004600 05 SALES PIC 9(7)V99.
43 004700 05 NAME-ADDR PIC X(61).
44 004800 05 MONTH PIC X(2).
45 004900 FD YTD-SALES-FILE-IN.
46 005000 01 YTD-SALES-IN.
47 005100 05 EMPL-NO PIC 9(6).
48 005200 05 DEPT PIC 9(2).
49 005300 05 SALES PIC 9(7)V99.
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SORTMERG ISERIES1 06/02/15 13:56:03 ページ 3
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
50 005400 05 NAME-ADDR PIC X(61).
51 005500 05 MONTH PIC X(2).
52 005600 FD YTD-SALES-FILE-OUT.
53 005700 01 YTD-SALES-OUT.
54 005800 05 EMPL-NO PIC 9(6).
55 005900 05 DEPT PIC 9(2).
56 006000 05 SALES PIC 9(7)V99.
57 006100 05 NAME-ADDR PIC X(61).
58 006200 05 MONTH PIC X(2).
59 006300 FD PRINTER-OUT.
60 006400 01 PRINT-LINE.
61 006500 05 RECORD-LABEL PIC X(25).
62 006600 05 DISK-RECORD-DISPLAY PIC X(80).
006700
63 006800 WORKING-STORAGE SECTION.
64 006900 01 SALES-FILE-IN-EOF-STATUS PIC X VALUE "F".
65 007000 88 SALES-FILE-IN-END-OF-FILE VALUE "T".
66 007100 01 SALES-FILE-OUT-EOF-STATUS PIC X VALUE "F".
67 007200 88 SALES-FILE-OUT-END-OF-FILE VALUE "T".
68 007300 01 YTD-SALES-OUT-EOF-STATUS PIC X VALUE "F".
69 007400 88 YTD-SALES-OUT-END-OF-FILE VALUE "T".
007500
70 007600 PROCEDURE DIVISION.
007700 MAIN-PROGRAM SECTION.
007800 MAINLINE.
007900
71 008000 OPEN INPUT CURRENT-SALES-FILE-IN
008100 CURRENT-SALES-FILE-OUT
008200 YTD-SALES-FILE-OUT
008300 OUTPUT PRINTER-OUT.
008400*
008500* 現在の売上をソート
008600*
72 008700 SORT WORK-FILE
008800 ON ASCENDING KEY DEPT OF SALES-RECORD
008900 ON DESCENDING KEY SALES OF SALES-RECORD
009000 INPUT PROCEDURE SCREEN-DEPT
009100 GIVING CURRENT-SALES-FILE-OUT.
73 009200 READ CURRENT-SALES-FILE-OUT
74 009300 AT END SET SALES-FILE-OUT-END-OF-FILE TO TRUE
009400 END-READ.
75 009500 PERFORM UNTIL SALES-FILE-OUT-END-OF-FILE
76 009600 MOVE "SORTED CURRENT SALES "
009700 TO RECORD-LABEL OF PRINT-LINE
77 009800 MOVE CURRENT-SALES-OUT TO DISK-RECORD-DISPLAY
78 009900 WRITE PRINT-LINE
79 010000 READ CURRENT-SALES-FILE-OUT
80 010100 AT END SET SALES-FILE-OUT-END-OF-FILE TO TRUE
010200 END-READ
010300 END-PERFORM.
010400*
010500* 年次報告書を更新
010600*
81 010700 MERGE WORK-FILE
010800 ON ASCENDING KEY DEPT OF SALES-RECORD
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SORTMERG ISERIES1 06/02/15 13:56:03 ページ 4
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
010900 ON ASCENDING KEY EMPL-NO OF SALES-RECORD
011000 ON ASCENDING KEY MONTH OF SALES-RECORD
011100 USING YTD-SALES-FILE-IN
011200 CURRENT-SALES-FILE-IN
011300 GIVING YTD-SALES-FILE-OUT.
011400*
011500* 年次報告書を印刷
011600*
82 011700 READ YTD-SALES-FILE-OUT
83 011800 AT END SET YTD-SALES-OUT-END-OF-FILE TO TRUE
011900 END-READ.
84 012000 PERFORM UNTIL YTD-SALES-OUT-END-OF-FILE
85 012100 MOVE "MERGED YTD SALES ",
012200 TO RECORD-LABEL OF PRINT-LINE
86 012300 MOVE YTD-SALES-OUT TO DISK-RECORD-DISPLAY
87 012400 WRITE PRINT-LINE
88 012500 READ YTD-SALES-FILE-OUT
89 012600 AT END SET YTD-SALES-OUT-END-OF-FILE TO TRUE
012700 END-READ
012800 END-PERFORM.
012900
90 013000 CLOSE CURRENT-SALES-FILE-IN
013100 CURRENT-SALES-FILE-OUT
013200 YTD-SALES-FILE-OUT
013300 PRINTER-OUT.
91 013400 STOP RUN.
013500
013600 SCREEN-DEPT SECTION.
013700 SCREEN-DEPT-PROCEDURE.
013800
92 013900 READ CURRENT-SALES-FILE-IN
93 014000 AT END SET SALES-FILE-IN-END-OF-FILE TO TRUE
014100 END-READ.
94 014200 PERFORM UNTIL SALES-FILE-IN-END-OF-FILE
95 014300 MOVE "UNSORTED CURRENT SALES ",
014400 TO RECORD-LABEL OF PRINT-LINE
96 014500 MOVE CURRENT-SALES-IN TO DISK-RECORD-DISPLAY
97 014600 WRITE PRINT-LINE
98 014700 IF ON-SITE-EMPLOYEE
99 014800 MOVE CURRENT-SALES-IN TO SALES-RECORD
100 014900 RELEASE SALES-RECORD
015000 END-IF
101 015100 READ CURRENT-SALES-FILE-IN
102 015200 AT END SET SALES-FILE-IN-END-OF-FILE TO TRUE
015300 END-READ
015400 END-PERFORM.
015500
* * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.