There is a lot more to it than just opening multiple DCBs. If you did this IOS would queue the I/O and you would not get any benefit. You need to dynamically create new DD names and open your data set to these newly created DD names. When you create your channel programs you will need to make sure that the DEFINE EXTENT ranges do not overlap otherwise IOS will again queue your I/O. You also need to direct your I/O to specific locations in your data set. If the channel program issues standard READ CCWs eventually your channel programs will overlap. This is true with every I/O. The code required to determine which blocks should be read by which DD is not an insignificant piece of code. You will also need to make sure that you can recover from I/O interrupts correctly. Finally you will need the ability to put the buffers back in order if the input sequence is important.
If you are writing instead of reading, there are other challenges to overcome. I do not think this can be done using BSAM or QSAM. I think EXCP or lower is required. Before you undertake all of this coding it is important for you to understand where the bottleneck in your application is. If the longest leg is not the I/O that you are looking to improve on than all of this work will not buy you anything. John Reda Syncsort, Inc. -----Original Message----- From: IBM Mainframe Discussion List [mailto:[EMAIL PROTECTED] On Behalf Of Tom Quarendon Sent: Monday, December 17, 2007 4:04 AM To: [email protected] Subject: Exploiting Parallel Access Volumes Since I got such a good response from the last question, here's another. My understanding of channel program execution is that there is one queue per UCB, i.e per volume. In other words there isn't a huge amount to be gained by executing lots of concurent channel programs to the same file (you'd get some advantage, maybe, in that you'd be able to construct your next EXCP invocation and have the EXCP do all the prep work for it before actually checking that you previous one is done). Parallel access volumes however mean that there are potentially multiple UCBs per device and therefore multiple channel program queues. However if I examine the list of UCB associated with the extents of my file they are all the same. So is(are) parallel access volume technology something I can exploit in my application? The best I could presumably do is to allow multiple channel programs to be scheduled by my application against different extents in the file, but since my UCB addresses are all the same, that's not going to work. Is this an MVS configuration issue? i.e is there something that would need to be set up on the machine to allow this? Or is this more a case of different jobs will get different UCB addresses for the same volume, so they can be parallelized, but you can't exploit that within a single app? Searching on the web, Syncsort reckons it exploits PAV to get 30 percent improvement in elapsed time or something. I want a piece of that if I can get it. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html

