Analyze the mainframe a Java source reaches

Proprietary

Record the COBOL programs Java calls and the DB2 tables its SQL reads, on the same relationship table the COBOL, batch and scheduler analyses fill, so a program and a table carry their Java callers beside their COBOL ones. Three call shapes are matched, and they are the three real applications write: a JCICS Program given a name and linked to; a URL handed to an HTTP client, joined through the z/OS Connect service definition beside it, since the Java says only the path and the definition says which program that path runs; and a SQL statement written as a string, read by the same parser the SQL embedded in COBOL is read by, including one spelled as several literals joined together. A program name held in a constant is followed to the one value that constant holds, and otherwise the row is marked as a name only known at run time. The Java end of every row carries the file and the line it was written on, and the COBOL end carries the file where an analysed repository holds that program. A path written in an annotation is the endpoint the Java serves rather than one it calls, and is not an edge. An operation that names an IMS transaction code rather than a program has no row: nothing here joins a transaction code to the program that runs it. The Find recipe answers the same question and marks what it found in the source; this one produces the table and changes nothing.

io.moderne.mainframe.java.AnalyzeMainframeReferences
mod run . --recipe=io.moderne.mainframe.java.AnalyzeMainframeReferences

Install it once from Recipe actions, then run it on every repository under the current directory. New to the Moderne CLI? Set it up.