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 :-)
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.