On 4/3/2012 3:23 PM, Frank Swarbrick wrote:
Current program does the following (in COBOL!).

- Opens KSDS for I-O
- Sequentially processes another file (non-VSAM).
- For each record in the non-VSAM file it attempts a random (keyed) read of
arecord on the KSDS file. The key is, essentially, a concatenation of a record
type code ('4' or '5') and an account number. If no record of type '4' is found
then it tries again for the same account, but with record type '5'. If either
the '4' or '5' type is found it updates it and rewrites the record (assuming the
data changed).

This takes about 16 minutes to run. However if the 'type 5' logic is
removed,so that it only ever looks for type '4' records, it takes only about 
one minute.

Our resident VSAM expert says it has something to do with the VSAM "sequence
set" and the fact that only one is kept in memory at a time. Since the same
sequence set doesn't appear to be able to be used for both the 'type 4' records
and the 'type 5' records it's constantly going back and forth, loading the
"other" sequence set from disk. He says on VSE (which we were up until May 2010)
more than one sequence set can be in memory, but with MVS this appears to not be
the case.


Hopefully that reason is accurate. Is there a solution? We thought about
having two COBOL FDs pointing to two DDs, where both DDs pointed to the same
KSDS. This would probably(?) work, except for the fact of the update.

Thanks,
Frank

Well, I think we have a vocabulary problem. A VSAM KSDS only
has one primary index, and the lowest level is the sequence
set. You can't have two primary indexes, so you can only
have one sequence set. It's not clear how your key is constructed,
but  you can get the whole sequence set in memory by using the
right JCL DD parameters.

First do a listc all against the cluster. Jot down these
values: CI/CA for data component (shows as "PHYRECS/TRK"),
and Levels in the index; then try this:

if this process is batch, and no CICS processing is going
on against the data set, consider adding:

  BUFNDI=#Index_levels,BUFND=(2*PHYRECS/TRK)+1


If, on the other hand, your type '4' records are accessed as
the primary key and your type '5' are accessed as part of
an alternate index, you might need a different collection of
DD parameters. (Long shot guess: add BUFNDI on the DD statement
for your AIX).



--

Kind regards,

-Steve Comstock
The Trainer's Friend, Inc.

303-355-2752
http://www.trainersfriend.com

* To get a good Return on your Investment, first make an investment!
  + Training your people is an excellent investment

* Try our tool for calculating your Return On Investment
    for training dollars at
  http://www.trainersfriend.com/ROI/roi.html

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN

Reply via email to