View previous topic :: View next topic
|
Author |
Message |
syamaprasad pg
New User
Joined: 04 Jul 2012 Posts: 2 Location: UK
|
|
|
|
Hi,
I am writing an Z/os C++ program to extract and process data from a VSAM KSDS file. The program is called by a PERL CGI script running under Z/os Webserver.
It all worked fine untill I increased the number of records in the VSAM file to around 10000. Then I saw a significant reduction in the response time of VSAM. This in turn resulted the CGI script to timeout and a "no responce" message to the web user.
When I tried tweaking the db performance by increasing the BUFND/BUFNI I found that there is nothing similar to MODECB or ACB in C/C++ , where I can give these parameters. fopen or fread/flocate doesn't accept any "AMP=" parameters. I can't use a DD statement to override BUFND/BUFNI (since this program is running under webserver). I don't think I can use __asm in c++ to supply assembler call to modecb(even if I can I don't know where I will get ACB name from ) .
Is this possible at all in C/C++? (i.e passing of AMP= parameter without using JCL DD statements?).
METAL C is not an option for me since I use STL in my programs :-) |
|
Back to top |
|
 |
Bill O'Boyle
CICS Moderator

Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
The only thing that comes close is the "FIELDS" keyword of the "SHOWCB" Macro, where you can specify -
BUFNO - Number of buffers used for the data or index component.
As you've said, "BUFNI" and "BUFND" are normally defined at the "ACB" level.
Is there an equivalent to the "IFGACB" Macro in C/C++?
At X'10' of the above DSECT, you'll find label ACBBUFND and at X'12' you'll find ACBBUFNI. Both are aligned halfwords.
To establish addressability (R10 used as an example with VSAMACB the label for the ACB) -
Code: |
LA R10,VSAMACB POINT TO 'ACB'
USING IFGACB,R10 INFORM ASSEMBLER
OPEN ((R10),(INPUT)), OPEN ACB AS 'INPUT', AMODE=31 X
MODE=31
|
HTH.... |
|
Back to top |
|
 |
Robert Sample
Global Moderator

Joined: 06 Jun 2008 Posts: 8692 Location: Dubuque, Iowa, USA
|
|
|
|
Have you tried an ALTER on the cluster to give it more BUFFERSPACE? |
|
Back to top |
|
 |
syamaprasad pg
New User
Joined: 04 Jul 2012 Posts: 2 Location: UK
|
|
|
|
Hi ,
Thanks for the quick replies
1) Alter on BUFSPC did't seem to do much for my program performance. At last I was able to achieve some of my performance goals by changing the program logic.
But since the AMP= parameters are so readily available for assembler , I am failing to see the reason why it is not open for a c++ program.
Still like to pass these parameters via the program and see if it gives some boost to my pgm.
2) I haven't found any VSAM assembly macro equalivant code for C++. Didn't find any thing that points to an ACB structure. It is all so well hidden :-). Did go thru the pseudo hlasm code generated by the compiler and searched for any mention of ACB. None so far. |
|
Back to top |
|
 |
|