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



Hello Keith,

You wrote:
>Leif gave a nice bit of history about 2 months ago that mentioned PL/MI.

Yes, I saw that.  I recall I also added some information in a later append.

>Back in the S/38 days, IBM programs were shipped observable and supposedly
>it was possible for customers to even buy the source to CPF on microfiche
>(~$1500).  Times have definitely changed.

I don't know what the price was but it certainly was possible to get the
microfiche.  I beleive that stopped about CPF 5.0 which was the last release
for which you could get the CPF Data Areas Manual (all 6 volumes).  I know
neither of those things were available by CPF 8.0 because I tried to order
them.  The Data Areas manual was no longer printed and I don't recall why
the microfiche was not available.  I suspect the real reason they were
dropped is that it was simply too expensivce for IBM to maintain.  As
externally available documentation they must maintain certain standards.  As
internal only documentation the standards can drop.

>But I've always wanted know what PL/MI really looked like.  Is it basically
>PL/I with inline MI ?

In essence that is exactly what it is like.  Information about the internal
IBM compilers is IBM Confidential but I don't see the harm in a litle
background -- you can't do much with the knowledge!  PL/MI is a PL like
language with the ability to embed MI instructions for things that the
language or macro processor does not support.  PL/MI is largely a
macro-driven language where common structures and code are implemented as
macros that generate the relevant declare statements and supporting code.
These are real macros that GENERATE code rather than the trivial
substitution macros common in C.  For example, a structure such as the Work
Control Block would be mapped in a macro and brought into a PL/MI program by
an incantation such as:

        ? WWWCB INCDCL;

where the ? is the macro pre-processor trigger, WWWCB is the name of the
macro, and INCDCL is a macro keyword that tells the macro to generate the
declare statements for the WCB structure, subfields, constants, pointers,
etc. needed to access the WCB.

There are similar macros for calling programs (which automatically determine
if the program being called is in the SEPT and if so generates a call via
the appropriate SEPT entry otherwise it generates a standard call), sending
messages, and lots (I mean LOTS) of other things too.

Here is a trivial PL/MI equivalent to the ubiquitous HelloWorld program.
Caveats are that I haven't written any of this in years, no one outside IBM
has a compiler that can verify the code, nor create a working program from
it.

 /* ================================================================== */
 /*  My first PLMI program. Sends the 'Hello World' message to the     */
 /*  external message queue of the job.                                */
 /* ================================================================== */

 hworld: proc options(reentrant);
 dcl 1 msg,
       3 * bin(15) init(256),
       3 * char(256) init('Hello World');
 ? sndpmsg incdcl;
 ? sndpmsg topgm(*EXT) msg(&msg);
 end hworld;

Regards,
Simon Coulter.
--------------------------------------------------------------------
   FlyByNight Software         AS/400 Technical Specialists
   http://www.flybynight.com.au/

   Phone: +61 3 9419 0175   Mobile: +61 0411 091 400        /"\
   Fax:   +61 3 9419 0175   mailto: shc@flybynight.com.au   \ /
                                                             X
                 ASCII Ribbon campaign against HTML E-Mail  / \
--------------------------------------------------------------------



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.