Thanks Stephen, that’s exactly what we want and (almost) exactly what we (almost) implemented.
Our routine did not use IDMSOPT, it used IDMSIN01 to change the SYSCTL DD name when called to do its BIND RUNUNIT.
After the BIND RUNUNIT was complete, it called IDMSIN01 to reset the SYSCTL DD name back to the default name.
This functioned PERFECTLY! in the test LPARs. However, when it got to production the jobs being executed that called the service routine failed for an S913, security error, as the users executing the job were not authorized to read the production CV’s SYSCTL dataset.
So, to get around that, and open a less flexible hole, I coded up an IDMSOPTI module, linked it with IDMS under a different name, cloned the BATCH protocol under another name, changed the CALL statement to call the new version of IDMS with the OPTI linked in and this works, in the test CVs. I have confidence it will work fine in PROD but we are in a code freeze for end of month and end of quarter so we won’t be able to implement into production until around the 15th of April.
The problem with this method is that
1) When we move to a new release, we toggle between our two SVCs (don’t ask, in place before I got here)
2) If we change CV #s things break until someone remembers
3) If CA should ever issue a patch to IDMSSTUB, then our special module will need to be relinked.
All things considered, unless I can get the security issued resolved (which I doubt will happen) we have the best solution at the moment.
What would really be the best thing other than using SYSCTL would be for CA to support passing an IDMSOPTI module during the BIND RUNUNIT.
COBOL lets one load, without calling, a module and makes the address available to you. That address could then be used to base an 01 level definition in the linkage section and then pass that 01 level name to the IDMS interface. I know this is possible as I have just written the routine to do it, but I have no means of pushing the loaded IDMSOPTI module to the IDMS interface.
There is a macro in the IDMS MACLIB, #CONN, that does a GOTOCV function which, if you look at the expansion and the comments in the macro, is a BIND59 (BIND RUNUNIT) and it expands to have an optional 3 parm of IDMSOPTI. Hoping it would work for the IDMSSTUB module, I manually coded a call passing the address of the IDMSOPTI module I loaded with COBOL but the interface doesn’t recognize it as being an IDMSOPTI parm. I also tried passing the address of the address just in case I misread the #CONN macro, but that didn’t work, either.
Thanks for the idea.
Chuck
Charles (Chuck) Hardee<mailto:Chuck.Hardee@ThermoFisher.com>
Senior Systems Engineer/Database Administration
EAS Information Technology
Thermo Fisher Scientific
300 Industry Drive | Pittsburgh, PA 15275
Phone +1 (724) 517-2633 | Mobile +1 (412) 877-2809 | FAX: +1 (412) 490-9230
Chuck.Hardee@ThermoFisher.com<mailto:Chuck.Hardee@ThermoFisher.com> | www.thermofisher.com
WORLDWIDE CONFIDENTIALITY NOTE: Dissemination, distribution or copying of this e-mail or the information herein by anyone other than the intended recipient, or an employee or agent of a system responsible for delivering the message to the intended recipient, is prohibited. If you are not the intended recipient, please inform the sender and delete all copies.