Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/language_status/blockers_history.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@
{"pr": 7936, "main_sha": "fd2117800beee87e5a500351f70eaaad43160487", "date": "2026-11-06T19:56:22Z", "whole": 113, "total": 127, "whole_burned": 105, "total_burned": 106, "whole_non_burned": 8, "total_non_burned": 21, "refused_whole": 8, "top_gaps": [{"gap": "refused: LayoutError: source defect: source text past column N (…) cuts a literal open: fixed-form COBOL reads columns N", "only": 7, "only_burned": 0, "only_non_burned": 7, "refuses_program": true}, {"gap": "EXEC CICS WEB CONVERSE POST", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "JSONGEN JSON GENERATE: the <name> value after an exception is not modelled", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "missing copybook BAQRINFO", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": true}, {"gap": "MOVE an alphanumeric literal holds a character beyond the single-byte code page (…): its bytes and length depend on how the source reached the compiler", "only": 0, "only_burned": 0, "only_non_burned": 0, "refuses_program": false}], "scope": "burned + local + census corpora", "copy_members": 1, "note": "re-survey after the zos_comp5 container/queue slices (#7845): no COMP-5 / bytes-overlap gap row; census basis 39, 11 whole; burned 105 of 106 CICS programs"}
{"pr": 7930, "main_sha": "b91787d2b7c3852bbfa14057e3e7397b54de165f", "date": "2026-11-06T20:33:34Z", "whole": 198, "total": 212, "whole_burned": 190, "total_burned": 191, "whole_non_burned": 8, "total_non_burned": 21, "refused_whole": 8, "top_gaps": [{"gap": "refused: LayoutError: source defect: source text past column N (…) cuts a literal open: fixed-form COBOL reads columns N", "only": 7, "only_burned": 0, "only_non_burned": 7, "refuses_program": true}, {"gap": "<name>: undeclared item", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "EXEC CICS WEB CONVERSE POST", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "missing copybook BAQRINFO", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": true}, {"gap": "MOVE an alphanumeric literal holds a character beyond the single-byte code page (…): its bytes and length depend on how the source reached the compiler", "only": 0, "only_burned": 0, "only_non_burned": 0, "refuses_program": false}], "scope": "burned + local + census corpora + cics-crucible", "copy_members": 1, "note": "re-survey after JSON GENERATE JSON-CODE (#7524, #7709)"}
{"pr": 7942, "main_sha": "f27e38f550f7cba1972606b526234d0143bd4b80", "date": "2026-11-06T20:43:42Z", "whole": 113, "total": 127, "whole_burned": 105, "total_burned": 106, "whole_non_burned": 8, "total_non_burned": 21, "refused_whole": 8, "top_gaps": [{"gap": "refused: LayoutError: source defect: source text past column N (…) cuts a literal open: fixed-form COBOL reads columns N", "only": 7, "only_burned": 0, "only_non_burned": 7, "refuses_program": true}, {"gap": "<name>: undeclared item", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "EXEC CICS not a data area: '…'", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "missing copybook BAQRINFO", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": true}, {"gap": "MOVE an alphanumeric literal holds a character beyond the single-byte code page (…): its bytes and length depend on how the source reached the compiler", "only": 0, "only_burned": 0, "only_non_burned": 0, "refuses_program": false}], "scope": "burned + local + census corpora", "copy_members": 1, "note": "re-survey after WEB CONVERSE bare method keywords (#7942, #7525): no EXEC CICS WEB gap row (CONVERSE POST, HTTPHEADER, NOTRUNCATE all gone); whole unchanged at 113/127, non-burned 8/21"}
{"pr": 7938, "main_sha": "945e52b796d9d0bdbc228e66c322eeae37877b81", "date": "2026-11-06T21:49:13Z", "whole": 114, "total": 127, "whole_burned": 105, "total_burned": 106, "whole_non_burned": 9, "total_non_burned": 21, "refused_whole": 8, "top_gaps": [{"gap": "refused: LayoutError: source defect: source text past column N (…) cuts a literal open: fixed-form COBOL reads columns N", "only": 7, "only_burned": 0, "only_non_burned": 7, "refuses_program": true}, {"gap": "EXEC CICS not a data area: '…'", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": false}, {"gap": "missing copybook BAQRINFO", "only": 1, "only_burned": 0, "only_non_burned": 1, "refuses_program": true}, {"gap": "MOVE an alphanumeric literal holds a character beyond the single-byte code page (…): its bytes and length depend on how the source reached the compiler", "only": 0, "only_burned": 0, "only_non_burned": 0, "refuses_program": false}, {"gap": "STRING sender <name>, PIC <name>(…)<name>: a numeric item with a P or a decimal place is a compile error in Enterprise COBOL", "only": 0, "only_burned": 0, "only_non_burned": 0, "refuses_program": false}], "scope": "burned + local + census corpora", "copy_members": 1, "note": "census re-survey after JSON GENERATE NAME OMITTED (#7938) and JSON-STATUS (#7946); no JSON row remains"}
75 changes: 35 additions & 40 deletions docs/language_status/gap_prevalence.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,37 +27,35 @@ One ranking over both scopes, highest estate coverage first; estates and program
| `EPSCSMRI: no service of its own, its translation is refused: epscsmrd.cbl:N: the PICTURE N (…) is not modelled (…): the translator reads one byte a character` | B | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #4272 |
| `EPSCSMRO: no service of its own, its translation is refused: LE recovery point: SERVICE LABEL (…): the resume point after <name>, not BLL addressing: not modelled` | B | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #5106 (le-condition-handling) |
| `EXEC CICS SOAPFAULT CREATE` | B | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #4270 (cics-command-slice) |
| `EXEC CICS WEB CONVERSE POST` | C | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7525 |
| `JSON GENERATE: not modelled` | C | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7524 |
| `JSON PARSE: not modelled` | C | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7524 |
| `EXEC CICS: operand is not a data area` | C | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #4270 (cics-command-slice) |
| `PERFORM: undeclared paragraph` | C | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | named source defect | #7647 (source defect: no such paragraph in the program or its clone) |
| `SET TO ENTRY: procedure / function pointers are not modelled` | B | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #5106 |
| `STRING: literal beyond the single-byte code page` | C | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | named source defect | #7526 (source defect: no single-byte EBCDIC code page holds the character, so the source as stored is no input an IBM compiler reads; the translator refuses the statement, register D4) |
| `refused: ExprError: PROCEDURE DIVISION does not parse` | C | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | refused by name | #7709 (source defect: a comment banner whose asterisks start in column 8, not the indicator column 7, is text to a fixed-form compiler, so Enterprise COBOL rejects the program too; the fixture test in tests/cobol_mainframe/test_det_source_defects_4735.py shows the det parser refuses that shape and reads the column-7 one, so the grammar is not at fault; census T4, #7847, #7927) |

Coverage if closed, programs that translate whole after the highest-ranked gaps (from 137 today): top 1: 138 / 168 (82.1%), top 3: 149 / 168 (88.7%, upper bound), top 5: 158 / 168 (94.0%, upper bound), top 10: 162 / 168 (96.4%, upper bound).
Coverage if closed, programs that translate whole after the highest-ranked gaps (from 138 today): top 1: 139 / 168 (82.7%), top 3: 150 / 168 (89.3%, upper bound), top 5: 159 / 168 (94.6%, upper bound), top 10: 163 / 168 (97.0%, upper bound).

| top N gaps closed | programs whole | share | bound |
|---|---|---|---|
| 1 | 138 / 168 | 82.1% | exact |
| 3 | 149 / 168 | 88.7% | upper |
| 5 | 158 / 168 | 94.0% | upper |
| 10 | 162 / 168 | 96.4% | upper |
| 1 | 139 / 168 | 82.7% | exact |
| 3 | 150 / 168 | 89.3% | upper |
| 5 | 159 / 168 | 94.6% | upper |
| 10 | 163 / 168 | 97.0% | upper |

Close-next order (greedy: each step closes the gap that makes the most further programs whole, given the steps before it):

| step | gap closed | newly whole | e0 | e1 | e2 | e3 | e4 | none | whole | share | bound |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | `refused: LayoutError: source defect: text past column 72` | 9 | 0 | 0 | 9 | 0 | 0 | 0 | 146 / 168 | 86.9% | upper |
| 2 | `missing copybook: clone defect (not in the clone)` | 7 | 0 | 0 | 7 | 0 | 0 | 0 | 153 / 168 | 91.1% | upper |
| 3 | `refused: generation: ISPF editor screen, not a COBOL program` | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 155 / 168 | 92.3% | upper |
| 4 | `<name>: <name> is not defined in a record of file <name>` | 2 | 0 | 0 | 0 | 2 | 0 | 0 | 157 / 168 | 93.5% | upper |
| 5 | `missing copybook: z/OS Connect product` | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 159 / 168 | 94.6% | upper |
| 6 | `<name>: undeclared item` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 160 / 168 | 95.2% | upper |
| 7 | `EXEC CICS map: no <name> field` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 161 / 168 | 95.8% | upper |
| 8 | `EXEC CICS WEB CONVERSE POST` | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 162 / 168 | 96.4% | upper |
| 9 | `PERFORM: undeclared paragraph` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 163 / 168 | 97.0% | upper |
| 10 | `refused: ExprError: PROCEDURE DIVISION does not parse` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 164 / 168 | 97.6% | upper |
| 1 | `refused: LayoutError: source defect: text past column 72` | 9 | 0 | 0 | 9 | 0 | 0 | 0 | 147 / 168 | 87.5% | upper |
| 2 | `missing copybook: clone defect (not in the clone)` | 7 | 0 | 0 | 7 | 0 | 0 | 0 | 154 / 168 | 91.7% | upper |
| 3 | `refused: generation: ISPF editor screen, not a COBOL program` | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 156 / 168 | 92.9% | upper |
| 4 | `<name>: <name> is not defined in a record of file <name>` | 2 | 0 | 0 | 0 | 2 | 0 | 0 | 158 / 168 | 94.0% | upper |
| 5 | `missing copybook: z/OS Connect product` | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 160 / 168 | 95.2% | upper |
| 6 | `<name>: undeclared item` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 161 / 168 | 95.8% | upper |
| 7 | `EXEC CICS map: no <name> field` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 162 / 168 | 96.4% | upper |
| 8 | `EXEC CICS: operand is not a data area` | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 163 / 168 | 97.0% | upper |
| 9 | `PERFORM: undeclared paragraph` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 164 / 168 | 97.6% | upper |
| 10 | `refused: ExprError: PROCEDURE DIVISION does not parse` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 165 / 168 | 98.2% | upper |

## Burned estates (6 estates, 129 programs, 126 translate whole today)

Expand Down Expand Up @@ -92,15 +90,15 @@ Needs several gaps together (1 program the order above leaves out: each turns wh
|---|---|---|---|---|---|---|---|---|---|
| `<name> ADDRESS OF <name>: not an item of <name> or LINKAGE`; `CEEHDLR: registering an LE user condition handler is not modelled`; `CEEHDLU: unregistering an LE user condition handler is not modelled`; `EPSCSMRI: no service of its own, its translation is refused: epscsmrd.cbl:N: the PICTURE N (…) is not modelled (…): the translator reads one byte a character`; `EPSCSMRO: no service of its own, its translation is refused: LE recovery point: SERVICE LABEL (…): the resume point after <name>, not BLL addressing: not modelled`; `EXEC CICS SOAPFAULT CREATE`; `SET TO ENTRY: procedure / function pointers are not modelled` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | exact |

## Census estates (9 estates, 39 programs, 11 translate whole today)
## Census estates (9 estates, 39 programs, 12 translate whole today)

Counted by tools only; non-burned estates keep their first-contact numbers. Aggregates under opaque `census-*` labels: no program, table or copybook name is kept, and a gap key that could carry one is collapsed to its class (`scrub_key`).

Coverage if closed, programs that translate whole after the highest-ranked gaps (from 11 today): top 1: 12 / 39 (30.8%), top 3: 23 / 39 (59.0%, upper bound), top 5: 31 / 39 (79.5%, upper bound), top 10: 35 / 39 (89.7%, upper bound).
Coverage if closed, programs that translate whole after the highest-ranked gaps (from 12 today): top 1: 13 / 39 (33.3%), top 3: 24 / 39 (61.5%, upper bound), top 5: 32 / 39 (82.0%, upper bound), top 10: 37 / 39 (94.9%, upper bound).

Copy members: 1 listed, not counted in the 39 programs (no IDENTIFICATION / PROCEDURE DIVISION and no PROGRAM-ID: data description entries only; owner ruling 2026-11-06, #7709: the census basis is the programs alone).

Accounted today (whole, or every gap a named source defect): 35 / 39.
Accounted today (whole, or every gap a named source defect): 36 / 39.

| gap | estates | programs | e0 | e1 | e2 | e3 | e4 | none | status | owner |
|---|---|---|---|---|---|---|---|---|---|---|
Expand All @@ -112,38 +110,35 @@ Accounted today (whole, or every gap a named source defect): 35 / 39.
| `MOVE: literal beyond the single-byte code page` | 1 | 2 | 0 | 0 | 2 | 0 | 0 | 0 | named source defect | #7526 (source defect: no single-byte EBCDIC code page holds the character, so the source as stored is no input an IBM compiler reads; the translator refuses the statement, register D4) |
| `STRING: numeric sender with P or a decimal place` | 1 | 2 | 0 | 0 | 2 | 0 | 0 | 0 | named source defect | #7523 (source defect: a numeric STRING sender must be an integer without a P, a compile error in Enterprise COBOL) |
| `missing copybook: z/OS Connect product` | 1 | 2 | 0 | 0 | 1 | 0 | 1 | 0 | unknown | #7709 (product copybook frontier: no runtime modelled; IBM's copybooks are never shipped) |
| `EXEC CICS WEB CONVERSE POST` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7525 |
| `JSON GENERATE: not modelled` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7524 |
| `JSON PARSE: not modelled` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #7524 |
| `EXEC CICS: operand is not a data area` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | not modelled | #4270 (cics-command-slice) |
| `PERFORM: undeclared paragraph` | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | named source defect | #7647 (source defect: no such paragraph in the program or its clone) |
| `STRING: literal beyond the single-byte code page` | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | named source defect | #7526 (source defect: no single-byte EBCDIC code page holds the character, so the source as stored is no input an IBM compiler reads; the translator refuses the statement, register D4) |
| `refused: ExprError: PROCEDURE DIVISION does not parse` | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | refused by name | #7709 (source defect: a comment banner whose asterisks start in column 8, not the indicator column 7, is text to a fixed-form compiler, so Enterprise COBOL rejects the program too; the fixture test in tests/cobol_mainframe/test_det_source_defects_4735.py shows the det parser refuses that shape and reads the column-7 one, so the grammar is not at fault; census T4, #7847, #7927) |

| top N gaps closed | programs whole | share | bound |
|---|---|---|---|
| 1 | 12 / 39 | 30.8% | exact |
| 3 | 23 / 39 | 59.0% | upper |
| 5 | 31 / 39 | 79.5% | upper |
| 10 | 35 / 39 | 89.7% | upper |
| 1 | 13 / 39 | 33.3% | exact |
| 3 | 24 / 39 | 61.5% | upper |
| 5 | 32 / 39 | 82.0% | upper |
| 10 | 37 / 39 | 94.9% | upper |

Close-next order (greedy: each step closes the gap that makes the most further programs whole, given the steps before it):

| step | gap closed | newly whole | e0 | e1 | e2 | e3 | e4 | none | whole | share | bound |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | `refused: LayoutError: source defect: text past column 72` | 9 | 0 | 0 | 9 | 0 | 0 | 0 | 20 / 39 | 51.3% | upper |
| 2 | `missing copybook: clone defect (not in the clone)` | 7 | 0 | 0 | 7 | 0 | 0 | 0 | 27 / 39 | 69.2% | upper |
| 3 | `refused: generation: ISPF editor screen, not a COBOL program` | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 29 / 39 | 74.4% | upper |
| 4 | `missing copybook: z/OS Connect product` | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 31 / 39 | 79.5% | upper |
| 5 | `<name>: undeclared item` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 32 / 39 | 82.0% | upper |
| 6 | `EXEC CICS map: no <name> field` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 33 / 39 | 84.6% | upper |
| 7 | `EXEC CICS WEB CONVERSE POST` | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 34 / 39 | 87.2% | upper |
| 8 | `PERFORM: undeclared paragraph` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 35 / 39 | 89.7% | upper |
| 9 | `refused: ExprError: PROCEDURE DIVISION does not parse` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 36 / 39 | 92.3% | upper |

Needs several gaps together (3 programs the order above leaves out: each turns whole only when every gap in its row is closed):
| 1 | `refused: LayoutError: source defect: text past column 72` | 9 | 0 | 0 | 9 | 0 | 0 | 0 | 21 / 39 | 53.8% | upper |
| 2 | `missing copybook: clone defect (not in the clone)` | 7 | 0 | 0 | 7 | 0 | 0 | 0 | 28 / 39 | 71.8% | upper |
| 3 | `refused: generation: ISPF editor screen, not a COBOL program` | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 30 / 39 | 76.9% | upper |
| 4 | `missing copybook: z/OS Connect product` | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 32 / 39 | 82.0% | upper |
| 5 | `<name>: undeclared item` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 33 / 39 | 84.6% | upper |
| 6 | `EXEC CICS map: no <name> field` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 34 / 39 | 87.2% | upper |
| 7 | `EXEC CICS: operand is not a data area` | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 35 / 39 | 89.7% | upper |
| 8 | `PERFORM: undeclared paragraph` | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 36 / 39 | 92.3% | upper |
| 9 | `refused: ExprError: PROCEDURE DIVISION does not parse` | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 37 / 39 | 94.9% | upper |

Needs several gaps together (2 programs the order above leaves out: each turns whole only when every gap in its row is closed):

| gaps closed together | programs | estates | e0 | e1 | e2 | e3 | e4 | none | bound |
|---|---|---|---|---|---|---|---|---|---|
| `JSON GENERATE: not modelled`; `JSON PARSE: not modelled` | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | exact |
| `MOVE: literal beyond the single-byte code page`; `STRING: numeric sender with P or a decimal place` | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | exact |
| `MOVE: literal beyond the single-byte code page`; `STRING: literal beyond the single-byte code page`; `STRING: numeric sender with P or a decimal place` | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | exact |
Loading
Loading