* HINA001 - 1:1 マッチング >>SOURCE FORMAT IS FREE * 2入力ファイル(R01/R02)をキー一致でマージ * 期待: 2ファイル, 3 IF, 6 分岐, ~5 段落 IDENTIFICATION DIVISION. PROGRAM-ID. HINA001. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT R01-FILE ASSIGN TO "R01.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT R02-FILE ASSIGN TO "R02.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT W01-FILE ASSIGN TO "W01.DAT" ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD R01-FILE. 01 R01-REC PIC X(30). FD R02-FILE. 01 R02-REC PIC X(30). FD W01-FILE. 01 W01-REC PIC X(60). WORKING-STORAGE SECTION. 01 WS-R01-KEY PIC X(10). 01 WS-R02-KEY PIC X(10). 01 WS-R01-DATA PIC X(20). 01 WS-R02-DATA PIC X(20). 01 WS-EOF1 PIC X VALUE 'N'. 88 R01-EOF VALUE 'Y'. 01 WS-EOF2 PIC X VALUE 'N'. 88 R02-EOF VALUE 'Y'. PROCEDURE DIVISION. 0000-MAIN. OPEN INPUT R01-FILE R02-FILE. OPEN OUTPUT W01-FILE. PERFORM 1000-READ-R01. PERFORM 2000-READ-R02. PERFORM 3000-MATCH UNTIL R01-EOF AND R02-EOF. CLOSE R01-FILE R02-FILE W01-FILE. STOP RUN. 1000-READ-R01. READ R01-FILE INTO R01-REC AT END MOVE 'Y' TO WS-EOF1 NOT AT END PERFORM 1100-PARSE-R01. 1100-PARSE-R01. MOVE R01-REC(1:10) TO WS-R01-KEY. MOVE R01-REC(11:20) TO WS-R01-DATA. 2000-READ-R02. READ R02-FILE INTO R02-REC AT END MOVE 'Y' TO WS-EOF2 NOT AT END PERFORM 2100-PARSE-R02. 2100-PARSE-R02. MOVE R02-REC(1:10) TO WS-R02-KEY. MOVE R02-REC(11:20) TO WS-R02-DATA. 3000-MATCH. IF R01-EOF THEN PERFORM 4000-WRITE-R02-ONLY PERFORM 2000-READ-R02 ELSE IF R02-EOF THEN PERFORM 5000-WRITE-R01-ONLY PERFORM 1000-READ-R01 ELSE IF WS-R01-KEY < WS-R02-KEY THEN PERFORM 5000-WRITE-R01-ONLY PERFORM 1000-READ-R01 ELSE IF WS-R01-KEY > WS-R02-KEY THEN PERFORM 4000-WRITE-R02-ONLY PERFORM 2000-READ-R02 ELSE PERFORM 6000-WRITE-MATCH PERFORM 1000-READ-R01 PERFORM 2000-READ-R02. 4000-WRITE-R02-ONLY. STRING WS-R02-KEY WS-R02-DATA DELIMITED BY SIZE INTO W01-REC. WRITE W01-REC. 5000-WRITE-R01-ONLY. STRING WS-R01-KEY WS-R01-DATA DELIMITED BY SIZE INTO W01-REC. WRITE W01-REC. 6000-WRITE-MATCH. STRING WS-R01-KEY WS-R01-DATA WS-R02-DATA DELIMITED BY SIZE INTO W01-REC. WRITE W01-REC.