MainframeSupports
tip uge 15/2000:

Der findes værktøjer til at præsentere alle former for data. DB2-tabeller, flade filer, VSAM-filer og meget andet. Jeg er desværre bare ikke stødt på et værktøj, der kan vise mig indholdet af en ISPF-tabel på en overskuelig måde.

Der findes godt nok et menupunkt under ISPF/PDF standard hovedmenu punkt 7 (Dialog test), hvor man kan manipulere med ISPF-tabeller, men der er ingen funktion til at vise eller udskrive en ISPF-tabel i sit hele med en tabel-række pr. linie. Det har faktisk irriteret mig rigtig længe, men nu er jeg begyndt på en REXX, der kan udskrive hvilken som helst ISPF-tabel på den aktuelle ISPTLIB-konkatenering i et dataset eller member.

Jeg vil her afsløre de vigtigste ingredienser i denne REXX. Så kan du selv bygge videre på den, eller skrive til mig og bede om den endelige udgave:

/* REXX - FORMAT AN ISPF-TABLE INTO ROWS IN A STEM */
ARG ISPFTAB
ADDRESS ISPEXEC
"TBOPEN "ISPFTAB" NOWRITE"
"TBQUERY "ISPFTAB" KEYS(KEYFLDS) NAMES(NAMEFLDS)"
IF KEYFLDS ^= ''
THEN
  KEYFLDS = SUBSTR(KEYFLDS, 2, LENGTH(KEYFLDS) - 2)
IF NAMEFLDS ^= ''
THEN
  NAMEFLDS = SUBSTR(NAMEFLDS, 2, LENGTH(NAMEFLDS) - 2)
FLDS = KEYFLDS' 'NAMEFLDS
FLDSCOUNT = WORDS(FLDS)
ROW. = ''
ROWCOUNT = 0
"TBTOP "ISPFTAB
"TBSKIP "ISPFTAB
DO WHILE RC = 0
  ROWDATA = VALUE(WORD(FLDS, 1))
  DO FIELDNO = 2 TO FLDSCOUNT
    ROWDATA = ROWDATA'¤'VALUE(WORD(FLDS, FIELDNO))
  END
  ROWCOUNT = ROWCOUNT + 1
  ROW.ROWCOUNT = ROWDATA
  "TBSKIP "ISPFTAB
END
ROW.0 = ROWCOUNT
"TBEND "ISPFTAB
/* WRITE THE STEM ROW. TO SOMEWHERE ELSE */
EXIT

Stem ROW. indeholder efter endt eksekvering nu hele ISPF-tabellen med en række i hvert element i stem'en. Hver kolonne er adskilt af en ¤. Det svære ved kolonner i ISPF-tabeller er, at man ikke på forhånd ved, hvor bredde de enkelte kolonner er. Derfor har jeg i første omgang valgt bare at adskille dem med en eller anden form for delimiter.

Rigtige ISPF-hajer vil straks påpege, at jeg ikke får alle kolonner med, idet hver enkelt række i en ISPF-tabel kan have et variabelt antal ekstra kolonner. I denne første udgave har jeg valgt at se bort fra denne detalje, da det er uhyre sjældent, at nogen benytter denne facilitet.

Jeg håber, at denne uges tip vil give anledning til en del REXX-kodning rundt omkring. Jeg har nemlig besluttet, at ugens tip først udkommer næste gang i uge 18. Rigtig god påske.

Sidste uges tip        Tip oversigten