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:
ARG PARM
ADDRESS ISREDIT "MACRO
(PARM)"
IF RC = 0
THEN DO
PARM = TRANSLATE(PARM)
END
SAY "PARAMETER = " !! PARM
EXIT
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.