MainframeSupports
tip uge 9/2005:

Forskellige personer har flere gange gjort mig opmærksom på, at jeg mangler et tip om PARSE SOURCE i REXX. PARSE kommandoen i REXX er en kommando med rigtig mange muligheder og en af de mere oversete er helt sikkert PARSE SOURCE.

PARSE SOURCE returnerer en tegnstreng af ord om eksekveringen af den REXX, der udsteder PARSE SOURCE kommandoen. Følgende eksempel viser, hvad kommandoen returnerer. Antag, at REXX'en hedder MYREXX, at den er startet med kommandoen TSO MYREXX i ISPF og, at memberet MYREXX findes i SYSEXEC konkateneringen:

/* REXX */
PARSE SOURCE A B C D E F G H I
SAY 'TSO = 'A
SAY 'INVOCATION TYPE = 'B
SAY 'NAME OF REXX = 'C
SAY 'NAME OF DD-NAME, REXX IS LOADED FROM = 'D
SAY 'NAME OF DATASET, REXX IS LOADED FROM = 'E
SAY 'NAME OF REXX AGAIN = 'F
SAY 'INITIAL HOST ENVIRONMENT FOR ADDRESS COMMAND = 'G
SAY 'ENVIRONMENT TYPE = 'H
SAY 'USER TOKEN = 'I

Det typiske output fra en eksekvering af ovenstående REXX på mainframen vil se således ud:

TSO = TSO
INVOCATION TYPE = COMMAND
NAME OF REXX = MYREXX
NAME OF DD-NAME, REXX IS LOADED FROM = SYSEXEC
NAME OF DATASET, REXX IS LOADED FROM = ?
NAME OF REXX AGAIN = ?
INITIAL HOST ENVIRONMENT FOR ADDRESS COMMAND = TSO
ENVIRONMENT TYPE = ISPF
USER TOKEN = ?

Invocation type kan antage værdierne COMMAND, SUBROUTINE eller FUNCTION. Environment type er enten MVS, TSO eller ISPF. Du kan se den fulde beskrivelse af PARSE kommandoen ved at klikke her. Det virkelig smarte ved PARSE SOURCE er selvfølgelig, at den fortæller, hvad den aktuelle REXX hedder. Det kan du benytte til mange forskellige ting, først og fremmest til at slippe for at hardcode REXX-navnet i en eller anden REXX-variabel, som man glemmer at rette, når man kopierer REXX-koden til en anden REXX. Invocation type er også ganske anvendeligt, da den eksempelvis kan bruges til at afvise kald til en funktion, der foretages som en kommando.

Forrige danske tip        Last tip in english        Tip oversigten