|
Hi Hans, Answers in line -- or more questions... ----- Original Message ----- From: "Hans Boldt" <boldt@ca.ibm.com> Sent: Thursday, July 11, 2002 12:28 PM Subject: Re: IFS in RPG > Peter Dow wrote: > > I think the questions should be "what's the best way to integrate the IFS > > with RPG's file handling?" > > > > I'll throw out a few ideas and you can all shoot holes in them: > > > > On the Filespec: > > 1. Only allow Input or Output on the file spec. > > 2. Don't put a record length. > > 3. Add a keyword for the external file name similar to the member name > > now available in v5r1. > > In other words, you end up with a file spec that has next to nothing > in common with other forms of file spec. What difference does it make what it has in common with other file specs? I mean, is that a technical argument against it? Does a WORKSTN filespec with a subfile have a lot in common with a DISK file spec? Does it have to in order to be a part of RPG? Besides, let's see, they both have an F in pos.6, an internal file name, a I or O in pos. 17, pos.18 (File Designation) could be I for IFS, or you could use pos.35 (File Organization) to indicate it's an IFS file, keywords could be used as I said for the external file path/name and other things that might be useful. fPATSELD cf e workstn indds(PATSELDind) f sfile(PATSELS1:S1RRN) fUB92s ipe f 133 disk fUB92i o e disk fXYZ ii v disk path('/home/test/XYZ.txt') So how much in common do all the above file specs have? > > For the Calculation specs: > > 1. Use the READ into DataStructure format. This could work a couple of > > ways: > > a. Read delimited -- read the input stream into a separate DS > > subfield, using EVAL rules, up to user-specified delimiter. > > b. Read by size -- read x characters into the DS, where x is the > > size of the DS. > > 2. Use the WRITE from DataStructure format. Again: > > a. Write delimited. > > b. Write by size. > A better approach would be to read into and write from varing length > character variables. That's easy -- the data structure could simply have variable length subfields. RPG should be able to handle it either way. With an overflow error if the stream data overflows a particular subfield (either fixed or variable length). > In other words, you'd end up with I/O opcodes that have next to > nothing in common with other forms of I/O opcodes. This "nothing in common with" argument is really irritating, and has nothing to do with whether this is possible, desirable, feasible or even a good or bad idea. Nevertheless, what's in common with the following? c write UIREC c read XYZ IFSds c read(E) FILEA DATA1 c "Enter nbr" dsply ABC c exfmt FMTabc Should they not be used if they have nothing in common with each other? Perhaps removed from RPG? > > It doesn't have to handle every possible way to read/write a stream file, > > just the most common. > But when you have to handle some less common case, you'd still end > up having to call the Posix routines directly anyways. And face it, > those routines aren't all that difficult to deal with. How often will I have to handle a less common case? What case couldn't be handled by the above suggestions? > What's the > difference between learning some new RPG function and learning how > to call some API? (Well, there's one difference - if you learn the > API, you'll also be able to use it when programming in some other > language as well!) Given that some API's can be quite complex (see Scott Klement's explanation of the API that he says requires a PhD in pointers to understand), I'd have to say "it depends". Or you could take Scott's tack and dump RPG's file i/o altogther, since it can obviously be done using the Posix API's. Although Scott doesn't actually do it because it makes his code difficult for other programmers. Isn't that a clue? Sure, every programmer out there can write their own procedures and service programs to handle the most common IFS I/O requirements. They could also write their own routines to do date & time handling. Would that be a good thing? Or is your real objective here to talk us out of using RPG altogether? Actually, when I have the time, I do want to learn Perl and Java. For now, the demand is for RPG, CL, and VB. Maybe when I retire, or figure out how Simon Coulter manages to find the time to do it all. Regards, Peter Dow Dow Software Services, Inc. 909 793-9050 voice 909 522-3214 cellular 909 793-4480 fax
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.