PL/I

From Wikipedia [L1 ], the free encyclopedia:

PL/I ("Programming Language One", pronounced "pee el one") is a computer programming language designed for scientific, engineering, and business applications. It is undoubtedly one of the most powerful programming languages that has ever been created. It has been used by various academic, commercial and industrial users since it was introduced in the early 1960s, and in fact is still actively used today.

escargo 17 Jan 2007 - And still in active development at http://sourceforge.net/projects/pl1gcc/

PL/I for OpenVMS[L2 ] is in active development and fully supported by Kednos Corp http://www.kednos.com

An extended version of PL/I, EPL, was the programming language for the implementation of Multics.

Also known as PL/1 (where the discussion on the topic also exists).


Imported content…

mytest:

    proc(cmdArgs, envBlk) options(main);

 dcl
    cmdArgs char(127) var,
    envBlk char(127);

 dcl
    (max, i, j) fixed bin,
    base_page_ptr ptr,
    1 base_page based (base_page_ptr),
      2 pad1 (32) fixed bin(15),
      2 psp_seg fixed bin(15);

 dcl
    cmdLine_ptr ptr,
    cmdLine char(127) var based (cmdLine_ptr);

 dcl
    dateNow char(6),
    timeNow char(9);

 dcl
    junk_waffle fixed bin(7) static initial (20);


    dateNow = DATE();
    timeNow = TIME();
    put skip list (dateNow); put skip list (timeNow);
    put skip edit (substr(dateNow,3,2),'/',substr(dateNow,5,2),'/',substr(dateNow,1,2)) (a(2),a,a(2),a,a(2));
    put skip edit (substr(timeNow,1,2),':',substr(timeNow,3,2),':',substr(timeNow,5,2),'.',substr(timeNow,7,3))
                  (a(2),a,a(2),a,a(2),a,a(3));
    put skip list ('');

    unspec(cmdLine_ptr) = '0080'b4;
    put edit ('command line = ', cmdLine) (a);
    put skip list ('');

    unspec(base_page_ptr) = '0000'b4;
    put edit ('PSP segment = ', unspec(base_page.psp_seg),'h')
             (skip,a,b4(4),a);
    put skip list ('');

    i = length(cmdArgs);
    put edit ('cmdArgs = ', cmdArgs) (a);
    put skip list ('');

    put list ('env = ', envBlk);

    i = '12bc'b4;
    put edit ('i = ',unspec(i),'h') (skip,a,b4(4),a);

    return;                /* just for aesthetics */


    end;          /* of main program */

LV Anyone know why this page was created? Generally someone adds a note giving us some context.

escargo - I'm especially mystified because they got the name of the language wrong (it's PL/I). There is work being done on a PL/I front end to the GNU C compiler; I understand that they are looking for language samples to compile. - RS Thirty years ago, I did some PL/I (or, rather, the "student" subset SL/I) on an IBM 1130... but is PL/I any more than a museum piece today? Long time ago, it was praised as fusion of Fortran and Algol, with some COBOLity thrown in :^) KPV PL/I was the first real language I learned twenty five years ago. Don't remember much of the language except that I remember that C seemed trivial afterwards.

escargo I was an operator for an 1130 more than 30 years ago. I always had a fondness for the card reader/punch. (Makes me wonder if there are any 1130 simulators out there somewhere.) - RS: see http://ibm1130.org/sim

LV Well, I know at least one company which has production code written in PL/I... several hundred thousand lines of code, as a matter of fact. I don't know about other sites.

VK FWIW I consider this page is just off-topic here. No Tcl content, waste of reader's time. Just adding irrelevant information will not do anything good.

CLN I've never worked in PL/I (PL/1) myself but I remember someone once telling me about PL/C (PL/I for College students) which, he claimed, tried so hard to give a compiler warning and guess what the user meant that it would compile a Shakespearean sonnet. ;-)

VK so that PL/1 forgives much errors, could be interesting... but I still fail to understand why this discussion belong here. To continue off-topic, here my PL/1 chunk of correct code of interest:

 if then then then=else; else else=then;

OTOH I must ask for wiki gnomes to delete this entire page! (I am too shy to do this myself)

TP VK's example shows off PL/I's purposeful lack of reserved words. Not every PL/I compiler supported this feature, but it was certainly present in the PL/I compilers that I used (IBM PL/I Optimizing compiler & PL/I C). Instead of reserved words, the compiler parsed purely by context. Other interesting features that I remember using:

  • a very elaborate pre-processor, really a mini-PL/I. Makes C's pre-processor look very anemic. if/then/else, do-while, etc. all in the pre-processor. Code that writes code? Hey, Tcl does that too!!
  • variable labels. GOTO SOMELABEL could go here, there, or somewhere else depending on its value. Made maintaining code written by former assembler programmers very interesting.

I don't see the controversy of having a PL/I page on the Tcl wiki. Since it is now a GCC front-end language, someone could conceivably write a Tcl extension with PL/I. Note that the wiki already has pages for Cobol, Fortran, APL, Smalltalk, Haskell, Basic, and other languages that may not have a direct relationship with Tcl.

LV VK, alas, the gnomes can't delete the page - the best we can do is delete the contents. As for the controversy, if I knew why the original creator put the code on this page, I'd have some opinion about whether to delete the page or not ;-)

escargo - Does anybody see what's being done in the PL/I code to be able to write the equivalent in Tcl?

VK Chunk of code here mostly demostrates variables declarations; this program essentially does nothing: it outputs date and time, in raw format first, then in edited format ('put skip edit' line), then outputs program arguments. It contains only single comment /* just for aesthetics */ which is just not wise (actually this is a good example of bad commenting style). Sample code does not look good even for language demonstration purposes, looks like someone's test program: its named mytest, what do you want from it? It is not even PI calculation! I dislike it. Garbage!

PL/1 is happen to be my very first language, and its time is now long in the past. Interestingly, other languages from that time survived better. I meant LISP among interesting ones, which is very interesting from Tcl perspective. Even Fortran deserves more attention, as there are many scientific libraries working with it.

escargo - To me this says that something has displaced PL/I, something better. That leads to the question of, "Better how?" Comparing this to Lisp and Fortran, saying that PL/I's popularity did not endure so well, one may ask, "How can Tcl fare better than PL/I did?" Is there anything that we can do for Tcl to help it retain what popularity it has?