Repository navigation
det: JSON PARSE sets JSON-CODE from IBM's exception table (Part of #7524, #7709) - #7928
squid-protocol wants to merge 6 commits into
Conversation
, #7709) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No description provided. |
|
No description provided. |
|
PR #7928 @ 084c822: 1 failed check(s) == ground-truth part 1/2 (failure) -- real |
|
CI shepherd: the head of this PR (1cdad5f) is not the one a maintainer labelled |
|
No description provided. |
|
No description provided. |
|
This PR conflicts with main, so no checks ran. Merge origin/main into it and regenerate generated files with their tools (never hand-merge them), then push. |
|
No description provided. |
|
No description provided. |
|
No description provided. |
|
PR #7928 @ efdb5c2: 12 failed check(s) == db2 ${{ matrix.shard }} (cancelled) -- infra == equivalence-e2e (cancelled) -- infra == full-suite (cancelled) -- infra == full-suite part ${{ matrix.group }}/${{ needs.shard-plan.outputs.splits }} (cancelled) -- infra == ground-truth part ${{ matrix.shard }} (cancelled) -- infra == ground-truth part 2/4 (failure) -- real == ground-truth-warm (cancelled) -- infra == publish-history (cancelled) -- infra == shard ${{ matrix.group }}/${{ needs.plan.outputs.splits }} (cancelled) -- infra == shard ${{ matrix.shard }} (cancelled) -- infra == store the suite's durations (cancelled) -- infra == suite time budget (#5166) (cancelled) -- infra |
|
CI shepherd: the head of this PR (6214b19) is not the one a maintainer labelled |
|
No description provided. |
1 similar comment
|
No description provided. |
Part of #7524, #7709.
JSON PARSE now sets JSON-CODE from IBM's Enterprise COBOL 6.3 Programming Guide exception table (Table 109): 100 invalid text, 101 empty, 102 text after the closing brace, 104 incompatible value, 106 no name matched; 0 on success. ON EXCEPTION / NOT ON EXCEPTION test the code. A program naming JSON-CODE beside a JSON PARSE used to be refused; it now translates. Modelled from IBM's text only: ASSUMED in register X77, oracle-unbacked, no L2+ claim.
What changed
JsonParse.java: a six-argumenttryParsereturns the code and a JSON-STATUS value (bits 1 and 2, Table 108); the three-argument form keeps its meaning. Table 108 says a string too long (256) and a number that does not fit (128) are not exceptions and are stored anyway, in a form IBM does not state, so both are now a runtimeHoleinstead of the exception the old model raised. A bare non-object top level has no stated code: a Hole when JSON-CODE is named.det/gen.py:json_parsestores the code and runs the phrases on it; a program's own JSON-CODE item is kept.test_det_json_parse.py(code per class, status bits, Hole cases),test_det_json_generate.py(the stale refusal of a JSON PARSE beside JSON-CODE becomes a translation).X77.md: the register text.Class / Sibling gaps
Class: special-register values a JSON statement sets after it runs. Fixed here: JSON-CODE for PARSE. Sibling gaps, each needing a burned program that reads the register: (1) GENERATE exception code 1 (receiver too small, Table 107) plus the X76 text: the generate half is refused by name when JSON-CODE is named with ON EXCEPTION; (2) the hidden JSON-CODE register is S9(4), IBM's is S9(9) BINARY, and a
GG-JSON-STATUSregister so the translator stores the status the runtime already computes (program.py); (3) JSON-STATUS after an exception and bits 4 to 512. Needs a burned program that DISPLAYs or tests JSON-CODE after PARSE: not checked against the burned corpora in this slice.Remaining slices: the three above (I stopped at 5 hand-written files).
Checklist: partial [c:9bd1fd57] -- GENERATE exception code, JSON-STATUS register and width, SUPPRESS WHEN / EVERY, CONVERTING, tables, float items
Cross-repo: none. Overlaps open PR #7905 (gen.py, test_det_json_generate.py): origin/main merged in before pushing; that PR will likely merge first.
Verification
test_det_json_parse.py,test_det_json_generate.py,test_det_source_4462.py,test_cobolrt_rules.py: 205 passed (JDK 17).pr_gates --fast: 9/9 pass.audit_check.py: all clear.det_port.py check: 270/270 ports unchanged.Lessons for agents
pdftotext -layoutfrom the harness-saved file; a fetch subagent twice reported the table missing when it was there.cobolrtfile failstest_cobolrt_rulesunless its name is in the rule'smethods; overloading an existing name (tryParse) avoids touchingcobolrt_rules.json.ruffin the selfscan venv is 0.16 and reports 99 baseline findings;audit_check.pyis the real gate.🤖 Generated with Claude Code