Repository navigation
IMS DL/I slice 1: CALL 'CBLTDLI' through a DB PCB on both runtimes; CardDemo PAUDBUNL proven (Part of #4893) - #5232
Conversation
…before either runtime ran it (Part of #4893) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; level fixture passes on both runtimes (Part of #4893) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Part of #4893) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(Part of #4893) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No description provided. |
|
|
||
| def call(gen: Any, s: S.Stmt, ind: str) -> list[str]: | ||
| """CALL 'CBLTDLI' USING function pcb io-area [ssa-1 ... ssa-15]: DetDli.call, then RETURN-CODE 0.""" | ||
| from gitgalaxy.tools.cobol_to_java.det.gen import Untranslatable |
| from pathlib import Path | ||
| from typing import TYPE_CHECKING, Any | ||
|
|
||
| from gitgalaxy.tools.cobol_to_java.det import dli |
|
PR #5232 @ f38661f: 2 failed check(s) == ground-truth (failure) -- real == ground-truth part 1/2 (failure) -- real |
…8, output decoded as UTF-8 (Part of #4893) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No description provided. |
1 similar comment
|
No description provided. |
Part of #4893 (Epic: IMS runtime), slice 1: DL/I database calls (
CALL 'CBLTDLI') through a DB PCB, with SSAs and status codes, on both runtimes and against a stated DBD / PSB.What changed
tests/equivalence/ims/ggdli.cis a new C model linked into a batch case's cobc build. It carriesCBLTDLI, plusGGDLINIT/GGDLIENDfor the driver.cobolrt/dli/DetDli.javais its Java twin: the same rules and the same refusals, by name.det/dli.pytranslatesCALL 'CBLTDLI'toDetDli.calland sets RETURN-CODE 0 after it (register I1).stmt.py:ENTRY 'DLITCBL'as the first statement is the program's entry even when PROCEDURE DIVISION has its own USING, because IMS enters there.program.py:runBatchbinds the PCBs (DetDli.enter, no PARM written over PCB 1) and writes the databases at the end (DetDli.leave).AIBTDLIandCEETDLIare refused by name.tests/tools/equivalence_ims.pyhandles a case's"ims"section. It reads the DBD / PSB sources through the engine's owncore/ims_gen.py, and refuses by name what is not modelled.equivalence.pyandequivalence_java.py.evidence.pygetsharness:ims/oracle:imscomponents and aTarget.imsflag.cobolrt/Accept.java). The translator had emittedFuncs.acceptDate(clock()), a method that never existed, so any batch port with ACCEPT FROM DATE did not compile (dormant since Deterministic COBOL→Java ports: all 23 proven CardDemo programs translate with no model and prove #4089). PAUDBUNL needs it.carddemo-paudbunl(CardDemo, burned):cobolrt_rules.jsonMODELLED_CALLS+= CBLTDLIdet_port_design.mdEvidence
tests/equivalence/ims/fixtureholds LVLDBD (three levels: DEPT, EMP, SKILL, PROJ, with C / X / P fields), LVLPSB (one PCB with PROCOPT=A, one with G), DLILVL (49 calls) andexpected.txt.test_det_dli.py::test_the_level_fixture_prints_what_ibm_documents_on_both_runtimes(EQUIVALENCE_E2E=1).carddemo-paudbunlproven by the det sweep: "proven on 5 runs, covering 9/10 paragraphs and 20/22 branches".det_port.py checkvs origin/main: 112/113 ports unchanged; the only one is the newcarddemo-paudbunl, re-proved with the final translator (PROVED, 73/73 statements). ACCEPT FROM DATE lives in its own runtime class (cobolrt/Accept.java), so no port that does not ACCEPT moves. A first cut inFuncs.javamoved all 113.pr_gates --fast6/6 pass;pr_gates --ratchets8 pass, 0 fail, 0 skipped.EQUIVALENCE_E2E=1 pytest tests/cobol_mainframe/test_det_dli.py34 passed;test_evidence_components.py,test_cobolrt_rules.py,test_det_source_4462.pyandtest_det_coverage_ledger.pypass.Class: a DL/I database call through a DB PCB (the CBLTDLI call interface, batch DLITCBL entry)
Accept.from, PAUDBUNL, unit testSibling gaps (not in this PR)
EXEC DLI, the command-level interface with the DIB:
It needs an EXEC DLI translator and a DIB model. The CICS ones also need
equivalence_cics.pyto link the model, which this slice keeps out of (COBOL translator: CICS command breadth (START/RETRIEVE, channels/containers, GETMAIN, LOAD, CONVERSE, INQUIRE, ASSIGN, counters, HANDLE ABEND PROGRAM) #4270, Epic: IBM MQ runtime — MQI calls (MQOPEN/GET/PUT/CLOSE…) and MQ structures #4892).SCHD / TERM, CHKP / XRST / ROLB / SYNC: CBPAUP0C (CHKP), COPAUA0C / COPAUS* (SCHD / TERM). These are a unit-of-work and checkpoint model.
GSAM PCBs: CardDemo DBUNLDGS needs a GSAM model (a sequential dataset behind a PCB).
I/O PCB, CMPAT=YES, BMP, IMS TM and MFS: CardDemo PAUDBLOD (PSB PSBPAUTB CMPAT=YES, BMP). Its
ENTRY 'DLITCBL' USING PAUTBPCBnames one PCB where IMS passes the I/O PCB first.Command codes, boolean SSAs, AIBTDLI / CEETDLI, FLD / POS, multiple positioning: no burned program uses them.
Secondary indexes (PROCSEQ), logical relationships, HDAM root order, load mode (PROCOPT L): DBPAUTX0 is the HIDAM primary index, which is not needed here. Nothing burned uses the rest.
CBLTDLI from a CICS program: it needs
equivalence_cics.pyto linkims/ggdli.c.Notes
gitgalaxy/core,standardsormetricsis touched.field_testing.jsonis not touched. The ACCEPT FROM DATE defect is the det translator's, not the engine's or the forge's.tests/tools/test_equivalence_ims.py. Its harness tests are intests/cobol_mainframe/test_det_dli.pywith the rest.🤖 Generated with Claude Code