Repository navigation
cobolwork 0.8.0
Summary
A scan names the programs Enterprise COBOL will not compile because they use the COBOL Communication feature, and the build gate tells such a program from one ironwork does not run yet.
compile-communication-featurereports each program with a COMMUNICATION SECTION, a CD entry, or an ENABLE, DISABLE, RECEIVE, SEND, PURGE or ACCEPT MESSAGE COUNT statement, with an inventory of its CDs, queues and statements to size the move to CICS or IBM MQ.- The build gate reads an ironwork message's id before its wording: a refusal of what Enterprise COBOL refuses fails the program, and only ironwork's own gaps leave it undecided.
- What EXEC CICS ASSIGN and INQUIRE say about the region and its resources is reported when it reaches a web response or header.
- A label names the ironwork assumptions its runs rested on, where ironwork's journal lists them.
Limit: No program in the 500 corpus uses the Communication feature outside copies of NIST's CCVS85 routines, so the rule is measured on those alone. The two CICS rules warn until their precision is measured.
What 0.8.0 adds over 0.7.0
Install: npm install -g @portll/cobolwork or pip install cobolwork; either gives the command cobolwork. The PyPI package runs the same files with the Node.js on your PATH, which must be Node 22 or later. The npm package is attached here as cobolwork-0.8.0.tgz to pin, and as cobolwork.tgz.
The Communication feature
- IBM's Migration Guide for Enterprise COBOL lists the Communication feature among the OS/VS COBOL elements Enterprise COBOL does not implement: the COMMUNICATION SECTION and the ENABLE, DISABLE, RECEIVE, SEND and ACCEPT MESSAGE COUNT statements are not accepted. TCAM programs built with OS/VS COBOL still run under Language Environment, but their source cannot be rebuilt.
compile-communication-feature(medium, CWE-477) reports each program that uses it. The finding lists each CD with its kind (INPUT, INITIAL INPUT, OUTPUT, I-O), the fields that name its queues, terminal or destinations with the system names moved into them, and the Communication statements counted by verb. It maps to NIST SP 800-53 SA-22 and, through the crosswalk, to COBIT BAI09.03.- The parser reads a CD's clauses (SYMBOLIC QUEUE IS, STATUS KEY IS and the rest, with SYMBOLIC and MESSAGE optional) and its fixed-order list of data-names, and declares the names they give.
compile-undefined-nameno longer reports those fields as undefined.
The build gate and ironwork
build --ironworkdecides whether a program compiles from the id of each messageironwork checkgives. An IWS, IWC or IGY message refuses what Enterprise COBOL refuses, and the program does not compile. An IWR message is a construct ironwork does not run yet, and the program is undecided. The wording is read only for a message without an id. Before, any message saying "not supported" left the program undecided. Names the CICS, DL/I and SQL translators declare are still read as undecided.- With ironwork from 07344354 on, a program using the Communication feature fails the gate as one Enterprise COBOL does not compile, where ironwork 0.8.0 left it undecided.
CICS
- What EXEC CICS ASSIGN returns about the region (APPLID, SYSID, NETNAME, QNAME) and what INQUIRE returns about a resource is the
cics-system-infosource (CWE-497). It is reported only where it reaches a web response or an HTTP header, bycics-system-info-to-web-responseandcics-system-info-to-http-header(low, warning in the build gate until measured), never at a terminal's screen. - An abend's detail from ASSIGN (ABCODE, ORGABCODE, ABPROGRAM, ABOFFSET and the ASRA fields) is error detail, as RESP is. The task's own user and QUERY SECURITY's decision are not a source.
- Over the 72 corpus repositories holding EXEC CICS the 27,864 findings are unchanged.
Evidence
- A run journal's close record may name the assumptions of ironwork's register that the run could have rested on: those governing a statement kind or data usage of a program it entered, or an option in force. The labeller copies the ids from every run behind a label onto the label row. ironwork's main writes them; no ironwork release does yet.