Build the batch CRUD matrix

Proprietary

Report which job step runs which program against which data set, and what the program does with it. Neither source says this on its own: //ACCTDD DD DSN=PROD.ACCOUNT.MASTER names a data set without saying what happens to it, and SELECT ACCT-FILE ASSIGN TO ACCTDD says what happens without saying to what. The DD name is the only word both files contain, so joining on it is what turns a pile of jobs and a pile of programs into a batch application. Every ASSIGN and every DD appears, bound or with the reason it is not: a step is a run unit rather than a program, so a subprogram's files are bound by the step that runs its caller.

io.moderne.mainframe.batch.FindBatchCrud
mod run . --recipe=io.moderne.mainframe.batch.FindBatchCrud

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