MainframeSupports
tip uge 10/2002:

TSO i batch kan bruges til mange ting. De fleste anvender sandsynligvis kun TSO i batch til at afvikle DB2-programmer med. Og det er faktisk lidt kedeligt. Man kan eksempelvis bruge TSO batch til at fyre kommandoer af, som man ikke lige gider vente på svaret af online. Og så kan man også benytte det til at allokere datasets med.

Hvorfor nu lige det. Jo, forestil dig, at du vil allokere et nyt dataset, og hvis det er der i forvejen, så gør ingenting. Traditionelt anvender man DISP=MOD til den slags. DISP=MOD har dog den kedelige bivirkning, at datasettet ikke kan benyttes af andre imens jobbet kører, hvilket kan være irriterende, hvis det fandtes i forvejen. Men det råder følgende step bod på:

//TSOBATCH EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
  ALLOCATE DATASET('MY.OWN.DATASET') SHR
  WHEN SYSRC(= 12) -
    ALLOCATE DATASET('MY.OWN.DATASET') -
    TRACKS SPACE(10,10) NEW CATLG
/*

Først prøver jeg at allokere det med DISP=SHR. Hvis det går galt, fordi datasettet ikke findes, så allokerer jeg det. Det endelige resultat er, at jeg kun har datasettet for mig selv, hvis det ikke findes i forvejen.

Ovenstående eksempel skal egentlig kun tjene til at illustrere, at man faktisk kan lave simple IF statements i TSO inputtet uden at kalde en REXX eller CLIST. Dette gøres som vist med WHEN SYSRC(operator værdi). Man kan have flere WHEN SYSRC, så man kan udføre forskellige komandoer afhængig af resultatet af en anden kommando. WHEN er en simpel kommando. Nesting kommer ikke på tale, men til simple ting er det langt bedre end ingenting. Du kan læse mere om WHEN i TSO Command Reference manualen.

Forrige danske tip        Last tip in english        Tip oversigten