View previous topic :: View next topic
|
Author |
Message |
Lynne
Active User
Joined: 15 Jan 2015 Posts: 107 Location: USA
|
|
|
|
If a user makes a change to a panel - say putting in a different dataset for a function- can that application save the profile for only that profile so that those changes aren't lost even with a timeout?
I tried adding a "save" function, but the application profile member is in use when you are in the application. |
|
Back to top |
|
|
Willy Jensen
Active Member
Joined: 01 Sep 2015 Posts: 734 Location: Denmark
|
|
|
|
Well, you can do a VPUT (names) PROFILE in the panel PROC section. But it does require that the user presses ENTER. |
|
Back to top |
|
|
Lynne
Active User
Joined: 15 Jan 2015 Posts: 107 Location: USA
|
|
|
|
Willy Jensen wrote: |
Well, you can do a VPUT (names) PROFILE in the panel PROC section. But it does require that the user presses ENTER. |
the thing is, I do save what the user enters into a panel as profile variables for that function at the panel proc section - before it even process the function. My thinking is that is if they work with the same number of datasets or variables, then they don't want to have to enter them over and over.
I have this code just before entering the rexx function in the proc section - so this VPUT should save whatever the user put into the panel:
Code: |
&yA1@ = 'yA1@imem yA1@opds yA1@pf yA1@tmem yA1@zmem ya1@ab4 +
yA1@zmi yA1@emi yA1@t2d ya1@tmax yA1@env yA1@ulib +
yA1@job yA1@jobc yA1@edit yA1@ojob'
VPUT (yA1@ &yA1@) PROFILE
|
but if the person times out - and the timeouts are very aggressive where I work, then those values in the panel are lost. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2594 Location: Silicon Valley
|
|
|
|
If it is not too big, show us the entire panel definition. |
|
Back to top |
|
|
Lynne
Active User
Joined: 15 Jan 2015 Posts: 107 Location: USA
|
|
|
|
I wrote them all with the same "philosophy" - saving the panel variables before going to the function - I will find the shortest panel and post it here. |
|
Back to top |
|
|
hankoerlemans
New User
Joined: 25 Jan 2018 Posts: 62 Location: Australia
|
|
|
|
Well this kind of thing does work
Code: |
ADDRESS ISPEXEC "VGET (ZAPPLID)"
TAB = ZAPPLID'PROF'
DO UNTIL RC > 0
ADDRESS ISPEXEC "DISPLAY PANEL(VPUTIT)"
ADDRESS ISPEXEC "TBSAVE "TAB" LIBRARY(ISPPROF)"
END
|
with the aforementioned caveat about pressing enter. |
|
Back to top |
|
|
hankoerlemans
New User
Joined: 25 Jan 2018 Posts: 62 Location: Australia
|
|
|
|
Previous code has a bug :-)
Code: |
ADDRESS ISPEXEC "VGET (ZAPPLID)"
TAB = ZAPPLID'PROF'
DO UNTIL LRC > 0
ADDRESS ISPEXEC "DISPLAY PANEL(VPUTIT)"
LRC = RC
ADDRESS ISPEXEC "TBSAVE "TAB" LIBRARY(ISPPROF)"
END |
|
|
Back to top |
|
|
Willy Jensen
Active Member
Joined: 01 Sep 2015 Posts: 734 Location: Denmark
|
|
|
|
As I understand your problem, the user enters some data in the screen and then do not press any function keys before the timeout kicks in? |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
the mainframe is not a pc
no data transfer happens until the user hits the enter key
as far as zOS is concerned the time spent filling a screen is considered idle time
IMO the bits/bytes on the screen are not DATA until zOS has taken them in charge |
|
Back to top |
|
|
Lynne
Active User
Joined: 15 Jan 2015 Posts: 107 Location: USA
|
|
|
|
let me say... it isn't just my application. Here is something I tried today (and I hope some of you try it and tell me what results you get):
I brought up ISPF. I have the ISPF ZSTART variable set to automatically bring up multiple screens.
I go to the ISPF, bring up edit. put in one of my datasets. hit enter. it displays the members. I get outof the member display. leave the edit screen as is (do not exit EDIT).
then I go to the SDSF screen. bring up FILTERS - add a filter. save it. do st. I see the new jobs with the added filter displayed. I leave SDSF up on that screen.
then I do something else un-tso work, until TSO times out.
When I come back - what I entered into the edit panel is gone. My new SDSF filter is gone.
In order to save anything I input into any of the standard type applications - edit/sdsf/endevor - I have to do = xall, then bring ISPF back up again. that saves it.
I will try exiting the individual applications next, and see if that saves values across timeout.
plz try this - and let me know if it is the same for you. |
|
Back to top |
|
|
Willy Jensen
Active Member
Joined: 01 Sep 2015 Posts: 734 Location: Denmark
|
|
|
|
Yes you have to exit SDSF in order to update the settings. Other applications may save the profile info during the course of the application. It depends on how the application is written. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2594 Location: Silicon Valley
|
|
|
|
re: "I tried adding a "save" function, but the application profile member is in use when you are in the application"
I do not think typing and timeout will save anything. But typing, saving, and then timeout should save something. It is not clear what you tried, but 'member in use' implies a non-ISPF solution. I think VPUT to PROFILE should work.
a tangent: I really liked the NRETRIEV function. Instead of retrieving commands that were issued, it lets you retrieve names from a history of used names. Though, the user still has to press Enter to add it to the history. |
|
Back to top |
|
|
hankoerlemans
New User
Joined: 25 Jan 2018 Posts: 62 Location: Australia
|
|
|
|
hi folks,
the point of my update ( I never use enough words) is that VPUT in a panel does not cause any I/O. Irrespective of whether the application is home grown or SDSF. VPUT updates the profile variables in storage. The disk table that "backs up" the variables does not get written to (updated) until the application closes. In some cases, e.g. ISRPROF, profile tables do not get written until ISPF shuts down.
So if you want some sort of recovery from time outs implement a TBSAVE operation as per example. This has to be done outside of panel code. |
|
Back to top |
|
|
Lynne
Active User
Joined: 15 Jan 2015 Posts: 107 Location: USA
|
|
|
|
hankoerlemans wrote: |
hi folks,
the point of my update ( I never use enough words) is that VPUT in a panel does not cause any I/O. Irrespective of whether the application is home grown or SDSF. VPUT updates the profile variables in storage. The disk table that "backs up" the variables does not get written to (updated) until the application closes. In some cases, e.g. ISRPROF, profile tables do not get written until ISPF shuts down.
So if you want some sort of recovery from time outs implement a TBSAVE operation as per example. This has to be done outside of panel code. |
thank you so much. This makes sense of what I was seeing.
I think many people just use a couple of screens and jump from one app to another in those few screens.. so when they end one application, their variables get saved.
but I created a rexx exec that allows the user to set up multiple screens with whatever they want, then from that point on, whenever they type in ISPF from TSO, they go to the multiple screens they set up. So, much of the time, the application on each screen is not exited out of until the user types =XALL. They just go back and forth between screens depending on what they are doing.
but if they time out.. they have not exited the application and the variables are not saved.
so, this makes sense. I will see if this works. Thanks again. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
A bit late to the party, but ............
In the past where users only have a limited number of options I have used a table for them to choose a dataset from. That way the options are always there and easy to choose. |
|
Back to top |
|
|
|