MainframeSupports
tip uge 28/2003:

Jeg har for et stykke tid siden opgraderet min palmtop computer. I den anledning opgraderede jeg ganske uvidende også væk fra muligheden for at regne i hex. Det irriterede mig grænseløst lige indtil jeg fandt på denne uges tip. Jeg griber stadig ud efter lommeregnerfunktionen i min palmtop, men det sker ikke ret tit mere.

Ideen er at udnytte de mange muligheder i REXX. REXX har jo et hav af funktioner til at konvertere med. Og så kan REXX jo også regne ganske almindeligt. Så er det egentlig bare at udtænke den nemmest mulige måde at omsætte et udtryk til et resultat på. Følgende lille REXX er så min lommeregner. Jeg kalder den for SAY:

/* REXX */
ARG EXPRESSION
INTERPRET 'X = ' !! EXPRESSION
CALL ISPF_MESSAGE 'X = ' !! X, 'THE RESULT IS ' !! X
EXIT
ISPF_MESSAGE:
  PARSE ARG ZERRSM, ZERRLM
  ZERRALRM = 'YES'
  ZERRHM = '*'
  ADDRESS ISPEXEC "SETMSG MSG(ISRZ002)"
RETURN

Hele tricket ligger i REXX statementet INTERPRET, som simpelthen udfører resultatet af det udtryk, man skriver efter INTERPRET, som et REXX statement. Hvis jeg vil vide, hvad ABCD er decimalt, så udfører jeg kommandoen TSO SAY X2D(ABCD), hvorefter resultatet står oppe i højre hjørne af min ISPF skærm. Jeg kan selvfølgelig også udføre regnestykker, som for eksempel 720*1348 eller 27998%80*80. Her er det rart at vide, at % i REXX er heltalsdivision.

Man kan også kalde SAY med alle mulige andre udtryk. Det virker, så længe udtrykket er lovligt og giver et resultat, som kan gemmes i X. I samme øjeblik udtrykket ikke er syntaktisk korrekt, så fejler REXX'en. Her kan den skrappe REXX programmør fange fejlen fra INTERPRET og returnere en pæn message, men jeg klarer mig indtil videre uden.

Forrige danske tip        Last tip in english        Tip oversigten