Here is follow-up to better describe the issue, then maybe you can suggest a more appropriate method to accomplish a solution:
We do all report distribution via email.  EM_Address file exists to lookup keys and send report to various recipients.
I have an email CL command SNDEMAIL which runs a CL pgm to roll thru file below and send reports to various recipients.
I want to show keys of this file in the msg of the report.  I wanted to OVRDBF FILE(EM_Address) POSITION(*KEYAE 3 *N INVENTORY STATUS EOD) and RCVF all three keys for the two matching records and show them in the msg of the email.  After this is done, repeat - ie there can be multiple sets of email keys to print (not just the one).
When users want to add/change recipients, it is very easy to identify which records in the EM_Address file require attention (because the keys will show on each email).
We are on v5R4, so I was not able to find an easy way to position to a group of records using CL - I could do one group, but not multiple (once OVRDBF positioned the cursor and RCVF opened the file, any additional RCVF commands would simply read the next record in key seq).
I am able to build the list of keys and print them in the email without doing anything.  The trick was that they want to show "(key not found)" next to any requested keys that don't have records in the EM_Address file.  RCVF would tell me if the FIRST one existed or not, but subsequent RCVF would read the next record instead of the keys that I needed to read.
I ended up using a small COBOL pgm to check for key existence and return a parm if found or not.
EM_key1	EM_key2	EM_key3	seq	target	em_address
------------------------------------------------------------------
AR		AGING		EOW		1	*TO		john.doe@xxxxxxxxxxx
AR		AGING		EOW		2	*CC		sally.doe@xxxxxxxxxxxxx
INVENTORY	STATUS	EOD		1	*TO		warehouse.manager@xxxxxxxxxxx
INVENTORY	STATUS	EOD		2	*FROM		sysop@xxxxxx
G/L		TRIALBAL	EOM		1	*FROM		sysop@xxxxxx
G/L		TRIALBAL	EOM		1	*TO		FINMGR@xxxxxxxxx
-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of CRPence
Sent: Wednesday, May 30, 2012 4:57 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Re: RCVF - how to do multiple CHAINS in one CL pgm
   The true intent can not be divined from what little is given to 
describe the scenario, but if CL must be used, then what about using 
OPNQRYF to get the desired key values.  Then loop through those selected 
rows with the RCVF, omitting\ignoring any values\rows that do not match 
what is desired within the CL?  That would be just one full-open, and 
the Receive File request would share the ODP of the Open Query File.
Regards, Chuck
On 30 May 2012 14:19, Stone, Joel wrote:
Ooooh - that's it!!
Makes sense - I will give this a try.
Jeff.Nyco on Wednesday, May 30, 2012 3:51 PM wrote:
The technique requires the use of CPYF, using the record/field
selection, to copy the 1 record you need into a work-file you have
opened, then use a simple sequential RCVF.
As long as you don't hit EOF (CPF0864 I think) and close the file,
you can read any records, just like a CHAIN.
  <<SNIP>>
Stone, Joel on Wednesday, May 30, 2012 1:46 PM wrote:
I have a CL loop as follows:
Top:
Load keyValue
OVRDBF     FILE(TestFile) POSITION(*KEYAE 1 *N &KeyValue)
rcvf
monmsg (cpf4137 cpf0864) exec(deal-with-it) /* <ed: addendum> */
goto Top
The OVRDBF positions the file ONLY the first time thru
(apparently it only positions for the NEXT file open).
How can I read the record that I need (using keys) several
times in on CL run?
As an Amazon Associate we earn from qualifying purchases.