Der kom et spørgsmål i brugergruppen om, hvordan man egentlig laver en REXX, der benytter ISPF-variable om til HLASM. Der er jo lige den der detalje med at lave VDEFINE og VDELETE, som jeg har været inde på før. Nu er jeg ikke nogen haj til assembler, men et eksempel på omskrivning fra REXX til PLI tænker jeg kan hjælpe på forståelsen.
Og så vil du nok lige spørge om det giver mening at bruge PLI eller COBOL i stedet for REXX. Og mit svar er, at det vil det normalt ikke give, med mindre din REXX tager lang tid at udføre. Så vil en omskrivning til PLI helt sikkert hjælpe. Forbedringer i elapsed tid på 10 til 100 gange er ikke ualmindelige.
Først vil jeg vise dig et lille REXX-program, der kan udskrive indholdet af en ISPF-variabel, der er gemt i ISPF-pool'en:
Fire linier kode er alt, hvad der skal til. Value-funktionen tager navnet i ISPFVAR og benytter dette navn som variabelnavn og dermed er det værdien af navnet på variablen i ISPFVAR, der udskrives i stedet for indholdet af ISPFVAR. Bemærk, at hvis du laver VGET kun af en enkelt variabel, så behøver du ikke at putte parenteser omkring.
Følgende PLI-program gør præcis det samme som ovenstående REXX:
PLI-programmet fylder 3 gange så meget, og for at fat i indholdet af den variabel, der angives som input i PARM, så er du nødt til at lave en VDEFINE og afslutte programmet med en VDELETE. Alle de ISPEXEC kald, du laver i REXX, kan oversættes til et tilsvarende ISPLINK kald, og oversættelsen finder du i ISPF Services Guide. Alle de steder i REXX, hvor du benytter en REXX-variabel som en ISPF-variabel, skal du lave en passende VDEFINE i PLI sammen med en declare af en tilsvarende PLI-variabel.