MainframeSupports
tip uge 11/2004:

Det er kun et par år siden, jeg første gang stiftede bekendtskab med JCL-parameteren RESTART. RESTART benyttes på JOB-kortet til at fortælle JES, hvilket step i det submittede job, som eksekveringen skal begynde med. Hvis RESTART ikke er angivet, så starter eksekveringen af jobbet naturligvis med det første step. Nu kan du jo så med en vis ret udbryde "ja og hvad så???". Det gjorde jeg også første gang, jeg læste/hørte om RESTART. Jeg kunne ikke få øje på noget som helst smart ved det.

Når jeg laver et job med flere steps i, og det gør jeg efterhånden tit, så tester jeg typisk jobbet et step ad gangen. Hvert eneste step indleder jeg med en //* kommentar uden noget indhold. Så kan jeg simpelthen fjerne asteriksen (*) og så har jeg et såkaldt "end of job"-kort. De efterfølgende steps vil ikke blive behandlet af JES. Det synes jeg er rigtig smart. Lad os nu antage, at step 1 tog tyve minutter at køre, og at jeg nu er klar til at teste step 2. Så er det ret kedeligt at køre step 1 igen i tyve minutter bare for at se step 2 trille. Nu kan man på job-kortet tilføje en RESTART=step 2 (selvfølgelig med det rigtige navn) og så submitte jobbet igen. Man skal lige huske at genetablere sin //* kommentar før step 2. Nu vil jobbet let og elegant starte med step 2. Ikke noget med at slette hele step 1 eller hvad jeg nu gjorde før i tiden.

Hvis du synes, at ovenstående fremgangsmåde lyder som noget, du kan få glæde af, så husk, at temporære datasets (DSN=&TEMPDATA) ikke er nogen god ide. De har en kedelig tendens med at forsvinde, når jobbet slutter. Lad mig her til sidst vise hvordan jeg opbygger mine jobs:

//AGOODJOB JOB ,'COMMENT',CLASS=A, ...
//* RESTART=STEP0002,
// NOTIFY=MYUSER ...
//*
//STEP0001 EXEC ...
...
//*
//STEP0002 EXEC ...
...
//*
//STEP0003 EXEC ...
...

I eksemplet symboliserer ... alle de parametre eller DD-kort, der ellers skal til for at få jobbet til at virke. Opbygningen af selve JOB-kortet gør, at jeg ikke behøver at tilføje RESTART, når jeg vil benytte RESTART. Jeg skal simpelthen bare fjerne en * i stedet. Så mangler jeg vist lige at nævne, at jeg ikke bryder mig særligt meget om JCL-procedurer helt generelt. Derfor kan jeg ikke fortælle dig noget om at bruge RESTART parameteren til at restarte fra et step midt i en JCL-procedure eller for den sags skyld at bruge parameteren til at restarte et step, der eksekverer en JCL-procedure. Her må du selv "boge" den og prøve dig frem.

Forrige danske tip        Last tip in english        Tip oversigten