|
Comments in line. Solution at bottom.
Gary Guthrie
MWalter@hanoverwire.com wrote:
>
> If I understand your question, you'll have to create a logical file over
> the physical in order to do random I/O (ie. setll/read, chain).
Actually, you need a FORMAT file, and that can be either physical or
logical. This file is created without even a member.
> You can order your physical file with an OPNQRYF but that really should be
>used
> only for sequential processing.
Why are you of this opinion? You should access the results of the
OpnQryF however you want to, sequentially or randomly.
> The access path (Keyfield(s)) has to exist over the file for your RPG program
>to compile.
Not quite right. The definition of the key structure must exist, not an
access path. This is the format file's role - to define the key
structure. The format file is simply a shell - it contains neither data
nor access path. It is a memberless file.
Muralidhar.N@blr.hpsglobal.com wrote:
>
> I ve a file DAHDRT00(which doesnt ve keyfield) ,Iam doing opnqry by taking
> 3fields frm the file as 3keyfields) mentioned in ascending order on this
> file in my CL ,from there iam calling RPG ...Can i mention Record address
> type "k" on this file in my rpg prog? and do chain or use setll and read
> ?kindly suggest me ! here the code
>
> OVRDBF FILE(DAHDRT00) TOFILE(*LIBL/DAHDRT00) +
> MBR(*LAST) SHARE(*YES)
> OPNQRYF FILE((*LIBL/DAHDRT00 *LAST)) +
> KEYFLD((DAHDRFCD *ASCEND) (DAHDRGRF +
> *ASCEND) (DAHDRHFL *ASCEND))
> CALL PGM(*LIBL/DAD0070) PARM(&RTCODE)
> CLOF OPNID(DAHDRT00)
> DLTOVR FILE(*ALL)
Murali,
You can accomplish your goals using a format file to define the key
structure you need. You'll need to create a format file (I've called it
DAHDRT00F for the example). Use this format file in RPG as if it were a
normally database file. You'll need to modify your CL and I've included
a sample of that along with samples for the DDS for the format file and
RPG.
Format file structure DAHDRT00F (specify source type LF):
A R YOURREC PFILE(DAHDRT00)
A K DAHDRFCD
A K DAHDRGRF
A K DAHDRHFL
where YOURREC is the same record format name as specified in DAHDRT00.
Then in CL:
OVRDBF FILE(DAHDRT00F) TOFILE(*LIBL/DAHDRT00) +
MBR(*LAST) SHARE(*YES)
OPNQRYF FILE((*LIBL/DAHDRT00 *LAST)) FORMAT(*LIBL/DAHDRT00F) +
KEYFLD((DAHDRFCD *ASCEND) (DAHDRGRF +
*ASCEND) (DAHDRHFL *ASCEND))
CALL PGM(*LIBL/DAD0070) PARM(&RTCODE)
CLOF OPNID(DAHDRT00)
DLTOVR FILE(DAHDRT00F)
RPG program DAD0070 (free format version, translate to fixed-format if
necessary):
FDAHDRT00F IF E K Disk
/Free
SetLL *Start DAHDRT00F ;
Read DAHDRT00F ;
DoW Not( EOF%( DAHDRT00F ) ) ;
.
.
.
Read DAHDRT00F ;
EndDo ;
*InLR = *On ;
/End-Free
You can also use Chain.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.