MainframeSupports
tip uge 1/1999

De fleste ved, at man kan oprette dataset v.h.a. DISP parameteren NEW, men viste du, at MOD virker som NEW, hvis datasettet ikke findes i forvejen?

Det kan vi udnytte til at undgå, at skulle rette JCL ved en omkørsel.

Lad os sige et program skriver et dataset. Hvis vi benytter DISP=SHR, og datasettet ikke findes i forvejen, får vi en JCL fejl. Hvis vi benytter DISP=(NEW,CATLG), og datasettet allerede findes, kan der ske forskellige ting, alt efter om vi har VOL=SER parameteren på eller ej, og om vi kører SMS eller ej.

Altså, første gang vi kører JCL'et skal der stå DISP=(NEW,CATLG), anden gang skal der stå DISP=SHR. Det kan løses ved at have et DD-kort til datasettet i et foregående step og benytte DISP=(MOD,CATLG,CATLG). Hvis datasettet eksisterer bruges det, ellers oprettes det. Vi kan ikke benytte DISP=(MOD,CATLG,CATLG) i det samme step. Det betyder nemlig, at data tilføjes i enden af datasettet.

Hvis der ikke er et foregående step, kan man benytte programmet IEFBR14. IEFBR14 er et program, der ikke laver andet end at sætte returkoden til 0 og returnere. Selve allokeringen af datasettet er nemlig noget JES tager sig af, og det sker uanset om programmet bruger datasettet eller ej.

På samme måde som man kan bruge DISP=(MOD,CATLG,CATLG) til at oprette datasettet, hvis det ikke findes og bruge det gamle dataset, hvis det findes, kan man bruge DISP=(MOD,DELETE,DELETE) til at delete et dataset uanset om det findes eller ej. Rent faktisk oprettes datasettet først, hvorefter det deletes. Det betyder, at du skal specificere SPACE og UNIT parameter, selvom det virker lidt sjovt når man vil delete datasettet.

Hvis I benytter HSM, skal du være opmærksom på at MOD parameteren bevirker, at datasettet bliver recallet, hvis det er migreret. Sommetider tager recall en del tid, så hvis du alligevel bare vil overskrive dataet, er det sikkert en fordel at fjerne det migrerede dataset først med HSM kommandoen HDELETE.

 

Sidste uges tips        Tilbage til Tips oversigten