feat: add COBOL statement benchmark plan and 34 P0 sample programs
- docs/cobol-statement-benchmark-plan.md — full coverage matrix and gap analysis - 34 P0 COBOL samples: arithmetic(9), move(5), file(6), control(6), inspect(3), search(2), perform(3) - test-data/validate_statements.py — automatic validation script - Validation: 34/34 samples pass preprocess + extract_structure
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
* ==== TYPE: ST-CALL-CONTENT ====
|
||||
* FEATURE: CALL ... BY CONTENT
|
||||
* STATEMENT: CALL BY CONTENT
|
||||
* BRANCHES: 2, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CALLCN.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-PARAM PIC 9(5) VALUE 100.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
CALL 'SUBPGM' USING BY CONTENT WS-PARAM.
|
||||
IF WS-PARAM = 100
|
||||
DISPLAY 'OK: BY CONTENT'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: BY CONTENT'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,20 @@
|
||||
* ==== TYPE: ST-CALL-VALUE ====
|
||||
* FEATURE: CALL ... BY VALUE with mixed mechanisms
|
||||
* STATEMENT: CALL BY VALUE
|
||||
* BRANCHES: 2, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CALLVL.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-A PIC 9(5) VALUE 10.
|
||||
01 WS-B PIC 9(5) VALUE 20.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
CALL 'SUBPGM' USING
|
||||
BY VALUE WS-A
|
||||
BY REFERENCE WS-B.
|
||||
IF WS-A = 10
|
||||
DISPLAY 'OK: BY VALUE'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: BY VALUE'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,22 @@
|
||||
* ==== TYPE: ST-EVAL-ALSO ====
|
||||
* FEATURE: EVALUATE ALSO (multiple subjects)
|
||||
* STATEMENT: EVALUATE ALSO
|
||||
* BRANCHES: 4, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. EVLALS.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-STATUS PIC X(1) VALUE 'A'.
|
||||
01 WS-TYPE PIC X(1) VALUE 'X'.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
EVALUATE WS-STATUS ALSO WS-TYPE
|
||||
WHEN 'A' ALSO 'X'
|
||||
DISPLAY 'OK: A-X'
|
||||
WHEN 'A' ALSO 'Y'
|
||||
DISPLAY 'A-Y'
|
||||
WHEN 'B' ALSO ANY
|
||||
DISPLAY 'B-ANY'
|
||||
WHEN OTHER
|
||||
DISPLAY 'OTHER'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,25 @@
|
||||
* ==== TYPE: ST-GOTO-DEPENDING ====
|
||||
* FEATURE: GO TO ... DEPENDING ON
|
||||
* STATEMENT: GO TO DEPENDING ON
|
||||
* BRANCHES: 0, DECISIONS: 1
|
||||
* NOTE: GO TO DEPENDING ON is parsed as pass-through (no IF branches)
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. GTODEP.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-SEL PIC 9(1) VALUE 2.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
GO TO PARA-1 PARA-2 PARA-3
|
||||
DEPENDING ON WS-SEL.
|
||||
DISPLAY 'FALL THROUGH'.
|
||||
STOP RUN.
|
||||
PARA-1.
|
||||
DISPLAY 'PARA-1'.
|
||||
STOP RUN.
|
||||
PARA-2.
|
||||
DISPLAY 'PARA-2'.
|
||||
STOP RUN.
|
||||
PARA-3.
|
||||
DISPLAY 'PARA-3'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,22 @@
|
||||
* ==== TYPE: ST-IF-COMP ====
|
||||
* FEATURE: IF with compound conditions (AND / OR)
|
||||
* STATEMENT: IF (compound)
|
||||
* BRANCHES: 4, DECISIONS: 2
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. IFCOMP.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-A PIC 9(5) VALUE 100.
|
||||
01 WS-B PIC 9(5) VALUE 200.
|
||||
01 WS-C PIC 9(5) VALUE 10.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
IF WS-A > 50 AND WS-B > 100
|
||||
DISPLAY 'OK: AND CONDITION'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: AND'.
|
||||
IF WS-A = 100 OR WS-C = 99
|
||||
DISPLAY 'OK: OR CONDITION'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: OR'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,24 @@
|
||||
* ==== TYPE: ST-IF-DEEP ====
|
||||
* FEATURE: IF nested 3+ levels deep
|
||||
* STATEMENT: IF (nested)
|
||||
* BRANCHES: 6, DECISIONS: 3
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. IFDEEP.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-X PIC 9(1) VALUE 1.
|
||||
01 WS-Y PIC 9(1) VALUE 2.
|
||||
01 WS-Z PIC 9(1) VALUE 3.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
IF WS-X = 1
|
||||
IF WS-Y = 2
|
||||
IF WS-Z = 3
|
||||
DISPLAY 'OK: NESTED'
|
||||
ELSE
|
||||
DISPLAY 'ERR: Z'
|
||||
ELSE
|
||||
DISPLAY 'ERR: Y'
|
||||
ELSE
|
||||
DISPLAY 'ERR: X'.
|
||||
STOP RUN.
|
||||
Reference in New Issue
Block a user