Re: PL/AS documantation.

"Charles Bailey [email protected] [H390-MVS]" <[email protected]> Fri, 4 Oct 2019 23:25:42 -0500
Newsgroups gmane.comp.emulators.hercules390.mvs
Message-ID <[email protected]>
 >Hello!
 >I know what most of the PL (whatever) languages are, but I am
 >wondering how many of the group would know what that one is. How about
 >explaining to us what that dialect is.
 >
 >For my part I would give anything for both a HAL/S compiler and
 >extensive documentation for VM/370 Release 6, and even a PL/Z one of
 >both.
 >-----
 >Gregg C Levine [email protected]
 >"This signature fought the Time Wars, time and again."

PL/AS was a follow-on to PL/S3 and was superseded by PL/X.  I did 
extensive programming in PL/X back in the 80's and 90's when I was 
working for IBM.  The compiler and the documentation were IBM Confidential.

It had typical high-level language constructs, but was actually a fairly 
low-level language.  There were no I/O routines or data conversion 
functions built in.  It didn't support floating point variables.  You 
could imbed assembler code inline with PL/X code. To call system 
functions to allocate memory, perform I/O, etc., you could define 
certain variables as being assigned to certain registers and then enter 
assembler-level statements, but using PL/X syntax.  Stuff like:

     Restrict (R0, R1, R15);    /* don't remember the exact syntax */
     R0 = some_value;
     R1 = Addr(some_parameter_block);
     SVC(120);
     IF R15 = 0 THEN DO;
               goodness code
     ELSE DO;
            handle error condition
     END;
     UnRestrict (R0, R1, R15);    /* don't remember the exact syntax */

I guess you could say that it was a structured, high-level assembler 
language.

The output of the compiler was assembler code.  Creating an executable 
program consisted of 3 steps:
1) Compile
2) Assemble (we used Assembler H in those days)
3) Link edit

It had a fairly powerful macro language that was run as a preprocessor 
stage.  I wrote a lot of PL/X equivalents of various assembler macros to 
make things easier: like GETMAIN, FREEMAIN, OPEN, CLOSE, PUT, GET, READ, 
WRITE, etc.  (I suppose there were official PL/X versions of those 
macros but either they were in a restricted library that I didn't have 
access to or I just liked to roll-my-own.  Don't remember at this point.)

Back when MVS was our primary operating system I wrote a bunch of ISPF 
dialogs in PL/X for invoking the tools we used.

There was also a version of the compiler for AIX.  For that version, to 
do system-level stuff, you called C function library routines from 
PL/X.  They created a new string type, STRINGZ, or some such, to tell 
the compiler that these were C-style null-terminated strings.

At one time I had an OS/2 version of the PL/X compiler on my home PC.

Charles Bailey