For mange versioner siden blev der indført noget i ISPF kaldet KEYLISTS. De fleste af os har nok lige siden følt disse KEYLISTS som en irritation, og indtil for nylig var min viden om KEYLISTS da også begrænset til ISPF-kommandoen KEYLIST OFF, som slår KEYLIST funktionerne i ISPF fra. Jeg har dog hele tiden haft en fornemmelse af, at disse KEYLISTS kunne anvendes til noget fornuftigt.
Jeg har tit og ofte haft brug for at tildele PF-taster på mine ISPF-paneler bestemte værdier. Dette gøres traditionelt ved at gemme værdien af PF-tasten, give den en ny værdi, og afslutte med at give PF-tasten sin originale værdi tilbage. Det har dog den uheldige konsekvens, at så længe brugeren aktiverer andre ISPF funktioner fra mine ISPF-paneler, så følger den nye værdi af PF-tasten med. I nogle uheldige situationer, så bryder ISPF ned og den nye værdi af PF-tasten kommer til at overleve i stedet for den originale til stor irritation for brugeren.
Det ideelle er selvfølgelig at have PF-tast værdier, der knytter sig til et bestemt ISPF-panel og intet andet. Det er lige præcis, hvad man kan med KEYLISTS. Man kan også en frygtelig masse andet med KEYLISTS, og det er stadig enormt irriterende. Dette tip omhandler kun en metode til at knytte bestemte PF-tast værdier til et bestemt panel vha. KEYLISTS. En KEYLIST, der skal kunne benyttes af flere end dig selv er en såkaldt SHARED KEYLIST. Sådan en skal gemmes i ISPTLIB konkateneringen. Følgende REXX opretter en KEYLIST ISPF-tabel med navnet MYKEYS. En KEYLIST ISPF-tabel skal hedde KEYS som de fire sidste bogstaver af navnet:
For hver PF-tast tildeles KEYxDEF selve PF-tastens værdi, KEYxLAB den tekst, der skal vises, hvis PFSHOW er ON og KEYxATR angiver om PF-tasten overhovedet skal vises, hvis PFSHOW er ON. Kun PF-taster med KEYxATR sat til LONG eler SHORT vises. Jeg har udeladt tildelingen af PF13 til PF24, som du selv må tilføje. Hvis du ikke tildeler en PF-tast en værdi, så får den ikke nogen og kan dermed ikke benyttes. Hver gang du kører REXX'en, så overskrives den eksisterende ISPF-tabel MYKEYS i det dataset, som DD-navnet ISPTABL er allokeret til. Man kan godt have flere KEYLISTS i samme ISPF-tabel, men jeg har her valgt kun at have en kaldet MYKEYS (værdien af kolonnen KEYLIST).
For at gøre en KEYLIST tilgængelig for andre end dig selv, så må du kopiere ISPF-tabellen til et af de datasets på ISPTLIB konkateneringen, som dine brugere også har allokeret til deres ISPTLIB konkatenering. Herefter mangler du sådan set kun at tage din KEYLIST i brug. Det gør du ved at tilføje følgende linie i toppen af dit ISPF-panel:
De ISPF-paneler, hvor du tilføjer ovenstående linie, vil benytte de PF-tast værdier, som du tildelte i REXX'en. Parameteren MYKEYS er navnet på den KEYLIST, der skal benyttes på panelet. MY er den ISPF-tabel, KEYLIST'en skal findes i, idet MY sættes sammen med KEYS og giver MYKEYS. SHARED angiver, at det ikke er muligt at rette i værdierne af PF-tasterne vha. KEYS. SHARED forhindrer også brugen af såkaldte PRIVATE KEYLISTS. Med SHARED låser man faktisk for enhver ændring af PF-tasternes værdi på netop dette ISPF-panel, mens øvrige ISPF-paneler og PF-tast værdier ikke påvirkes, og det var jo lige præcis det, jeg gerne ville opnå. Det er nu slut med at gemme PF-tast værdier og alt hvad deraf følger. Rigtig god fornøjelse. Du kan i øvrigt læse mere om KEYLISTS i ISPF-manualen "ISPF Dialog Developer's Guide and Reference".