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