MainframeSupports
tip uge 11/2005:

DSLIST har lige så længe jeg kan huske tilbage givet mulighed for at lave sine egne liniekommandoer. Jeg vil i det følgende præsentere liniekommandoen II, som du får svært ved at undvære, selv om du måske ikke ligefrem savnede den.

Det er uhyre enkelt at lave en liniekommando til DSLIST. Du laver simpelthen en REXX med det navn, som liniekommandoen skal have. Her skal du lige sikre dig, at liniekommandoen ikke findes i forvejen. Det gør II eksempelvis ikke. Din REXX bliver så eksekveret, når du skriver dens navn som liniekommando ud for et dataset i DSLIST. Selve datasetnavnet får du fat i med en ARG DSNAME. DSNAME vil herefter indeholde datasetnavnet omgivet af plinger (').

Det var det generelle. Lad mig nu vise dig et konkret eksempel. Hvis du i DSLIST benytter liniekommandoen I ud for et ikke-VSAM dataset, så får du et kendt panel op med alle mulige informationer om datasettets allokering. I virker også ud for et VSAM dataset, men du bliver ført igennem en komplet umulig dialog, der efter megen besvær ender med at du får udstedt en LISTCAT mod datasettet. Men var det ikke bare tusind gange lettere med følgende REXX kaldet II:

/* REXX: II */
ARG DSNAME
DSNAME = STRIP(DSNAME, 'BOTH', '''')
LISTDD = 'LISTCAT0'
CALL MSG('OFF')
ADDRESS TSO "ALLOCATE FILE("LISTDD") UNIT(VIO) BLOCK(4096) REUSE"!!,
            " SPACE(1) BLKSIZE(4089) LRECL(125) RECFM(V B)"
IF RC = 0
THEN DO
  ADDRESS TSO "LISTCAT ENTRIES('"DSNAME"') ALL OUTFILE("LISTDD")"
  IF RC = 0
  THEN DO
    ADDRESS ISPEXEC "LMINIT DATAID(LISTID) DDNAME("LISTDD")"
    IF RC = 0
    THEN DO
      ADDRESS ISPEXEC "VIEW DATAID("LISTID")"
      ADDRESS ISPEXEC "LMFREE DATAID("LISTID")"
    END
  END
  ELSE
    CALL ISPF_MESSAGE 'DATASET DELETED',,
         'DATASET 'DSNAME' DELETED BY ANOTHER USER.'
  ADDRESS TSO "FREE FILE("LISTDD")"
END
ELSE
  CALL ISPF_MESSAGE 'ALLOCATION ERROR',,
       'ALLOC FAILED WITH RC='RC
EXIT

Når du bruger II som liniekommando ud for et dataset vil du få vist resultatet af en LISTCAT ALL for det pågældende dataset. Det er ikke særligt informativt for ikke-VSAM dataset, men ud for VSAM dataset gør det pokkers til forskel i forhold til I liniekommandoen. Om du vil benytte VIEW eller BROWSE til at vise resultatet er en smagssag. Ovenstående REXX virker kun i een split session under ISPF, så du må selv finde på en metode til at få II til at virke samtidigt i to eller flere split sessioner.

Forrige danske tip        Last tip in english        Tip oversigten