× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Where's the RPG code in the IFS example? WAS: Having problems accessing IFS from RPGIV
  • From: "Eric N. Wilson" <doulos1@xxxxxxxx>
  • Date: Thu, 13 Jan 2000 21:54:57 -0800

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 thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.