|
I started working on the IBM S/38 back in 1982 and on the AS/400 in 1988. In school I learned
Basic, Cobol, Fortran and machine code. We wrote our programs using computers from Norsk Data (ND),
and my first basic programs were entered on a lineprinter like terminal (no display!). When I
started on the S/38 I remember that I thought the editor (SEU) and language (RPG III) with
it's cycle were old fashioned and poor on features. Since then RPG have matured and grown into a
"not so bad" language, especially with the introduction of ILE.
Back in 1987 I read in News/3x magazine (now News/400) about an MI compiler for the S/38 from
a company called SoftCommand. We ordered a copy and started investigating the internals of our
system. The QSYS programs could be debugged then, so you could find out a lot of interesting stuff
if you were patient and had a lot of time to spare. DMPSYSOBJ where a command I often used at the
time.
When we got our first AS/400 (a B30), we set up an exit program on our programmers menu to
send the MI source to the S/38. On the S/38 the received source were compiled. If the compilation
was successful, the compiled program were sent back to the AS/400 and restored, automatically, to
the object library specified on the programmers menu. If unsuccessful, the compiler listing was
returned. Luckily IBM soon released the QPRCRTPG API, and we could write our own "front end", the
CRTMIPGM commmand.
I want to share some of my programs with other AS/400 programmers. Hopefully they will prove
useful, educational or entertaining to some of you.
The programs and source code presented on these pages are provided on an "as is" basis and I
cannot take any responsibility for any damage caused by using them. They have been developed on
some of my spare time during more than 10 years.
As API's have grown in numbers, I have tried to use them in stead of accessing internal objects
directly. A few program requires security level 30 or less, unless you know how to "patch" them to
become "System state" programs.
24th January 1999
|