|
There are some pretty decent examples of this "new" style of RPG on my site. http://www.springfieldtn.net/users/leslier/downloads/smbex.zip Oh, btw as Barbara has already stated she sent me her article on C data types. Here's the link http://www.springfieldtn.net/hintsandtips.html Thanks to Barbara! If anyone has any other hints and tips to submit I will gladly post them. > In the interim, it is actually quite easy to write RPG IV code that looks > familiar to RPG III's style. Instead of writing things in the "function" > style, use a more traditional "call" style, so that eval > result=function(parm1:parm2:parm3) becomes callp > function(parm1:parm2:parm3:result). The definitions will continue to look > weird until we get used to the D specs, but you can hide those definitions > in a /COPY member so that your code looks something like this: > /copy funcdefn > ... > callp function(...) > > Which isn't so far from > /copy subrdefn > ... > movel xxx parm1 > exsr subroutine > As for the specific examples of the C function calls, they can be found in > the Unix-type API manual. There's some initial confusion trying to mentally > convert the C data types into RPG data types; Barbara Morris posted this > table a while back: > > Even though int * is a pointer, it can be thought of as an int > passed by reference, so it's better to prototype it in RPG as > an int passed by reference. My own rules for converting C > prototypes to RPG prototypes are as follows: > > C | RPG > ----------------|------------------------------------------- > int, long | 10i 0 value > unsigned int | 10u 0 value > double | 8f value > int * | 10i 0 > unsigned * | 10u 0 > double * | 8F > char * | * value options(*string) > void * | * value > | OR LIKE(someStructure) > XXX | value LIKE(XXX) > XXX * | LIKE(XXX) > ... (ellipsis)| figure out what the ... stands for > | and make one or more prototypes to > | match the various combinations, possibly > | with OPTIONS(*NOPASS) on some parms > > Where XXX is some struct/union, defined in RPG as a data structure. > > This part is for those advanced folks who know C and are creating > RPG prototypes for homegrown C functions (i.e. not part of the C > runtime): > Also, watch out for C's widening rules. Even though > short = 5I 0, when it comes to passing parameters by value, > short=10i 0 and char=10u 0. These differences don't always > cause a problem since the use of registers to pass parameters > can cause these differences to be hidden. Luckily, the C > runtime rarely if ever has short or even char parameters > passed by value. Unfortunately, C doesn't ALWAYS widen - it > depends on the absense of a #pragma nowiden. > (We have some help for this widening problem coming in a > future release of RPG) > > Buck Calabro > Aptis; Albany, NY > > > -----Original Message----- > > From: boothm@earth.Goddard.edu > > Sent: Friday, January 14, 2000 12:20 AM > > To: RPG400-L@midrange.com > > Subject: Re: Where's the RPG code in the IFS example? WAS: Having > > problems ac cessing 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. > > > +--- > | 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 > +--- -- L. S. Russell Programmer/Analyst Datrek Professional Bags, Inc. 2413 Industrial Drive Springfield, TN. 37172 mailto:leslier@datrek.com http://www.datrek.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.