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,19 @@
|
||||
* ==== TYPE: ST-INI-MULTI ====
|
||||
* FEATURE: INITIALIZE multiple fields
|
||||
* STATEMENT: INITIALIZE
|
||||
* BRANCHES: 2, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. INIMUL.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-NAME PIC X(10) VALUE 'HELLO'.
|
||||
01 WS-COUNT PIC 9(5) VALUE 12345.
|
||||
01 WS-FLAG PIC X VALUE 'Y'.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
INITIALIZE WS-NAME WS-COUNT WS-FLAG.
|
||||
IF WS-NAME = SPACES
|
||||
DISPLAY 'OK: INITIALIZE NAME'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: INITIALIZE'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,20 @@
|
||||
* ==== TYPE: ST-INI-REPLACE ====
|
||||
* FEATURE: INITIALIZE with REPLACING clause
|
||||
* STATEMENT: INITIALIZE REPLACING
|
||||
* BRANCHES: 2, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. INIREP.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-AMOUNT PIC 9(5) VALUE 99999.
|
||||
01 WS-CODE PIC X(5) VALUE 'XXXXX'.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
INITIALIZE WS-AMOUNT WS-CODE
|
||||
REPLACING NUMERIC DATA BY 1
|
||||
ALPHANUMERIC DATA BY 'A'.
|
||||
IF WS-AMOUNT = 1
|
||||
DISPLAY 'OK: REPLACE NUMERIC'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: REPLACE'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,22 @@
|
||||
* ==== TYPE: ST-MOVE-GROUP ====
|
||||
* FEATURE: MOVE group-level (data propagation)
|
||||
* STATEMENT: MOVE (group)
|
||||
* BRANCHES: 2, DECISIONS: 1
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. MOVGRP.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-SOURCE.
|
||||
05 WS-SRC-ID PIC X(5) VALUE 'ITEM1'.
|
||||
05 WS-SRC-AMT PIC 9(5) VALUE 9999.
|
||||
01 WS-DEST.
|
||||
05 WS-DST-ID PIC X(5).
|
||||
05 WS-DST-AMT PIC 9(5).
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
MOVE WS-SOURCE TO WS-DEST.
|
||||
IF WS-DST-ID = 'ITEM1'
|
||||
DISPLAY 'OK: GROUP MOVE ID'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: GROUP MOVE'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,26 @@
|
||||
* ==== TYPE: ST-STRING-DELIM ====
|
||||
* FEATURE: STRING with DELIMITED BY / SIZE
|
||||
* STATEMENT: STRING
|
||||
* BRANCHES: 0, DECISIONS: 0
|
||||
* NOTE: STRING is pass-through; no IF
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. STRDEL.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-PART1 PIC X(5) VALUE 'ALPHA'.
|
||||
01 WS-PART2 PIC X(4) VALUE 'BETA'.
|
||||
01 WS-RESULT PIC X(50).
|
||||
01 WS-ptr PIC 9(3) VALUE 1.
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
MOVE SPACES TO WS-RESULT.
|
||||
MOVE 1 TO WS-ptr.
|
||||
STRING WS-PART1 DELIMITED BY SPACES
|
||||
',' DELIMITED BY SIZE
|
||||
WS-PART2 DELIMITED BY SPACES
|
||||
INTO WS-RESULT WITH POINTER WS-ptr.
|
||||
IF WS-RESULT(1:10) = 'ALPHA,BETA'
|
||||
DISPLAY 'OK: STRING'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: STRING'.
|
||||
STOP RUN.
|
||||
@@ -0,0 +1,23 @@
|
||||
* ==== TYPE: ST-UNSTRING-BASIC ====
|
||||
* FEATURE: UNSTRING space-delimited into multiple fields
|
||||
* STATEMENT: UNSTRING
|
||||
* BRANCHES: 0, DECISIONS: 0
|
||||
* NOTE: UNSTRING is pass-through; no IF
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. UNSBAS.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-SRC PIC X(20) VALUE 'ABC DEF GHI'.
|
||||
01 WS-A PIC X(5).
|
||||
01 WS-B PIC X(5).
|
||||
01 WS-C PIC X(5).
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
MOVE SPACES TO WS-A WS-B WS-C.
|
||||
UNSTRING WS-SRC DELIMITED BY SPACES
|
||||
INTO WS-A WS-B WS-C.
|
||||
IF WS-A = 'ABC'
|
||||
DISPLAY 'OK: UNSTRING'
|
||||
ELSE
|
||||
DISPLAY 'ERROR: UNSTRING'.
|
||||
STOP RUN.
|
||||
Reference in New Issue
Block a user