View previous topic :: View next topic
|
Author |
Message |
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
daveporcelan,
I never asked for a solution to the control of the JCL library, you turned into that. I asked for a way for EXIT 6 to "remember" something about a previous call to it so that it may take action subsequently. This is very common to all transaction type processing such as CICS.
Thanks for your comments. |
|
Back to top |
|
|
daveporcelan
Active Member
Joined: 01 Dec 2006 Posts: 792 Location: Pennsylvania
|
|
|
|
This is an expert forum, in which people who participate use their experience to provide assistance.
As you noticed, several of the experts asked for additional information to better understand the scope of the problem.
Providing a specific answer to a narrow question is not what we do here.
While that is done often, when the approach to the problem does not appear to be appropriate, alternate solutions are discussed.
Even if you do not come away to a specific answer to your original question, please take away the effort given by the experts here any value they may provide.
I would be amiss not to give my seasoned opinion to your issue. |
|
Back to top |
|
|
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
daveporcelan
Thank you very much ! |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
Randy Horowitz wrote: |
Steve
When searching through the internal text how does a concatenated ddname work ? Is there multiple keys for dsname for each of the concatenated datasets ?
What is "TS's control".
How can this be evaded ? A list of production libraries will be hard coded in the exit and if a dataset found in steplib/joblib is not in this list the job will be terminated.
Thanks |
- To be honest, I'm not 100% sure, but I think you continue to see two DD statements. It is not combined. When it goes to execution there are still two DD statements. It is "combined" only in the sense it is combined after they they have opened.
- TS generally means "topic starter," that is the first or initial query in the thread.
- Here is one way to evade your proposed to control.
Code: |
//EVADE EXEC PGM=IKJEFT01,
// PARM='CALL ''TEST.LIBRARY(EVADEPGM)'' ''PARAMETER TEXT'''
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
// Other DD statements |
There are other variations, but that is a one example. TEST.LIBRARY becomes the equivalent of a STEPLIB in addition to any other STEPLIB established for the step until EVADEPGM terminates. The TSO CALL command has worked that way for almost 50 years.
Another example -
Code: |
//EVADE EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
CALL 'TEST.LIBRARY(EVADEPGM)' 'PARAMETER TEXT'
// Other DD statements |
|
|
Back to top |
|
|
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
Steve,
O.K. so never got an answer to my question but it was an interesting conversation. Thanks for the work arounds. Funny my thought was that a concatenation is still one ddname and the Conversion/Interpreter leads me to think that more that one dsname concatenated in one ddname would mean that they would be multiple dsname keys. |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
Randy Horowitz wrote: |
Steve,
O.K. so never got an answer to my question but it was an interesting conversation. Thanks for the work arounds. Funny my thought was that a concatenation is still one ddname and the Conversion/Interpreter leads me to think that more that one dsname concatenated in one ddname would mean that they would be multiple dsname keys. |
Oh, you're probably thinking
alloc file(ddnamw) dataset(dataset1 dataset2 ...)
What internally happens is the alloc command allocates each data set as a separate DD statement and then concatenates the DD statements. |
|
Back to top |
|
|
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
How would
//STEPLIB DD DSN=HLQ.LIB1,DISP=SHR
// DD DSN=HLQ,LIB2,DISP=SHR
// DD DSN=HLQ.LIB3,DISP=SHR
// DD DSN=HLQ.LIB4,DISP=SHR
come in the buffer ?
I think the DSNs would be a number of X'4A' key with the number of parms=4
or would it be a number of X'4A' entries ? |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
The question, as posed, is meaningless. Each DD statement is presented to exit 6 as an entity. The mechanics of how the internal text is built is none of our business. Exit 6 sees the internal text for 4 DD statements. There is no such thing as a 4A key with 4 data set names.
//STEPLIB DD DSN=HLQ1.LIB1,DISP=SHR
then
// DD DSN=HLQ.LIB2,DISP=SHR
and so on. Remember this whole business started so HASP could change SYSOUT=A to UNIT=xxx. I no longer remember what the xxx was, but the purpose was so MVT would actually allocate a pseudo printer that HASP would intercept I/O intended for the printer and write it to its SPOOL.
When you write a program that uses QSAM, do you try to access the I/O buffer as an entity? No, because the precise structure of the I/O buffer varies from data set to data set. QSAM, on purpose, hides this from you so your code can be kept simple. If you think you need to access an entire I/O buffer at a time you use BSAM. If you do it right you save some CPU time, though in the long term the cost is program complexity. Most of the time it's done wrong, which costs program reliability or imposes unnecessary program restrictions or both. In fact it appears to be taught wrong, to simplify the training text. |
|
Back to top |
|
|
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
Thank you very much for your comments. |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
Randy Horowitz wrote: |
These are jobs that come out of a scheduler, no one is going to dynamically allocate anything, they are COBOL batch jobs. We want to prevent a user from executing a load module from an "unapproved" loadlib. |
Just a thought: wouldn't it be easier to check the JCL (once) while/before it is added to the scheduler, instead of checking it every time it is submitted by said scheduler ? |
|
Back to top |
|
|
Randy Horowitz
New User
Joined: 06 Feb 2018 Posts: 18 Location: United States
|
|
|
|
Yes, of course ! All of the sane arguments were made. This is a last ditch effort to please the auditor's in a shop gone crazy !! Please a little understanding here. All logic has flown out the window. Who for god sakes does not protect the schedule library ? I am the only one on staff who knows assembler so I get called into to do it. I am a CICS guy, I couldn't care less about JES2 or its exits. I have my own exits in CICS to worry about. Thanks ! |
|
Back to top |
|
|
|