• Subject: Re: Ext-desc I/O using data structures (was:Field recordrelatio
  • From: David Morris <dmorris@xxxxxxxxxxxxx>
  • Date: Thu, 02 Apr 1998 09:13:28 -0700


It would be nice.  The only reason I knew about the restriction was because I 
tried to do this.  If it means putting off other items I would rather see 
effort applied to areas that enable us to do that absolutely cannot be done 
today.  For example, pointer support opened a lot of doors as will variable 
length fields (for return data) .  Those two enhancements allow us to do in RPG 
what used to require MI or C.  For me the top issue is the inability to pass a 
variable by reference through a program if it allows *OMIT or *NOPASS.  Of 
equal importance to me would be an OPTIONS(*vartype) with operational 
descriptor support.  Next priority would be that CONST be supported based on 
address rather than code analysis.  Next would be debug support for pointers in 
data areas and the ability to set a watch on an address.  Next would be to 
allow based variables to be exported directly (if it can be done by exporting 
the pointer why can't the compiler allow this).  I could go on but these 
constraints are much more bother and sometimes require coding that borders on 

Thanks for the interest,

David Morris

>>> Hans Boldt <boldt@ca.ibm.com> 04/02 6:38 AM >>>
Hi David!  Yes, you're right.  DS I/O is not allowed for ext-desc files in

Would you (or any other RPG programmer watching) like that limitation
removed in a future release?  IMHO, ext-desc data structures are very
useful and we should do more to support them.

Hans Boldt, ILE RPG Development, IBM Toronto Lab, boldt@ca.ibm.com 

owner-midrange-l@midrange.com on 98-04-01 19:04:15
Please respond to MIDRANGE-L@midrange.com 
To: MIDRANGE-L@midrange.com 
Subject: Re: Field record relation indicators


I don't think you can read to a data structure with an external file.  Has that
changed?  Anyway I was under the impression (have no interest in finding out)
that the look ahead still works for program described files.  So I think you
might want to swap the data using an intermediate variable.  Or you could swap
pointers.  Create two based externally described files, in one prefix the
names.  After a record is read swap the basing pointers using an intermediate

d Rcd     E DS  extname(file) inz based(pRcd)
d Nxt      E DS  extname(file) inz prefix(Nxt) based(pNxt)

If I didn't need to compare the two record images I would just use a MODS and
use occur 1 for current record and occur 2 for look ahead data.  I agree this
should be very low on the priority list.  Back there with auto report and
increasing the number of level indicators.

David Morris

>>> Hans Boldt <boldt@ca.ibm.com> 04/01 8:31 AM >>>
Mark wrote:
>>If you need some sort of lookahead on sequential reads to an externally
>>described file, you could probably manage nicely using externally
>>described data structures and READ into DS.
> Wouldn't you still have to define the from and to positions in the
>look-ahead area?

No.  The technique I described works like this:  You define 2 externally
described data structures
(called, say, CURREC and LOOKREC) from the file you want to read from, using
PREFIX to rename
all the fields in one of them.  Keep the current record in CURREC and the
lookahead record in
LOOKREC.   To start reading, do:

       C                          READ        FILE              CURREC
       C                          READ        FILE              LOOKREC

To read the next record, do:

       C                          EVAL        CURREC = LOOKREC
       C                          READ        FILE              LOOKREC

| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com

This thread ...

Return to Archive home page | Return to MIDRANGE.COM home page