test: add HINA type-specific COBOL test data suite (10 programs, 8/10 pass)
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
* 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.
|
||||
Reference in New Issue
Block a user