MainframeSupports
tip uge 33/2000:

Nu har jeg efterhånden lavet en del tip i REXX, hvor jeg har lavet en simpel fejlbehandling i form af en SAY, men det er faktisk uhyre nemt at lave en ISPF-message i stedet for. Jeg tror de fleste betragter ISPF-messages som noget besværligt noget, med et member, der indeholder flere messages, der alle skal starte med member-navnet og ende på noget andet. Og så skal memberet ligge i et dataset allokeret til DD-navnet ISPMLIB.

Til alle disse skeptikere har jeg kun en ting at sige: de har aldeles ret. Vi kan alle se det fornuftige i at skille meddelelser fra programmerne, men hvorfor gøre det så besværligt. Nu er det heldigvis således, at nogen i IBM hurtigt erkendte, at måden ISPF-messages er lavet på, er dødbesværlig. Vedkommende lavede en generel message, som vi allesammen kan få glæde af. Se bare følgende REXX:

/* REXX: ISPFMSG */
CALL ISPF_MESSAGE 'Short message',,
                  'This is the long message'
EXIT
ISPF_MESSAGE:
  PARSE ARG ZERRSM, ZERRLM
  ZERRALRM = 'YES'
  ZERRHM = '*'
  ADDRESS ISPEXEC "SETMSG MSG(ISRZ002)"
RETURN

Princippet er uhyre enkelt. ZERRSM udfyldes med den meddelelse, man vil have i øverste højre hjørne. ZERRLM udfyldes med en uddybende kommentar, som man får vist, hvis man trykker på HELP-tasten (typisk PF1). ZERRHM udfyldes med navnet på et ISPF-panel, som så vises, hvis man igen trykker på HELP. * betyder, at det generelle ISPF tutorial-panel vil blive vist. ZERRALRM udfyldes med NO eller YES. YES betyder, at der vil lyde et lille bip, når messagen bliver vist, og farven på messagen er gul (hvis ISPF standardfarver benyttes). Når disse fire variable er udfyldt, kaldes SETMSG servicen med parameteren MSG(ISRZ002) og så fremvises den opsatte message ved display af det næste ISPF-panel.

Jeg har pakket opsætningen af messagen ind i en lille subrutine. Det gør, at man i selve programmet kan koncentrere sig om at udfylde den korte og lange meddelelse. Det der med alarmen og hjælpe-panelet kan man beslutte sig for een gang for alle. Hvis du undrer dig over, hvorfor jeg benytter PARSE ARG i stedet for ARG, så kan jeg oplyse, at ARG laver uppercase translation.

Sidste uges tip        Tip oversigten