MainframeSupports
tip uge 53/2015:

Nogle få gange løber man ind i udfordringer, som ikke lader sig så let løse, og hvor man godt kan leve med at problemet ikke bliver løst, fordi det kun opstår i helt specielle situationer. Hvis du er løbet ind i ISPF fejlen "ISPT036 Table in use ... ENQUEUE failed" i ISPF batch, så er jeg rimelig sikker på, at du ved, hvad jeg mener. Min gode ven og kollega Johnny Mossin satte sig for at løse problemet endegyldigt, og det lykkedes faktisk. Selv om det er en sjælden forekommende problemstilling, så skal du da ikke snydes for løsningen, så du ikke behøver kæmpe i timevis med at løse problemet.

"ISPT036 Table in use ... ENQUEUE failed" kan opstå i flere forskellige sammenhænge i ISPF batch, og den mest udbredte løsning er, at allokere et temporært ISPPROF dataset. Kun i meget få tilfælde er dette ikke helt nok, for eksempel hvis du kører flere samtidige ISPF batchjobs. Så er det, at du kan gribe til følgende løsning:

//IEBCOPY  EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSN=SYS1.SISPTENU,DISP=SHR
//SYSUT2   DD DSN=&ISPPROF,DISP=(NEW,PASS),SPACE=(TRK,(1,1,1)),
//            UNIT=VIO,LRECL=80,RECFM=FB
//SYSIN    DD *
  COPY INDD=SYSUT1,OUTDD=SYSUT2
  S M=ISPSPROF
  S M=ISPPROF
/*
//RUNISPF  EXEC PGM=IKJEFT01,DYNAMNBR=200,PARM='%RUNISPF'
//SYSEXEC  DD DISP=SHR,DSN=MY.REXX.LIBRARY
//ISPSLIB  DD DISP=SHR,DSN=MY.REXX.SKELETON
//ISPFILE  DD SYSOUT=*,LRECL=80,RECFM=FB
//SYSTSIN  DD DUMMY
//SYSTSPRT DD SYSOUT=*
//ISPMLIB  DD DSN=SYS1.SISPMENU,DISP=SHR
//ISPPLIB  DD DSN=SYS1.SISPPENU,DISP=SHR
//ISPTLIB  DD DSN=SYS1.SISPTENU,DISP=SHR
//ISPTABL  DD DSN=&ISPTABL,DISP=(NEW,PASS),SPACE=(TRK,(1,1,1)),
//            UNIT=VIO,LRECL=80,RECFM=FB
//ISPPROF  DD DSN=&ISPPROF,DISP=(OLD,PASS)
//ISPLOG   DD SYSOUT=*,LRECL=120,RECFM=FB

Normalt vil ISPPROF allokeringen i RUNISPF steppet være magen til ISPTABL allokeringen i ovenstående eksempel, og det plejer at være tilstrækkeligt til at slippe af med ISPT036 fejlen. Men hvis du vil være helt sikker på ikke at støde ind i fejlen på ISPPROF, så skal du preallokere ISPPROF datasettet som i ovenstående IEBCOPY step. Og derudover skal du kopiere de to angivne members fra et andet ISPPROF dataset over i det temporære ISPPROF dataset. Jeg har her benyttet SISPTENU datasettet fra ISPF installationsbiblioteket Det er ikke sikkert, at det hedder SYS1.SISPTENU på din installation, så her må du lige få fat i ISPF systemprogrammøren for at få at vide, hvad det hedder, hvis du ikke vil benytte dit eget ISPPROF dataset.

Forrige danske tip        Last tip in english        Tip oversigten