Need some expert advice on BMC unload execution time reduction:
Have a scenario where I need to change IMS key fields(data not definition). I am using BMC unload utility with an UserExit; where key data is changed. After successful unload with correction, I reload data back. I am able to accomplish on smaller databases.
However for larger databases (approx. 10 million record size), while unloading (with UserExit) the job ran more than 16 hours thrice before I cancelled it. DBA and I tried various options to reduce the execution time but no luck. Options we tried:
- Changed DFSVSAMP parameters (increased IOBF )
- Job class and Region parameter.
- Changed UserExit default BUFSPACE(20) to BUFSPACE(400)
- Few more setting based on BMC recommendation - DFSURGU1(SHORT), EXPAND(NO) ,LPCK(NO)
This angered me that I couldn't remember...so I went hunting!
I found the SCLM hooks that are in use with Enterprise COBOL
Member WTSO.XXXX.SOURCE(CEEUOPT) has:
CEEUOPT AMODE ANY
CEEUOPT RMODE ANY
The SCLM language macro for the Link Edit has:
BMCLE370 FLMSYSLB WTSO.XXXX.LOAD
The SCLM language parser (Compile) has:
I also realized that we have a vestigial line of code in all of our exits. At the start of the Procedure Division:
IF (FIRST-TIME-SWITCH EQUAL SPACES)
MOVE HIGH-VALUES TO FIRST-TIME-SWITCH
DISPLAY 'START DB LOAD'
This was added by me to show that the program only loaded once. You could add something similar to prove you have it working.
If it's not, you see that display statement for every input segment.
Ed Goodman :
- UserExit gets called, I did check with display statement including DISPLAY 'START DB LOAD' . Had to remove displays because of additional overhead and to avoid operations team questions.
- Unload without userexit completes in 60 sec in prod and in 80 seconds in test (approx).
- You may be spot on with program not being resident. I will check on this.
I don't see multiple volumes but one in job log. I will check with storage support to confirm.
Like I said, this was 11 years ago. BMC may have changed something by now. I just remember that they couldn't help us then, and that the instructions/hints to change the compile were in the BMC manual.
Mansab, just changing the compile will NOT work. You also have to work with the link editor. The item you asked me to elaborate on is about changing the options that get used during link-edit.
If you are on Enterprise COBOL, you'll want to use what's in my second post dealing with the CEE version.
From my current BMC manual:
You may receive positive results by using NORENT and NODYNAM as compile options.
When using a COBOL/370 exit with the Unload function or the Reload function, you
may need to assemble an application-specific copy of module CEEUOPT with
RTEREUS(ON) and TRAP=OFF. If your current LE/370 run-time keywords module
specifies RTEREUS(OFF) and TRAP=ON, you can assemble a CEEUOPT module with
RTEREUS(ON) and TRAP=OFF to another library and INCLUDE it in the link-edit of your
user exit. The CEEUOPT module must be assembled with AMODE(31). For details
about the LE environment, see the IBM Language Environment manuals.