I denne uge vil jeg afsløre, hvordan du kan læse data direkte fra et hvilket som helst ISPF skærmbillede. I mange år har ISPF faktisk stillet fire variable til rådighed, som gør det muligt at læse direkte fra ISPF skærmbufferen inklusive cursor positionen. De fire variable er: ZSCREENI som indeholder selve skærmbilledet som een lang tegnstreng, ZSCREENC som indeholder cursorens position i ZSCREENI, hvor 0 er den første position og så fremdeles, ZSCREEND som er antallet af linier på skærmbilledet og ZSCREENW som er bredden på skærmbilledet i antal tegn.
Med disse informationer til rådighed har jeg skruet følgende lille og meget anvendelige REXX sammen, som jeg her vil kalde for SCRNSHOT:
Hvis du første gang, du kører denne REXX, bruger kommandoen TSO SCRNSHOT, så vil du nok blive en lille smule skuffet, da den vil kopiere de første 8 tegn fra der, hvor cursoren stod, da du trykkede Enter, over i datasettet userid.SCRNSHOT og vise det i en EDIT session. Da cursoren højst sandsynligt stod i kommando-feltet lige efter T'et i SCRNSHOT, så er de første 8 tegn fra og med cursoren med stor sandsynlighed blanke. Userid.SCRNSHOT vil altså indeholde een blank linie, og det er ret kedeligt.
Hvis dit næste forsøg er TSO SCRNSHOT 10 70 og du, før du trykker Enter, placerer cursoren i øverste venstre hjørne, vil din EDIT session nu vise de første 70 tegn i de første 10 linier fra det panel, du stod på, da du trykkede Enter. Der vil lige være en blank linie øverst i data fra dit første forsøg, da SCRNSHOT appender det nyeste skærm-udsnit til de data, der allerede var i userid.SCRNSHOT. Du kan altså selv styre indholdet af userid.SCRNSHOT med EDIT sessionen. SCRNSHOT accepterer en tredie parameter, som bare skal være til stede, indholdet er ligegyldigt. Denne tredie parameter bevirker, at SCRNSHOT kopierer fra samme cursor-position som sidste gang, den blev kaldt.
Jeg håber, at REXX'en og min tilhørende forklaring vil gøre dig i stand til at lave nye smarte REXX'er, hvor du ved at stille cursoren på forskellige steder i forskellige paneler kan få spændende ting til at ske. Jeg hører gerne om dine ideer, eller endnu bedre: brug MainframeSupport brugergruppen.