MainframeSupports
tip uge 27/2004:

Ind i mellem har jeg behov for at udvide en concatenering på et DD navn med et ekstra dataset. Opgaven består simpelthen i at finde ud af, hvad der i forvejen er allokeret af datasets til det pågældende DD navn og så reallokere DD navnet med de samme datasets tilsat et ekstra dataset i den position, jeg ønsker det ekstra dataset placeret, og det er oftest foran de andre. Denne opgave er ikke særlig svær at klare manuelt, men hvad hvis nu den oprindelige allokering ændrer sig eller ikke umiddelbart er kendt i forvejen. Så er der hjælp at hente i følgende REXX, som jeg kalder APPEND, selv om den indsætter et dataset forrest i concateneringen:

/* REXX */
ARG FILENAME DSNAME
FILENAME = '  'FILENAME
DSNAME = ''''DSNAME''''
CALL OUTTRAP('LISTA.')
ADDRESS TSO "LISTALC STATUS"
CALL OUTTRAP('OFF')
DSLIST = ''
OLDLINE = ''
DDNAMEHIT = 0
DO LINENO = 1 TO LISTA.0
  LINE = LISTA.LINENO
  IF SUBSTR(LINE, 1, 10) = '' & DDNAMEHIT
  THEN
    DSLIST = DSLIST','''OLDLINE''''
  ELSE
    IF SUBSTR(LINE, 1, 10) = FILENAME
    THEN DO
      DSLIST = DSLIST'('DSNAME','''OLDLINE''''
      DDNAMEHIT = 1
    END
    ELSE
      IF SUBSTR(LINE, 1, 2) = ''
      THEN
        DDNAMEHIT = 0
  OLDLINE = LINE
END
DSLIST = DSLIST')'
ADDRESS TSO
"ALLOC FI("FILENAME") DA"DSLIST" SHR REUSE"
EXIT

Ovenstående REXX benytter TSO kommandoen LISTALC STATUS til at finde den aktuelle concatenering for det DD navn, hvis navn er første parameter til APPEND. Anden parameter er det datasetnavn, du ønsker at tilføje forrest i concateneringen for DD navnet i første parameter. Læg mærke til at datasetnavnet skal angives fuldt ud og uden apostroffer/plinger. Forestil dig nu, at du godt kunne tænke dig at ISPF altid skal kigge i MY.PANELS før ISPF kigger i de øvrige datasets concateneret til ISPPLIB. Umiddelbart bør en TSO APPEND ISPPLIB MY.PANELS klare det problem.

Du vil straks konstatere, at den afsluttende ALLOC fejler. Dert skyldes, at alle ISP*LIB DD navne bliver åbnet under opstart af ISPF og forbliver åbne indtil ISPF terminerer. Du er altså nødt til at afslutte ISPF for at komme ud til TSO READY prompten. Her kan du udføre kommandoen APPEND ISPPLIB MY.PANELS og derefter starte ISPF igen. Nu vil ISPF kigge i MY.PANELS først.

Forrige danske tip        Last tip in english        Tip oversigten