Dette tip har jeg ønsket mig at skrive i mange, mange år. Som det er sket før, var det min gode ven Johnny Mossin, der gjorde mig opmærksom på, at det er muligt at afvikle SDSF i batch. Under min efterfølgende research finder jeg ud af, af SDSF i batch har været muligt i rigtig mange år, også før z/OS blev opfundet. Måske kunne jeg have skrevet dette tip allerede dengang, jeg startede min hjemmeside...
Ikke mere snak. Her er et eksempel:
Dette step vil som resultat udskrive indholdet af ISFIN DD navnet i jobbet MYUSERJB, hvis der ellers findes sådan et job på ST køen i SDSF. Og dette job skal selvfølgelig have tilknyttet et DD navn kaldet ISFIN, som enten skal være noget SYSOUT eller noget SYSIN. Det udskrevne indhold er blevet concateneret til indholdet af datasettet MYUSER.SDSF.OUT.
Hvis du bare har en lille smule erfaring med SDSF, så tror jeg nemt, du kan gennemskue, hvad der foregår. Faktisk er indholdet af ISFIN bare en lang række af SDSF-kommandoer, som du kender dem fra SDSF i TSO. Det nye er givetvis FIND kommandoen, som du skal bruge for at positionere dig på den ønskede linie i resultatet af en SDSF display kommando. Og det andet nye er kommandoen ++, som benyttes til at fyre en linie-kommando afsted.
Så er der lige EXEC kortet. Du kan vælge mellem at benytte PGM=SDSF eller PGM=ISFAFD. Der er en subtil forskel, som er beskrevet i afsnittet om SDSF i batch i SDSF manualen. PARM='++32,100' sætter "skærm-størrelsen", i dette tilfælde til 32 linier med 100 tegn i hver. Resultatet ser du tydeligt ved at studere outputtet i ISFOUT. Her bliver resultatet af hver eneste SDSF kommando angivet i ISFIN udskrevet. Det er her du skal fejlfinde, hvis dit step ikke fungerer efter hensigten.
Efter at Johnny introducerede SDSF i batch for mig er mit hovede ved at eksplodere med ideer til, hvad denne "nye" mulighed kan udnyttes til. Jeg håber, du får det lige sådan. Lad mig høre om det, når du finder på noget smart.