Files
cobol-java-v3/test-data/cobol/HINA001.cbl

85 lines
2.9 KiB
COBOL

* 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.