MainframeSupports
tip uge 06/2002:

Her for nylig fik jeg behov for at konstruere et job, hvor jeg i stedet for at skrive outputtet ud på SYSOUT som normalt, gemte outputtet i et dataset. Så kunne jeg i et efterfølgende job styre eksekveringen ud fra resultatet i outputtet. Samtidig ønskede jeg selvfølgelig at bevare udskrivningen som SYSOUT i det oprindelige job. Se det giver visse udfordringer.

I al sin enkelthed går opgaven ud på at lave et step, der altid bliver eksekveret uanset resultatet af et andet (normalt det foregående) step. Lad os kalde dette step for ALWAYS. Her vil du, kære læser, straks udbryde "Brug COND=EVEN". Som sagt, så gjort. Nu har jeg bare den uvane at bruge COND=(4,LT) på job-kortet, og så sker der det pudsige, at step ALWAYS kun bliver udført, hvis et af de foregående steps abender, men ikke hvis de giver en cond code større end 4.

"Jamen, så fjern COND fra job-kortet og sæt det på hvert step i stedet". Ja, det gjorde jeg også, og så lever step ALWAYS op til sit navn. Men jeg ville kun have step ALWAYS til at køre, når step ORIGINAL er blevet kørt eller er abend'et. Så dur COND=EVEN ikke længere, da det bevirker, at en abend i hvilken som helst foregående step vil få step ALWAYS til at køre.

Den grublede jeg længe over. Med COND=EVEN kan man ikke referere til et bestemt foregående step. Redningen findes i IF/ENDIF DD-kortene. Her er et eksempel:

//STEP0001 EXEC PGM=STUPID,COND=(4,LT)
//*
//ORIGINAL EXEC PGM=ORIGINAL,COND=(4,LT)
//*
// IF (ORIGINAL.RUN ! ORIGINAL.ABEND) THEN
//ALWAYS   EXEC PGM=IEFBR14
// ENDIF

Dette job vil altid udføre step ALWAYS, uanset hvordan step ORIGINAL ter sig. Hvis step ORIGINAL ikke bliver eksekveret, så bliver step ALWAYS heller ikke udført. Og det var lige det, jeg gerne ville have. Bemærk, at betingelsen ORIGINAL.RUN ikke er sand, hvis ORIGINAL abend'er. Jeg vil ellers mene, at det er blevet kørt, når det abender, men det mener JES2 ikke. Og nu ikke noget med COND på job-kortet for det ødelægger straks eksemplet.

Forrige danske tip        Last tip in english        Tip oversigten