|
Hmmm, I like to program in C++ and I am a RPG programmer too, I know quite a few other programmers (more than 50) that also are multi-lingual and choose to program on the AS/400. I will program in what ever language my client wants me to, even APL :-) Every shop that does in house development should have a person who is technically competent and not afraid to crack the manuals or CD or web site what ever the case may be. I would venture to say also that this is not quasi C++ code, more like C than anything else. How would you access the IFS files without using APIs or C functions? MI??? (Hmmm I always wanted to find a project that would make learning MI worth it) What is needed is for AS/400 programmers to stop being complacent about their level of knowledge and push push push! Knowledge is power, and in my case money too :-) Sincerely Eric ______________________________________________ Eric N. Wilson President Doulos Software & Computer Services 2913 N Alder St. Tacoma WA 98407 ----- Original Message ----- From: <boothm@earth.Goddard.edu> To: <RPG400-L@midrange.com> Sent: Thursday, January 13, 2000 9:19 PM Subject: Re: Where's the RPG code in the IFS example? WAS: Having problems accessing IFS from RPGIV > Buck, I understand what you are saying. I even agree with it. The issues > are this though, imho. The laborious and old RPG code with the left-side > indicators is RPG. RPG programmers might not like the code but they > understand it and if they don't, they know where to look it up. RPG > professionals can be expected to deal with it. The quasi-C++ code though > could show up in any RPG shop any day and most all of the RPG programmers > I know would not know what is happening, where to look it up, or even who > to ask for help. I am not denying that this new C++ dialect is valid RPG > code. What I am suggesting is that Toronto is not-so-slowly walking RPG > away from the RPG programmers out there. I think the pursuit of the C++ > programming standard is really wrong because the ones that like and > understand C++ are going to code in C++; they'll never be applying for > jobs in AS/400 shops. > _______________________ > Booth Martin > boothm@earth.goddard.edu > http://www.spy.net/~booth > _______________________ > > > > > Buck Calabro <buck.calabro@aptissoftware.com> > Sent by: owner-rpg400-l@midrange.com > 01/13/2000 05:05 PM > Please respond to RPG400-L > > > To: RPG400-L@midrange.com > cc: > Subject: Where's the RPG code in the IFS example? WAS: Having problems ac cessing > IFS from RPGIV > > > Booth, > > One man's RPG is not the same as another's. Take this for example: > > FTRACEL1 UP E K DISK > ITOLLTAPE > I TOLLTAPE TAPE L1 > C NL1 DELETTOLLTAPE > This is a complete, useful program but there are more than a few people > who > would not "get" this at a glance. > > How about having to look at code like this all day: > C**************************************************************** > C* -AGAIN - READ THE PREVIOUS OR NEXT MASTER RECORD * > C**************************************************************** > CSR AGAIN BEGSR > C 08N61 16 READ ACIHST 61 > C 09N61 16 READPACIHST 61 > C 08N61 17 READ ACIHST08 61 > C 09N61 17 READPACIHST08 61 > C 08N61 18 READ ACIHST11 61 > C 09N61 18 READPACIHST11 61 > C 08N61 19 READ ACIHST10 61 > C 09N61 18 READPACIHST10 61 > C 61 SETOF 60 > C N60 EXSR CLEAR > > Or this beauty: > C CLRYY IFEQ REPYY > C CLRMM COMP REPMM 11 > C 11 CLRMM COMP FROMM 12 > C 11 12 CLRDD SUB REPDD HOLD > C 11 12 HOLD COMP 3 1313 > C 11 12 13 ADD 1 LTFIVE > C END > > The "c-like" example is pretty cryptic too, but don't blame RPG IV - the > above examples of RPG III fit into that category as well. Consider how it > would look with a few comments and "wrapping" the nasty code in a > procedure. > Notice that the mainline code here is exactly one line long. In a > "normal" > RPG IV program, I'd hide all these D specs in a /COPY member; they're > included here so you can see a compilable code snippet. > > * dftactgrp(*no) actgrp(qile) dbgview(*source) bnddir(qc2le) > > D OpenFile pr > D FilePath 255 const > D Error like(ErrorCode) > > * File open > Dopen pr 10i 0 extproc('open') > D * value > D 10i 0 value > D 10u 0 value options(*nopass) > D 10u 0 value options(*nopass) > > * Report errors > * #include <errno.h> > * > * int * __errno(void); > * > * > D errnoF PR * Extproc('__errno') > > ****************************************************************** > D ErrorCode S 10I 0 inz > > C Callp OpenFile('/QOpenSys/x.txt':ErrorCode) > C Seton LR > > ****************************************************************** > P OpenFile B > D OpenFile pi > D FilePath 255 const > D Error like(ErrorCode) > > D FileHandle s 10i 0 > D oflag s 10u 0 inz(0) > D o_rdonly s 10i 0 inz(1) > D o_textdata s 10i 0 inz(16777216) > D FileWork s like(FilePath) > D errnoP S * > D errno S BASED(errnoP) like(ErrorCode) > > * Because you can't set %addr against a CONST field, > * make a copy of the CONST field and use THAT address... > C eval FileWork=FilePath > > * Open file in text mode, read only > C eval oflag=o_rdonly + o_textdata > C Eval FileHandle=open(%addr(FileWork):oflag) > > * Call the "what error occurred" function > C EVAL errnoP = errnoF > > * Tell the calling function what error (if any) occurred > C Eval Error=errno > > P OpenFile E > > Here, all the "grunt work" is done inside the OpenFile procedure. The > mainline code has no idea whether you are opening a standard DB2 external > file, an IFS file or a socket. Rather than coding the procedure as a > "function" (which returns a value like "open" does), I wrote OpenFile to > return it's error code as a parameter - just like old-style RPG. It's > really a matter of preference more than anything else. > > By the way, you can't call these "c" functions from RPG III as far as I > know. You can only do this in an ILE language. > > Buck Calabro > Aptis; Albany, NY > > > -----Original Message----- > > From: boothm@earth.goddard.edu > > Sent: Thursday, January 13, 2000 12:39 PM > > To: RPG400-L@midrange.com > > Subject: Re: Having problems accessing IFS from RPGIV > > > > I know, I know, we gotta keep up, we can't be old-fashioned, we gotta > get > > with the program... but gee whizzzzz... > > > > where's there any RPG at all in this mystifying piece of RPGized-C++ > code? > > > > I'd bet that there are not 5 out of 100 qualified RPG programmers that > > can even begin to understand what is happening here. > > > > If someone asked me to do the same function in real RPG code I would be > > absolutely stuck. > +--- > | This is the RPG/400 Mailing List! > | To submit a new message, send your mail to RPG400-L@midrange.com. > | To subscribe to this list send email to RPG400-L-SUB@midrange.com. > | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: > david@midrange.com > +--- > > > > > +--- > | This is the RPG/400 Mailing List! > | To submit a new message, send your mail to RPG400-L@midrange.com. > | To subscribe to this list send email to RPG400-L-SUB@midrange.com. > | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
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.