Hi -
I'm sorry about the delay. We had problems at work Thursday and even
though I'm a software person, not hardware, I only live a mile away, so I
lost part of that evening dealing with a network switch that died and
moving our Perle controller to a different switch so that our twinax
printers could print invoices and barcodes so that we could deliver to our
customers.
You're right about my not having a full understanding of this. So I rely
on Simon Coulter, who wrote back March 2000
(http://archive.midrange.com/midrange-l/200003/msg01449.html):
Specify the BlockingFactor on the OVRDBF command according
to the effect you want to achieve:
OVRDBF NBRRCDS(BlockingFactor) controls the number of records
brought from DASD to main store.
OVRDBF SEQONLY(*YES BlockingFactor) controls the number of
records moved from main store to program storage (i.e., program
record buffer).
While those two statements are correct in what they say, there are
incorrect implications. The set of records referenced by NBRRCDS and the
set of records referenced by SEQONLY are NOT NECESSARILY THE SAME RECORDS!
To not get into a long explanation ... NBRRCDS works on strictly a physical
basis, reading in a chunk of disk, so it is always in RRN sequence and so
far as I can tell, includes deleted records.
SEQONLY works on a logical basis, bringing from the various locations on
the disk via the requested access method, the number of records requested.
If access is by key, if there is select/omit, or if there are deleted
records, the record sets aren't the same.
NBRRCDS can be used for both sequential and keyed I/O. SEQONLY
can only be used for sequential I/O.
Sequential I/O + NBRRCDS + SEQONLY = BlindingSpeed
I definitely DO NOT agree with that last statement. IMO, except in rare
circumstances NBRRCDS and SEQONLY should NOT be mixed. If the record sets
are identical, you're not really going to gain anything. If they aren't,
it is more likely to HURT performance than to help because NBRRCDS will
include records that are likely to be paged back out before they are needed.
In general terms, if you can use SEQONLY, use that and do not use NBRRCDS.
Note: if the default number of records is okay and you are using RPG IV,
you can use BLOCK(*YES) on the file specification and not need
SEQONLY. You also can use BLOCK(*YES) (even in combination with SEQONLY)
to convince the compiler to request record blocking on a file where it
wouldn't ordinarily (such as an input file that uses SETLL or CHAIN).
Use NBRRCDS where SEQONLY doesn't work (such as a file opened for update)
and where the records will be largely processed in RRN order without
skipping records.
I don't believe I've misused the context with which this was posted, but
correct me if I have.
Based on Simon's statements, you were correct in what you were doing, but
as I have indicated, I don't believe Simon's statements are fully correct.
> Why don't you post more of the program code.
Ask, and thou shalt receive...
Hmm .... I had the same experience as you. No matter what I did with the
override, the RCVF insisted on a single record at a time. An RPGIV
program, OTOH, was able to use record blocking with the same file and override.
It appears that the CL compiler puts something into the file access that
forces no blocking. I couldn't find it documented though.
Since this request is from the program, not the database programs, that's
why there is nothing in the job log about it.
This is a situation where you could just drop the SEQONLY (since it isn't
doing any good), and since the file is unkeyed and shouldn't have any
deleted records, it is warranted to use NBRRCDS to help performance.
There is nothing in the job that will tell you that the NBRRCDS is
working. Unlikely SEQONLY, the ODP display will not show that multiple
records are being retrieved because it is at a SLIC level, not at a program
level.
Ken
http://www.ke9nr.net/
Opinions expressed are my own and do not necessarily represent the views of
my employer or anyone in their right mind.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact
[javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.