MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

ISPF KEYLIST ?

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF
View previous topic :: View next topic  
Author Message
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Fri Aug 01, 2014 8:30 am    Post subject: ISPF KEYLIST ? Reply with quote

To use PFKeys in a panel I used to just override them with code in the REXX program that displays the panel by hard-setting them to whatever value I wanted, and then resetting them when the program ends; however recently, since we went to z/OS 2.1 my PFkeys stopped working and I had to modify how I use them. For some reason using ZPFKEY no longer worked, so I made some changes and now use just PFKEY...yes, it's true, I barely have an idea what I'm doing. In the process, as I read numerous googled pages, I read that it's "bad" to do it that way, since the program is then overlaying a user's pfkeys, which they can change anytime they want from the command line, at which point the keys would no longer work in my panel. The experts recommended panels should use KEYLISTs.

Meanwhile, for a few days, I couldn't understand why my PFK5 would just "randomly" (and very annoyingly) change from RFIND to END...oh yes! I am my own worst enemy!...until while trying to fix my PFKeys problem in my rexx program I found code that was setting it to END...Why, you ask? I have no idea. The code's been like this for years but never been a problem. But only recently it's reared its ugly head; I think due to z/OS 2.1.

Accordingly I'm trying to learn how to use KEYLISTs and am having some difficulty.

I wanted to use a KEYLIST in my panel, so I added the KEYLIST clause to my panel as follows:
Code:
)PANEL KEYLIST(MYKEYS,MY,SHARED)                                       
)ATTR default(~`¢)                                                     
` type(text) intens(low) skip(on)                                       
¢ type(input) intens(high) HILITE(USCORE)                               
)BODY window(72,26) cmd(zcmd)                                           
~                     PGMDISP:  Program Display Menu                   
`                                                                       
~Command ===>¢ZCMD                                                     `
`                                                                       
`           Query#:                                                     
`Program    Non-Prod    Prod        Non-Prod (Bef)     History         
¢Program `  ¢NonPQno `  ¢ProdQno `  ¢BefNQno `       ¢H¢HistQno `       
`Table   `  ¢TblNme                    `   Only Name:¢O`    TB¢L`       
`Index   `  ¢ixNme                     `                               
`                                                                       
`DB2 Subsystem    :¢SubS`     `    Collid          :¢Collid            `
`PLAN_TABLE Owner :¢Owner     `    PLAN_TABLE Name :¢PlnTbl            `
`                                                                       
`BindT:¢N`   Before Start Date:¢BefStart  ¢Bs`  End Date:¢BefEnd    ¢Be`
`DaysD:¢Dys` After  Start Date:¢AftStart  ¢As`  End Date:¢AftEnd    ¢Ae`
`DaysI:¢DyI` PROD   Start Date:¢IStart    ¢Sh`  End Date:¢IEnd      ¢Eh`
`                                                                       
`Compare PTs:¢C`    Explain   :¢E`   Display SQL:¢Q`     CICS TranId:¢R`
`Detctr Hist:¢D`    CA-Insight:¢I`   SysPackage :¢P`     SysPackStmt:¢T`
`Table Src  :¢U`    Table Info:¢B`   Dis Pkg SQL:¢K`     DbaPackStmt:¢A`
`APD Release:¢F`    Detector  :¢G`   Endevor    :¢V`     PgmLastUsed:¢M`
`Acceptable Access Paths TB401:¢W`                                     
`                                                                       
)INIT                                                                   
vget (cursor) shared                                                   
.cursor = &cursor                                                       
)REINIT                                                                 
vget (cursor) shared                                                   
.cursor = &cursor                                                       
refresh(*)                                                             
)PROC                                                                   
&PFKEY = .PFKEY                                                         


From what I read you must have an ISPF Table entry for a KEYLIST, so I then created an entry named MYKEYS (note that I removed the error trapping logic to make the following easier to read):
Code:
ADDRESS ISPEXEC                                                   
"CONTROL ERRORS RETURN"                                           
"KEYLIST ON"                                                     
                                                                 
"TBOPEN ISPKEYS NOWRITE SHARE"                                   
                                                                 
"TBQUERY ISPKEYS KEYS(KEYSLIST) NAMES(NAMELIST)"                 
                                                                 
"TBEND ISPKEYS"                                                   
                                     
/* make sure the table doesn't already exist */                           
"TBERASE MYKEYS"                                                 

"TBCREATE MYKEYS KEYS"KEYSLIST" NAMES"NAMELIST" WRITE REPLACE"   
                                                                 
EYLISTN = 'MYKEYS'                                               
KEY1DEF  = 'HELP'     ; KEY1LAB  = 'Help'     ; KEY1ATR  = ''     
KEY3DEF  = 'END'      ; KEY3LAB  = 'End'      ; KEY3ATR  = 'SHORT'
KEY4DEF  = 'OPTIONS'  ; KEY4LAB  = 'Options'  ; KEY4ATR  = ''     
KEY5DEF  = 'RESET'    ; KEY5LAB  = 'Reset'    ; KEY5ATR  = ''     
KEY16DEF = 'COLUMNS'  ; KEY16LAB = 'Columns'  ; KEY16ATR = ''     
                                                                 
"TBADD MYKEYS"                                                   
                                                                 
"TBCLOSE MYKEYS"                                                 


But my panel didn't display the correct PFKeys, so I kept reading until I saw that I'm supposed to create a KEYLIST from the =SETTINGS menu or from DTL.

Since I don't know DTL I created MYKEYS from =SETTINGS (enter =SETTINGS, put cursor on the Action Bar item named Function Keys, enter 2, enter N to create a new list, which I named MYKEYS). I defined a few keys in MYKEYS.

Code:
ISPKLUB                 ISR Keylist MYKEYS View           Row 1 to 14 of 24
Command ===>                                             Scroll ===> CSR   
                                                                           
The definition of the MYKEYS keylist is below.                             
                                                                           
Keylist Help Panel Name . . :                                             
                                                                           
Key       Definition                                Format  Label         
F1 . . .                                                                   
F2 . . .                                                                   
F3 . . .  End                                       LONG    End           
F4 . . .  Options                                   LONG    Options       
F5 . . .  Reset                                     LONG    Reset         
F6 . . .                                                                   
F7 . . .                                                                   
F8 . . .                                                                   
F9 . . .                                                                   
F10  . .                                                                   
F11  . .                                                                   
F12  . .                                                                   
F13  . .                                                                   
F14  . .                                                                   
F15  . .                                                           
F16  . .  Columns                                   LONG    Columns
F17  . .                                                           
F18  . .                                                           
F19  . .                                                           
F20  . .                                                           
F21  . .                                                           
F22  . .                                                           
F23  . .                                                           
F24  . .                                                           


And everything works great...for me... The problem is that this is a panel also used by other people and they don't have MYKEYS defined. I can find the ISPF Table MYKEYS I created in my 'userid.ISPTABL' PDS; however I cannot find where the MYKEYS that I created in the SETTINGS panel resides.

I attempted to read the DTL manual and have gotten lost...it's a lot to absorb.

The manual says I should code something like this, but I don't understand how to turn this into something that my panel can "see".
Code:
<!doctype dm system>
<cmdtbl applid=abcd>
<cmd name=search>Search
<cmdact action=passthru>
</cmdtbl>
<keyl name=MYKEYS>
<keyi key=f1 cmd=help>
<keyi key=f3 cmd=end fka=yes>End
<keyi key=f4 cmd=Options fka=yes>Options
<keyi key=f5 cmd=Reset fka=yes>Reset
<keyi key=f16 cmd=Columns fka=yes>Columns
</keyl>
<panel name=MYPANEL keylist=MYKEYS> ...
</panel>


Questions:
1. Where is the MYKEYS I created in the SETTINGS panel stored?
2. How can I copy it to a common area that other users can access?
3. Does anyone have an example of coding PFKeys using DTL and clear instructions on how to get them into my panel?
4. Does my entire panel have to be coded in DTL? I've never used DTL before; all my panels are done the "old" way.
5. Do I need to generate/compile the DTL?



Thanks,
Roy
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Fri Aug 01, 2014 11:48 am    Post subject: Re: ISPF KEYLIST ? Reply with quote

RoyKMathur wrote:


Questions:
1. Where is the MYKEYS I created in the SETTINGS panel stored?
2. How can I copy it to a common area that other users can access?
3. Does anyone have an example of coding PFKeys using DTL and clear instructions on how to get them into my panel?
4. Does my entire panel have to be coded in DTL? I've never used DTL before; all my panels are done the "old" way.
5. Do I need to generate/compile the DTL?



Thanks,
Roy


Check this link which explains in detail about Working with function keys and keylists (the Function Keys action bar choice)
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
misi01
Advanced


Joined: 02 Dec 2002
Posts: 629
Topics: 176
Location: Stockholm, Sweden

PostPosted: Tue Mar 20, 2018 4:28 am    Post subject: Reply with quote

I'm going to jump into this topic after a number of years and agree with Roy; it's not at ALL obvious what to do once you've defined your keylist settings (via ISPF start panel, Menu pulldown, option 1 (Settings), then Function Keys pulldown and option 2 Keylist settings).

I created a keylist called MICKMICK (which I know won't exist since earlier). This was created as a private keylist. I then wanted to copy it to my ISPTLIB library so I could run a simple Rexx script and allocate it and then check another user could "find it". Trouble is, I couldn't find it anywhere. I tried doing a TSO ISRDDN and then an m mickmick but the program said it couldn't find it.

I have read the link Kolusu referred to, but nothing that I could see indicated what to do to make MY keylist a shared one. I added the following to my panel
Code:

)Panel keylist(MICKMICK)                     
)Attr                                                 
   % type(text  ) intens(high)                       
   + type(text  ) intens(low ) skip(on) color(green) 
   Â§ type(nef)          just(left ) padc(user)   


and running the script that drives the panel, I could see that MICKMICK was being used.

What's interesting is that because I want to do this, I've googled till the cows came home, but I can't find anything that shows a "start with this, do this, do that and finally do this and you're home and dry".
_________________
Michael
Back to top
View user's profile Send private message Send e-mail
misi01
Advanced


Joined: 02 Dec 2002
Posts: 629
Topics: 176
Location: Stockholm, Sweden

PostPosted: Tue Mar 20, 2018 10:56 am    Post subject: Reply with quote

After a fair bit of experimentation, I finally managed to define a keylist and ensure it was available to other users.

Kolusu - FWIW, I have written a short word document outlining what is needed but am not sure how to attach it. If it can't be attached, anyone who would like a copy, feel free to send me a private message and I'll send it.
_________________
Michael
Back to top
View user's profile Send private message Send e-mail
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Tue Mar 20, 2018 11:01 am    Post subject: Reply with quote

misi01,

Private copies of Keylists are created using the Keylist Utility (Command = KEYLIST)

•The resulting keylists are stored in xxxxPROF member in users ISPF profile in DD ISPPROF
•The private keylists for application Id ISP are stored in ISPSPROF member in users ISPF profile.

misi01 wrote:

kolusu - FWIW, I have written a short word document outlining what is needed but am not sure how to attach it. If it can't be attached, anyone who would like a copy, feel free to send me a private message and I'll send it.


Thanks much. You can include the contents using code/quote tags. It does not matter how big the document is. So please post it inline. or send me the file via email and I will have uploaded it on the server and can have a link to it.
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
misi01
Advanced


Joined: 02 Dec 2002
Posts: 629
Topics: 176
Location: Stockholm, Sweden

PostPosted: Mon Mar 26, 2018 2:30 am    Post subject: Reply with quote

Tried sending you a PM, Kolusu. Either it didn't arrive or you're on holiday or something similar ?
_________________
Michael
Back to top
View user's profile Send private message Send e-mail
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Mon Mar 26, 2018 1:49 pm    Post subject: Reply with quote

misi01 wrote:
Tried sending you a PM, Kolusu. Either it didn't arrive or you're on holiday or something similar ?


I got your Private message, but it just had 1 line and I replied to it.

Did you send any other message before?

Thanks,
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
misi01
Advanced


Joined: 02 Dec 2002
Posts: 629
Topics: 176
Location: Stockholm, Sweden

PostPosted: Wed Mar 28, 2018 1:58 pm    Post subject: Reply with quote

I've sent you a private message to your Google account with the documentation I've written.

Anyone who uses it ....

Please add comments to this thread explaining what was wrong, easier/shorter ways of doing something, basically, any improvements to the actual documentation will be appreciated.
_________________
Michael
Back to top
View user's profile Send private message Send e-mail
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Wed Mar 28, 2018 4:05 pm    Post subject: Reply with quote

misi01 wrote:
I've sent you a private message to your Google account with the documentation I've written.


Thanks and here is the formatted guide that misi has sent.

Michael Simpson aka misi01's Guide for ISPF KeyList

This is based on my experience/attempts to create a keylist for an ISPF application. This consisted of a load of information that had been divided between two panels. I wanted a keylist to avoid the existing kludgy solution whereby the user would be forced to change an input field indicating whether they wanted to see the second panel or not. Instead, I wanted them to be able to press PF7/PF8 to “scroll” between the panels.

There is a wealth of information out there, but I couldn’t find anything that led you all the way from A to Z such that you ended up with a panel with your PF keys and where the defined keys were available for other users as well. Okay, here we go (remembering, this is how I solved my problem)..

So here the are the 3 basic steps that you would need to create a SHARED KEYLIST

    1. Defining your DTL
    2. Compiling/generating your DTL
    3. Tying the keylist to your panel



1. Defining your DTL
There are lots of examples on how to define PFkeys in a keylist setting, but once you’ve done that, the first problem you hit is that the settings are private and I couldn’t find anything that indicated how to copy them somewhere accessible for all users. So, you need to define a DTL for your panel. Here’s my example (note that I’ve deliberately given the keylist and the application different “stupid” names so that it’s easy to understand where the different values/parameters used later come from).


Start by ensuring you have a PDS called ‘userid.private.GML’, DCB’s are LRECL 80 and RECFM FM. Create a member called MICKMICK with the following entries:-
Code:

<:doctype dm system>                         
<keyL name=mickmick applid=abcd>             
<keyi key=f1 cmd=help>                       
<keyi key=f3 cmd=end fka=yes>End             
<keyi key=f7 cmd=Prev fka=yes>Prev           
<keyi key=f8 cmd=Next fka=yes>Next           
<keyi key=f12 cmd=Confirm fka=yes>Confirm     
</keyL>                                       


Notes :


    1. Doctype is preceded by a : (colon). All the documentation shows a ! (exclamation mark), but this never compiled on our machines, possibly/probably because we’re a Swedish installation.
    2. The keyL tag contains the L as upper-case simply to avoid mistaking it for a 1 (this is not necessary but makes life easier)
    3. The name parameter for the starting keyl is mickmick and the application name is abcd
    4. The only keys I’m interested in on my panel are PF1, PF3, PF7, PF8 and PF12
    5. Using this technique, be aware that when you swap between panels, the value shown for the cmd parameter (Next for F8) will be mirrored in any command field you’ve defined for your panel. For this reason, you might well want to set ZCMD to blank on returning from any of your panels


2. Compiling/generating your DTL

You would need the following datasets. So have them defined and the DCB properties of the datasets that we would need
Code:

   Menu  Options  View  Utilities  Compilers  Help                             
 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
 Command - Enter "/" to select action                 Dsorg  Recfm  Lrecl  Blksz
 -------------------------------------------------------------------------------
          USERID.PRIVATE.GML                           PO    FB        80  27920
          USERID.PRIVATE.ISPTLIB                       PO    FB        80  27920
          USERID.PRIVATE.LIST                          PO    FB        80  27920
          USERID.PRIVATE.PANELS                        PO    FB        80  27920


From the command line, enter the command tso ispdtlc and you should see a screen similar to the following:-


Code:

EsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssN
e   Menu  Utilities  Commands  Language  Options  Help                        e
e ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss  e
e            ISPF Dialog Tag Language Conversion Utility - 7.2                e
e Command ===>                                                                e
e                                                                             e
e Click here:   Go to DTL input names 5-16        Reset DTL input names 2-16  e
e Enter requested information:          Current Language: ENGLISH             e
e                                                                More:     +  e
e Member name . . . . . . . .           (Blank or pattern for member list)    e
e DTL Source data set - 1 . . 'USERID.PRIVATE.GML'                            e
e DTL Source data set - 2 . .                                                 e
e DTL Source data set - 3 . .                                                 e
e DTL Source data set - 4 . .                                                 e
e Panel data set  . . . . . . 'USERID.PRIVATE.PANELS'                         e
e Message data set  . . . . . DUMMY                                           e
e Log data set  . . . . . . .                                                 e
e   Log File Member name  . .           (Required when log file is a PDS)     e
e List data set . . . . . . . 'USERID.PRIVATE.LIST'                           e
e   List File Member name . . *         (Required when list file is a PDS)    e
e SCRIPT data set . . . . . .                                                 e
e Tables data set . . . . . . 'USERID.PRIVATE.ISPTLIB'                        e
e Keylist Application ID  . .           (Up to 4 characters)                  e
DsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssM



Scrolling forward:-

Code:

Enter "/" to select option                                                 
/  Replace Panel/Message/Script/Keylist/Command Members                   
/  Preprocess Panel Output                                                 
   Place ISPDTLC Messages in log file                                     
   Suppress Messages (ISPDTLC formatting)                                 
   Suppress Messages (CUA exceptions)                                     
/  Use CUA Panel Attributes                                               
/  Generate Statistics on Panel/Message/Script Members                     
   Generate List file                                                     
   Generate List file with ENTITY substitution                             
   Generate Script file                                                   
/  Replace Log File Members                                               


And forward again
Code:

Enter "/" to select option                                                 
/  Replace Panel/Message/Script/Keylist/Command Members                   
/  Preprocess Panel Output                                                 
   Place ISPDTLC Messages in log file                                     
   Suppress Messages (ISPDTLC formatting)                                 
   Suppress Messages (CUA exceptions)                                     
/  Use CUA Panel Attributes                                               
/  Generate Statistics on Panel/Message/Script Members                     
   Generate List file                                                     
   Generate List file with ENTITY substitution                             
   Generate Script file                                                   
/  Replace Log File Members                                               
/  Replace List File Members                                               


And forward again
Code:

                                                               More:   - 
   Display converted panels in a window                                   
   Bypass data set name validation (after first cycle)                   
/  Enable graphic character display                                       
   Use field names in place of Z variables                               
   Align DBCS prompt text with entry field                               
   Preserve leading ENTITY blanks when "space" is not specified           
   Process multiple line comment blocks                                   
   Scroll member list to last selected member                             
   Generate accessible character string                                   
   Display additional DTL source data set list                           
                                                                         
Conversion status message interval . . . 1    (0 - 999)                   
DISPLAY(W) option check interval . . . . 1    (1 - 99)                   
MAXIMUM embed files  . . . . . . . . . . 25   (1 - 999)                   


Press ENTER to continue the process
Code:

   Menu  Functions  Utilities  Help                                             
 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
 MEMBER LIST  USERID.PRIVATE.GML                         Row 0000001 of 0000001
 Command ===>                                                  Scroll ===> CSR 
    Name     Prompt          Size    Created           Changed            ID   
 . MICKMICK                     8   2018/03/28   2018/03/28 12:48:20    USERID 
   **End**                                                                     
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
   EssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssN     
   e Select members to be converted. (Enter "S *" to select all members.) e     
   DssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssM     
                                                                               


Code:
 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  MEMBER LIST  USERID.PRIVATE.GML                         Row 0000001 of 0000001
  Command ===>                                                  Scroll ===> CSR
     Name     Prompt          Size    Created           Changed            ID   
  S MICKMICK                     8   2018/03/28   2018/03/28 12:48:20    USERID
    **End**                                                                     
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
    EsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssN   
    e Select members to be converted or END to start conversion processing. e   
    DsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssM   


PF3 to continue processing the member and you will get something similar to this

Code:

 ISPDTLC ISPF 7.2 Dialog Tag Language Conversion Utility                       
 Converting source file "USERID.PRIVATE.GML(MICKMICK)"...                       
 ISPC150W: Warning. Line 5 of file "USERID.PRIVATE.GML(MICKMICK)". When         
    "CMD=END", "KEY=F3" on the KEYI tag does not conform to the CUA Architecture
    definition and will therefore not be CUA compliant.                         
 ISPC150W: Warning. Line 8 of file "USERID.PRIVATE.GML(MICKMICK)". When         
    "CMD=CONFIRM", "KEY=F12" on the KEYI tag does not conform to the CUA       
    Architecture definition and will therefore not be CUA compliant.           
 2 warning(s) and 0 error(s) found.                                             
 ***                                                                           


Now, assuming you only received warnings, the “compiled” DTL code will have been placed in ‘USERID.private.isptlib’ (from the ISPDTLC panel earlier). If you do a browse/view on the member ABCDKEYS (from the DTL tag KEYL earlier) you should see something similar to the following:-

Code:

   Menu  Functions  Confirm  Utilities  Help                                   
 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
 BROWSE            USERID.PRIVATE.ISPTLIB                Row 0000001 of 0000001
 Command ===>                                                  Scroll ===> CSR
            Name     Prompt       Size   Created          Changed          ID 
 _________ ABCDKEYS                                                           
           **End**                                                             
                                                                               


If you browse the member and do a search for MICKMICK you will find the keylist
Code:

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help                     
 sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
 VIEW       USERID.PRIVATE.ISPTLIB(ABCDKEYS) - 01.00             CHARS 'MICKMICK' found 
 Command ===>                                                          Scroll ===> CSR   
 ****** ********************************* Top of Data **********************************
 000001  àTIR:   \ &ABCDKEYS ñØ 5Ø       Ã§      "     "   USERID               Â°  KEYLIS
 000002 TN    ÃŽ   KEY1DEF     Ã‰   KEY1LAB     Ã‰   KEY1ATR     Ã‰   KEY2DEF     Ã‰   KEY2LA
 000003 B     Ã‰/  KEY2ATR     Ã‰Ã‘  KEY3DEF     Ã‰>  KEY3LAB     Ã‰o  KEY3ATR     Ã‰Ã†  KEY4DE
 000004 F     Ã‰t  KEY4LAB     Ã‰Ã´  KEY4ATR     Ã‰L  KEY5DEF     Ã‰Q  KEY5LAB     ÃŠ   KEY5AT
 000005 R     ÃŠ   KEY6DEF     ÃŠ   KEY6LAB     ÃŠ   KEY6ATR     ÃŠ   KEY7DEF     ÃŠÃ¢  KEY7LA
 000006 B     ÃŠÂ¦  KEY7ATR     ÃŠÃŠ  KEY8DEF     ÃŠÃ  KEY8LAB     ÃŠÂ¤  KEY8ATR     ÃŠx  KEY9DE
 000007 F     ÃŠÃ  KEY9LAB     ÃŠM  KEY9ATR     ÃŠÃ¼  KEY10DEF    Ê÷  KEY10LAB    Ë   KEY10A
 000008 TR    Ë   KEY11DEF    Ë   KEY11LAB    Ë   KEY11ATR    Ëã  KEY12DEF    Ë.  KEY12L
 000009 AB    ËË  KEY12ATR    Ë#  KEY13DEF    ËØ  KEY13LAB    Ëy  KEY13ATR    Ë^  KEY14D
 000010 EF    ˧  KEY14LAB    Ëù  KEY14ATR    ËV  KEY15DEF    ˲  KEY15LAB    È   KEY15A
 000011 TR    È   KEY16DEF    È   KEY16LAB    Èå  KEY16ATR    È|  KEY17DEF    Èè  KEY17L
 000012 AB    È@  KEY17ATR    Èd  KEY18DEF    Èi  KEY18LAB    È£  KEY18ATR    Ⱦ  KEY19D
 000013 EF    È´  KEY19LAB    ÈW  KEY19ATR    ÈÓ  KEY20DEF    È3  KEY20LAB    Í   KEY20A
 000014 TR    Í   KEY21DEF    Í   KEY21LAB    Í&  KEY21ATR    Íì  KEY22DEF    Í)  KEY22L
 000015 AB    Íe  KEY22ATR    Íý  KEY23DEF    Ík  KEY23LAB    Í[  KEY23ATR    ÍB  KEY24D
 000016 EF    ÍG  KEY24LAB    ÍÕ  KEY24ATR    Í7  µ  Q ¢ B ¡ © [ { D F H ­ õ M û ù ÿ ÷ T
 000017  V X Z Ô Ã’ 3 9                                 Ã  ¢ + & ê è ß ; Á Ã… Ñ , _ ? É Ë Í
 000018  Ï ' c « ° o ¸ ¤ ~ t v x z ¿ Ý ® ½ A H  MICKMICK  HELP  HELP  NO        END  End
 000019   SHORT                    PREV  Prev  SHORT  NEXT  Next  SHORT                 
 000020    CONFIRM  Confirm  SHORT  HELP  HELP  NO        END  End  SHORT               
 000021      PREV  Prev  SHORT  NEXT  Next  SHORT                    CONFIRM  Confirm  S
 000022 HORT KEYHELPN                                                                   


You have successfully defined the keylist and also generated it, the next step is putting it use

3. Tying the keylist to your panel

Pick the panel where you want to use this keylist (lets say AVB240), and the first few lines of that panel will contain the following:-

Code:

)Panel keylist(mickmick,abcd,shared)                     
)Attr                                                     
   % type(text  ) intens(high)                           
   + type(text  ) intens(low ) skip(on) color(green)     
   Â§ type(nef)          just(left ) padc(user)
...

/* Pay attention to the panel statement and see how */
/* the keylist and application tie together.        */


Finally, on the assumption that you’re not allowed/don’t want to place your panels/keylists in some general ISPF PDS, you will need to allocate them prior to showing the actual panel. In my case, my starting panel was called AVV000 and the Rexx script driving it was AVV00010. This contained the following at the start of the script:-
Code:

ADDRESS 'ISPEXEC'                                       
'control errors return'                                 
"libdef ispplib dataset id('userid.private.panels')"   
"libdef ispmlib dataset id('userid.private.msgs')"     
"libdef isptlib dataset id('userid.private.isptlib')"   

And this in the cleanup section:-
Code:

address ispexec   
'libdef ispplib '
'libdef ispmlib '
'libdef isptlib '



That was it!!!
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
misi01
Advanced


Joined: 02 Dec 2002
Posts: 629
Topics: 176
Location: Stockholm, Sweden

PostPosted: Fri Jun 29, 2018 1:52 am    Post subject: PF1 key Reply with quote

I got hit by this the other day.

Following my own instructions, I created a new keylist, but I thought to myself "I'm not writing any help panels for this new panel, so I don't need to define the PF1 key, so I'll get rid of it".

Said and done, until .....

I define all my messages along the lines of
Code:

invalid_policy_number:                                 
                                                       
zedsmsg = "Invalid number"                           
zedlmsg = "Policy number must be numeric"     
                                                       
rc = ISPFMSG()                                         
                                                       
return 0                                               

the idea being that ISPF will show the short message. If you want a "better" explanation of what's wrong, you press the "standard" PF1 key to get the long message.

Oh, wait a minute, my keylist doesn't include PF1 as a valid PF key !!!

Summa summarum - always include the PF1 key in your keylists.
_________________
Michael
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group