MainframeSupports
tip uge 27/1999:

ISPF er på mange måder et fascinerende produkt, som gør det muligt at lave en masse smarte "dimser" i løbet af kort tid. Men på nogle fronter er ISPF ret kompliceret. For eksempel er det rimelig let at lave en ISPF-kommando, men at få den til at virke for alle uanset hvor i ISPF, man er, det er en helt anden sag. Så denne uges tip handler om at lave noget, der ligner en ISPF-kommando, men slet ikke er det, da det kun virker, når man står i en EDIT/VIEW-session.

Fidusen er, at såkaldte EDIT-macroer faktisk aktiveres, som om de var ISPF-kommandoer. Og det kan man selvfølgelig udnytte. Her følger et eksempel:
 

/* REXX */
/* MIT NAVN ER: ISPFSNYD */

ARG PARM

ADDRESS ISREDIT "MACRO (PARM)"
IF RC = 0
THEN DO
  PARM = TRANSLATE(PARM)
END

SAY "PARAMETER = " !! PARM

EXIT
 

Normalt vil man skrive ovenstående REXX uden de 5 linier kode i midten, da de i princippet er totalt overflødige. Men hvis man prøver at udføre ISPFSNYD som en EDIT-macro uden de 5 linier, så vil man opdage deres betydning.

Hvis man ikke har brug for at overføre en parameter, så er de 5 linier overflødige. Hvis man ikke vil have uppercase translation, så skal man i stedet for ARG PARM skrive PARSE ARG PARM, og så skal man droppe linien PARM = TRANSLATE(PARM). Hvis man vil have flere parametre, så skal parameterlisten imellem de to paranteser efter MACRO være magen til parameterlisten i ARG, og der må ikke anvendes andet end blanke som adskillelse mellem parametrene. Og så skal man huske at lave en TRANSLATE pr. parameter (hvis man ønsker det). Endnu en begrænsning er, at man højst må benytte 8 tegn til parameternavnene, da EDIT-macro kald ikke kan klare længere variabelnavne.

Fidusen ved ISPFSNYD er, at den virker lige godt uanset om den eksekveres som TSO ISPFSNYD eller bare som ISPFSNYD i en EDIT/VIEW-session. En yderligere fidus er, at IF RC = 0 testen gør det muligt at skelne om ISPFSNYD er startet som en EDIT-macro eller som en TSO-kommando. Og det bedste ved det hele: der skal ikke laves ekstra ISPF-kommando gymnastik for at få det til at virke under alle forhold. Man skal bare huske begrænsningen med, at det kun virker som kommando i en EDIT/VIEW-session. Alle andre steder er man nødt til at skrive TSO foran.

Sidste uges tip        Tip oversigten