View previous topic :: View next topic
|
Author |
Message |
daveporcelan
Active Member
Joined: 01 Dec 2006 Posts: 792 Location: Pennsylvania
|
|
|
|
I am going to go into alot of detail here so that my question is clear. I also want to show what I have already done so that those recomendations can be skipped.
I have developed an ISPF Panel to be used by many users in our shop.
I have done many panels in the past.
For this Panel I want to use custom pfkeys.
I tried with limited success to set the values for ZPFxx and VPUT them into the Profile pool. This worked however, those values are then assigned for all panels that use the ISPF default keys. To remedy this, I would have to first do a VGET, save the values, and restore them later before I exit my Rexx program. This is possible, but a bit of a pain, and if the user timed out on my panel, they would be hosed.
So I thought I would try to use a KEYLIST. I used the KEYLIST Utility to create one. I then used the KEYLIST command in the )PANEL section. This worked for me.
Now the problem (finally!). Other users do not have access to my Keylist since it is flagged as a 'Private' Keylist by the utility.
I do not know how to create the Keylist as 'Shared' and also how to determine what APLID to use to access them.
I tried to use the DTL Compiler, but it is not very user friendly.
I also thought if there was a way to create a private keylist for each user in my program on their behalf, that would work as well. I just don't know how.
Any help is appreciated. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
Quote: |
I do not know how to create the Keylist as 'Shared' and also how to determine what APLID to use to access them. |
The applid is the standard way for ISPF to define ...things...
whenever You invoke a dialog/application with the "NEWAPPL" token
all the relevant info will saved into the profile dataset
in members starting with the three character chosen
as far as shared keylist, just give a try copying the keylist from Your profile
to a pds dataset concatenated to the ISPTLIB dataset |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
Hi Enrico,
I've had the same problem (defining keys on my panels) and I haven't found yet the ultimate answer...
A my site, everybody used the VPUT/VGET method but I wanted to try the famous keylist option.
Here are my findings:
I read in the ISPF Dialog Developer's Guide about Keylists "...This creates an xxxxKEYS table that is placed in the ISPTLIB concatenation."
We know that the R/W table is defined as ISPTABL.
So what I did was:- After I've decided in which ISPTLIB dataset I want to place my keylist, I changed my logon procedure so it is also assigned to ISPTABL.
- Logoff/logon to activate the change (no doubt there is a faster way to do that).
- Then I've use DTL to create my keylist, which got stored in the correct dataset.
- Then change back and logoff/logon.
It worked nicely, I didn't touch the keylist since I built it so I haven't looked for a better way. |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
Here is the DTL file I built:
Code: |
<!doctype dm system>
<KEYL NAME=KEYPLEX APPLID=TRB ACTION=UPDATE>
<KEYI KEY=F1 CMD=HELP FKA=yes>Help
<KEYI KEY=F2 CMD=SPLIT FKA=yes>Split
<KEYI KEY=F3 CMD=END FKA=yes>End
<KEYI KEY=F4 CMD=RETURN FKA=yes>Return
<KEYI KEY=F7 CMD=BACKWARD FKA=no>Backward
<KEYI KEY=F8 CMD=FORWARD FKA=no>Forward
<KEYI KEY=F9 CMD=SWAP FKA=yes>Swap
<KEYI KEY=F11 CMD=F11 FKA=no>F11
<KEYI KEY=F12 CMD=F12 FKA=no>F12
<KEYI KEY=F13 CMD=HELP FKA=yes>Help
<KEYI KEY=F14 CMD=SPLIT FKA=yes>Split
<KEYI KEY=F15 CMD=END FKA=yes>End
<KEYI KEY=F16 CMD=RETURN FKA=yes>Return
<KEYI KEY=F19 CMD=BACKWARD FKA=no>Backward
<KEYI KEY=F20 CMD=F20 FKA=no>F20
<KEYI KEY=F21 CMD=SWAP FKA=yes>Swap
<KEYI KEY=F24 CMD=F24 FKA=no>F24
</KEYL> |
The only thing important is that the CMD is unknown to ISPF so it passed back to the program and not processed internally.
I used the DTL compiler too, no really friendly as you said...
The APPLID is kinda dummy, my rexx displaying the panel is working with another applid.
The panel statement is, as you know:
Code: |
)PANEL KEYLIST(KEYPLEX,TRB) |
That's about it, I hope it will help you. |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
Oh, one more thing:
I found that many (if not most) users work with KEYLIST OFF...
That's certainly where the APPLID comes handy, according to the manual:
Quote: |
ZKLUSE Y or N, this variable indicates whether the keylists are being used for an application ID or not.
For example, if KEYLIST OFF has been issued, &ZKLUSE is N. This variable is stored in the application
profile. The VPUT service can be used by your application to set this value. Putting a value of N in
&ZKLUSE to the profile pool is equivalent to issuing the KEYLIST OFF command. Putting a value of Y
in &ZKLUSE to the profile pool is equivalent to issuing the KEYLIST ON command. |
Now, instead of working like a pro, I'm doing VGET/VPUT on this variable |
|
Back to top |
|
|
|