MainframeSupports
tip uge 20/2000:

Sidst i tippet i uge 18 skrev jeg en hentydning til såkaldt "trapping" af output fra output-uvenlige TSO-kommandoer. Det ledte mig frem til den ide, jeg vil præsentere i denne uges tip. Det er simpelthen det ultimative REXX-program til udførelse af TSO-kommandoer.

Før vi kaster os ud i programmets vidunderligheder, så er der visse ting, du bør vide. Det kan ikke klare at køre split-screen. Her skal du selv finde på noget smart eller også kontakte mig, så kan jeg også give et lille tip på det område. Fejlbehandlingen er ret rudimentær. Det er ikke alle TSO-kommandoer, man kan trappe, især er det hamrende irriterende, at TSO-kommandoer til HSM ikke kan fanges. Den foretagne allokering af et VIO-dataset kan sikkert optimeres. Og til sidst vil jeg tage forbehold for eventuelle trykfejl.

/* REXX - BROWSE OUTPUT FROM ANY TSO-COMMAND */
ARG COMMAND
ADDRESS TSO "ALLOCATE FILE(TRAPPED) UNIT(VIO) BLOCK(4096)",
            "SPACE(1) BLKSIZE(4089) LRECL(125) RECFM(V B)"
IF RC = 0
THEN DO
  CALL OUTTRAP('COMMAND.')
  ADDRESS TSO COMMAND
  CALL OUTTRAP('OFF')
  ADDRESS TSO "EXECIO * DISKW TRAPPED (STEM COMMAND. OPEN FINIS)"
  IF RC = 0
  THEN DO
    ADDRESS ISPEXEC "LMINIT DATAID(TRAPPED) DDNAME(TRAPPED)"
    IF RC = 0
    THEN DO
      ADDRESS ISPEXEC "BROWSE DATAID("TRAPPED")"
      ADDRESS ISPEXEC "LMFREE DATAID("TRAPPED")"
    END
  END
  ADDRESS TSO "FREE FILE(TRAPPED)"
END
EXIT

Ideen er simpelthen at præsentere outputtet i en browse-session. Så kan man selv bladre frem og tilbage, som man har lyst. Det ultimative ligger i, at man med samme REXX kan udføre alle mulige forskellige TSO-kommandoer. Lad os antage, at REXX'en hedder TRAP, så vil TSO-kommandoen TSO %TRAP HELP HELP resultere i en BROWSE-session, hvor vi kan læse alt om HELP-kommandoen (næsten). TSO %TRAP LU vil browse alle TSO-userens RACF-user informationer, og så videre.

Sidste uges tip        Tip oversigten