Find what each IMS transaction and job step reaches

Proprietary

Follow an IMS estate from whatever starts a program down to the segment, and mark every DL/I call and definition on the way. A call names a PCB and a segment and never names a database, so on its own it says a program read CLMROOT without saying which claim database that is; the PSB closes it, by turning the position the call names into a database. Which PSB a program runs under is written in a third file again — the PARM of the region step for a batch program, the APPLCTN macro of the stage 1 deck for a message driven one — so nothing short of the whole estate answers the question. All three ways a program names a PCB are followed: a mask counted in the entry list, a PCBNAME carried in an AIB, and a number among the database PCBs at the command level. The DBDs and their segment hierarchies are reported alongside, with the field offsets a copybook reading a segment has to agree with, and three mismatches are reported as findings: a call asking for a segment its PCB cannot see, a mask past the end of the PSB's list, and a field- sensitive PCB read into an area of another length — where a PCB carries SENFLDs the I/O area is that field list and not the segment. AnalyzeImsChain answers the same questions and changes nothing.

io.moderne.mainframe.ims.FindImsChain
mod run . --recipe=io.moderne.mainframe.ims.FindImsChain

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