* [COFF] Of PL/I @ 2024-04-02 15:06 Dave Horsfall 2024-04-02 16:40 ` [COFF] " Clem Cole 0 siblings, 1 reply; 17+ messages in thread From: Dave Horsfall @ 2024-04-02 15:06 UTC (permalink / raw) To: Computer Old Farts Followers Has there ever been a full implementation of PL/I? It seems akin to solving the halting problem... Yes, I've used PL/I in my CompSci days, and was told that IBM had trademarked everything from /I to /C :-) -- Dave, who loved PL/360 ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 15:06 [COFF] Of PL/I Dave Horsfall @ 2024-04-02 16:40 ` Clem Cole 2024-04-02 17:01 ` Charles H Sauer (he/him) 2024-04-02 19:25 ` Stuff Received 0 siblings, 2 replies; 17+ messages in thread From: Clem Cole @ 2024-04-02 16:40 UTC (permalink / raw) To: Dave Horsfall; +Cc: Computer Old Farts Followers [-- Attachment #1: Type: text/plain, Size: 1304 bytes --] On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave@horsfall.org> wrote: > Has there ever been a full implementation of PL/I? Well all of the IBM, GE/Honeywell and DEC compilers were certified. Bob Freiburghouse (who was part of the Multics compiler if I understand this right), created a firm in Mass that built a number of commercial compilers for a number of folks, with PL/1 being their prime. In fact when DEC bought the PL/1 front-end from them (which was in PL/1 of course), Culter and team wrote the VAX back-end, they had to cross-compile in Cambridge (I think at MIT) and bring the assembler source back to ZKO in Nashua to assemble and test. > It seems akin to solving the halting problem... > No more than Algol-68 and many modern languages. > > Yes, I've used PL/I in my CompSci days, and was told that IBM had > trademarked everything from /I to /C :-) > I think that is more like an urban legend and IBM's notorious marketing behavior since Gary Kidall (who was originally a compiler guy) created PL/M for the 8080 and sold it to Intel. > > -- Dave, who loved PL/360 > Yeah - it might have been Nicklaus Wirth's best language. I still have the Standford manuals, but I can not say I have seen a working compiler since the late 1970s :-) ᐧ [-- Attachment #2: Type: text/html, Size: 3298 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 16:40 ` [COFF] " Clem Cole @ 2024-04-02 17:01 ` Charles H Sauer (he/him) 2024-04-03 16:18 ` Paul Winalski 2024-04-07 23:10 ` Dave Horsfall 2024-04-02 19:25 ` Stuff Received 1 sibling, 2 replies; 17+ messages in thread From: Charles H Sauer (he/him) @ 2024-04-02 17:01 UTC (permalink / raw) To: coff On 4/2/2024 11:40 AM, Clem Cole wrote: > > > On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave@horsfall.org > <mailto:dave@horsfall.org>> wrote: > > Has there ever been a full implementation of PL/I? > > Well all of the IBM, GE/Honeywell and DEC compilers were certified. Bob > Freiburghouse (who was part of the Multics compiler if I understand this > right), created a firm in Mass that built a number of commercial > compilers for a number of folks, with PL/1 being their prime. In fact > when DEC bought the PL/1 front-end from them (which was in PL/1 of > course), Culter and team wrote the VAX back-end, they had to > cross-compile in Cambridge (I think at MIT) and bring the assembler > source back to ZKO in Nashua to assemble and test. > > It seems akin tosolving the halting problem... > > No more than Algol-68 and many modern languages. > > > Yes, I've used PL/I in my CompSci days, and was told that IBM had > trademarkedeverything from /I to /C :-) > > I think that is more like an urban legend and IBM's notorious marketing > behavior since Gary Kidall (who was originally a compiler guy) created > PL/M for the 8080 and sold it to Intel. > > > -- Dave, who loved PL/360 > > Yeah - it might have been Nicklaus Wirth's best language. I still have > the Standford manuals, but I can not say I have seen a working compiler > since the late 1970s :-) I was ready to jump in, but since I didn't have a definitive answer, I waited for someone (Clem) who would really know. The vast majority of my undergraduate and graduate school work was in CDC Fortran. When I joined IBM Yorktown in 1975, I brought that work with me in thousands of punched cards. Initially, I continued my simulation work in Fortran. As that work became more important, Fortran was unacceptable. I wrote a Fortran to PL/I crude translator in SNOBOL, had the PL/I version running in a couple of weeks, and didn't look back. Being judicious in using just the good parts, PL/I seemed just fine. Essentially all of my work at Yorktown was in PL/I. The 801 people created PL.8, which was primarily a subset of the good parts of PL/I, but with some changes that I'd have to research to remember. Charlie ᐧ -- voice: +1.512.784.7526 e-mail: sauer@technologists.com fax: +1.512.346.5240 Web: https://technologists.com/sauer/ Facebook/Google/LinkedIn/Twitter: CharlesHSauer ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 17:01 ` Charles H Sauer (he/him) @ 2024-04-03 16:18 ` Paul Winalski 2024-04-03 17:30 ` segaloco via COFF 2024-04-07 23:10 ` Dave Horsfall 1 sibling, 1 reply; 17+ messages in thread From: Paul Winalski @ 2024-04-03 16:18 UTC (permalink / raw) To: coff [-- Attachment #1: Type: text/plain, Size: 2735 bytes --] On Tue, Apr 2, 2024 at 1:01 PM Charles H Sauer (he/him) < sauer@technologists.com> wrote: > > Being judicious in using just the good parts, PL/I seemed just fine. > Essentially all of my work at Yorktown was in PL/I. > > Every programming language I've encountered has had its share of what I call toxic language features--things that impair reliability and maintainability. Good production programming shops ban the use of these features in their code. In the case of PL/I, IMO the most toxic feature is the DEFAULT statement. This is Fortran's IMPLICIT on steroids. The end result of using the DEFAULT statement is that, when you see a variable declaration, you need to review all of the applicable DEFAULT statements to figure out what the variable's attributes are. PL/I was designed to be a successor language to both COBOL and Fortran. One of the ugly features of Fortran is a fussy set of rules on statement ordering, particularly on declaration-type statements. PL/I relaxed those rules. Declarations can appear anywhere in the program and apply throughout the block they appear in. I know of folks who composed programs at the keypunch who used to write down variable declarations on a piece of paper as they came up with them, then when they reached the END statement of the scope block, punched out all the cards for the DECLARE statements. This practice was annoying in that, while reading the code you'd encounter variables that hadn't been declared yet and you'd have to rummage through the code to find the declarations. In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block. PL/I also has very weak data typing--you can convert almost any data type into almost any other data type. The language has a large and baroque set of conversion rules, and these don't always produce intuitive results, particularly when doing fixed decimal division. It can also mask typos, leading to hard-to-find bugs. I once mistyped: IF A ^= B [I'm using ^ here for the angle-bracket EBCDIC NOT sign character] as: IF A =^ B where A and B were both declared as character strings. So I wrote "if A equals NOT B". The compiler happily generated code to treat B as a character string of 0s and 1s, convert that to a bit string, apply the NOT operation, then similarly convert A to a bit string and do the comparison. This of course caused unexpected program behavior. It might have taken me a long time to find it except that there was a warning diagnostic message from the compiler: "data conversion will be done by subroutine call". This almost always means you've unintentionally mixed data types. -Paul W. [-- Attachment #2: Type: text/html, Size: 3236 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-03 16:18 ` Paul Winalski @ 2024-04-03 17:30 ` segaloco via COFF 2024-04-03 20:44 ` Paul Winalski 2024-04-04 3:37 ` Wesley Parish 0 siblings, 2 replies; 17+ messages in thread From: segaloco via COFF @ 2024-04-03 17:30 UTC (permalink / raw) To: coff On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski@gmail.com> wrote: > > In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block. > > -Paul W. I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop. They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :) Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it. The only exception is asm, putting all the data and bss at the bottom of assembly units instead. - Matt G. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-03 17:30 ` segaloco via COFF @ 2024-04-03 20:44 ` Paul Winalski 2024-04-04 3:37 ` Wesley Parish 1 sibling, 0 replies; 17+ messages in thread From: Paul Winalski @ 2024-04-03 20:44 UTC (permalink / raw) To: coff [-- Attachment #1: Type: text/plain, Size: 1392 bytes --] On Wed, Apr 3, 2024 at 1:30 PM segaloco via COFF <coff@tuhs.org> wrote: > I get (friendly) flack for this from some of my coworkers, context is > we're a C# and Java(Type)Script shop. They poke fun at how I write these > languages like a C programmer but I don't ever hear anyone complaining > about the readability of my code :) > > Someone once observed that a good Fortran programmer can write Fortran in any programming language. Here's another PL/I toxic language feature. Both COBOL and Fortran were designed around the same time that Noam Conmsky was working out formal language theory and both have ill-behaved grammars. Fortran has context-dependent lexical analysis, for example. PL/I is better behaved--the grammar for its lexical analysis is a regular grammar and can be processed with a state machine. But unlike C and other more modern languages, PL/I has no reserved keywords. So you can write things such as: IF IF=THEN THEN THEN = ELSE; Here the first IF and the second THEN are keywords. Everything else is a variable name. Our PL/I shops forbade variable names that were the same as language keywords. I suppose the designers of the PL/I language wanted to allow for the introduction of new language keywords while retaining backwards compatibility with programs that may have used the new keyword sa a variable name. -Paul W. [-- Attachment #2: Type: text/html, Size: 1765 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-03 17:30 ` segaloco via COFF 2024-04-03 20:44 ` Paul Winalski @ 2024-04-04 3:37 ` Wesley Parish 2024-04-04 15:40 ` Paul Winalski 2024-04-04 22:53 ` Peter Pentchev 1 sibling, 2 replies; 17+ messages in thread From: Wesley Parish @ 2024-04-04 3:37 UTC (permalink / raw) To: coff I learn C by reading Tanenbaum and Comer's OS books, and I cannot imagine how putting variable declarations anywhere other than the top of the function they belong to, would make sense. Unless they are global, in which case they go in a suitably global header file. Wesley Parish On 4/04/24 06:30, segaloco via COFF wrote: > On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski@gmail.com> wrote: > >> In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block. >> >> -Paul W. > I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop. They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :) > > Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it. The only exception is asm, putting all the data and bss at the bottom of assembly units instead. > > - Matt G. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-04 3:37 ` Wesley Parish @ 2024-04-04 15:40 ` Paul Winalski 2024-04-04 22:53 ` Peter Pentchev 1 sibling, 0 replies; 17+ messages in thread From: Paul Winalski @ 2024-04-04 15:40 UTC (permalink / raw) To: coff [-- Attachment #1: Type: text/plain, Size: 2068 bytes --] On Wed, Apr 3, 2024 at 11:37 PM Wesley Parish <wobblygong@gmail.com> wrote: > I learn C by reading Tanenbaum and Comer's OS books, and I cannot > imagine how putting variable declarations anywhere other than the top of > the function they belong to, would make sense. Unless they are global, > in which case they go in a suitably global header file. > > That's the way we always handled declarations in every PL/I shop I worked in. Local declarations always appeared immediately following the PROCEDURE or BEGIN statement that starts the scope to which the declaration applies. PL/I adopted the idea of nested scopes from Algol. One other programming convention we used was to keep variable scopes as localized as possible. Among other things, it makes lifetime analysis easier for the compiler. Another feature present in PL/I but not in C or most other languages is nested procedures. A nested procedure inherits all of the variables accessible in the scope of the containing procedure in which it's declared. Up-level addressing (use of variables declared outside the nested procedure) is somewhat error prone and less efficient than accessing data via a parameter. PL/I also supports recursion, something not provided for in the usual IBM S/360 ABI calling convention. A procedure that can be called recursively must be declared with the RECURSIVE attribute. Unlike C, in IBM S/360/370 PL/I recursion was disallowed by default. DEC's ABI for VMS supports recursion by default and so DEC PL/I dropped the RECURSIVE attribute. PL/I also supports an extended version of Fortran's computed GOTO via label variables. PL/I statements are labeled by name as opposed to Fortran's statement numbers. A label variable can be assigned a statement label value and a GOTO statement using the label variable transfers control to whichever statement label is held in the label variable. Label variables encourage rat's nest programming styles and very much went out of fashion when structured programming came along. -Paul W. [-- Attachment #2: Type: text/html, Size: 2456 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-04 3:37 ` Wesley Parish 2024-04-04 15:40 ` Paul Winalski @ 2024-04-04 22:53 ` Peter Pentchev 1 sibling, 0 replies; 17+ messages in thread From: Peter Pentchev @ 2024-04-04 22:53 UTC (permalink / raw) To: coff [-- Attachment #1: Type: text/plain, Size: 2036 bytes --] On Thu, Apr 04, 2024 at 04:37:23PM +1300, Wesley Parish wrote: > On 4/04/24 06:30, segaloco via COFF wrote: > > On Wednesday, April 3rd, 2024 at 9:18 AM, Paul Winalski <paul.winalski@gmail.com> wrote: > > > > > In the PL/I shops I worked at it was required that all declarations be at the beginning of the scope block. > > > -Paul W. > > I get (friendly) flack for this from some of my coworkers, context is we're a C# and Java(Type)Script shop. They poke fun at how I write these languages like a C programmer but I don't ever hear anyone complaining about the readability of my code :) > > > > Declarations anywhere else but the top of blocks irks me, even if the language is totally fine with it. The only exception is asm, putting all the data and bss at the bottom of assembly units instead. > > I learn C by reading Tanenbaum and Comer's OS books, and I cannot imagine > how putting variable declarations anywhere other than the top of the > function they belong to, would make sense. Unless they are global, in which > case they go in a suitably global header file. TBH, the fact that variables can now be declared in the middle of a block is one of the things that I use most in C90 and C99. Caveat: I only use it in combination with the "const" keyword for single-assignment variables, similar to the bindings in some functional languages. The result is that even the compiler will yell at me if I try to do something funny to a variable that I have declared as "this is its value; it is really, really not supposed to change during its lifetime, but I'm storing it into a variable mainly to cache it for reuse". A side effect is that the compiler has another optimization hint. It also prevents me from using the same name for two different variables, even by accident. G'luck, Peter -- Peter Pentchev roam@ringlet.net roam@debian.org pp@storpool.com PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 17:01 ` Charles H Sauer (he/him) 2024-04-03 16:18 ` Paul Winalski @ 2024-04-07 23:10 ` Dave Horsfall 2024-04-07 23:25 ` Charles H Sauer (he/him) 2024-04-08 1:13 ` [COFF] Re: Of PL/I Paul Winalski 1 sibling, 2 replies; 17+ messages in thread From: Dave Horsfall @ 2024-04-07 23:10 UTC (permalink / raw) To: Computer Old Farts Followers On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote: [...] > I wrote a Fortran to PL/I crude translator in SNOBOL [...] Gadzooks... For our "write a simple compiler" assignment I threatened to use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-) -- Dave ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-07 23:10 ` Dave Horsfall @ 2024-04-07 23:25 ` Charles H Sauer (he/him) 2024-04-09 21:41 ` Stuff Received 2024-04-08 1:13 ` [COFF] Re: Of PL/I Paul Winalski 1 sibling, 1 reply; 17+ messages in thread From: Charles H Sauer (he/him) @ 2024-04-07 23:25 UTC (permalink / raw) To: coff On 4/7/2024 6:10 PM, Dave Horsfall wrote: > On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote: > > [...] > >> I wrote a Fortran to PL/I crude translator in SNOBOL [...] > > Gadzooks... For our "write a simple compiler" assignment I threatened to > use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-) > > -- Dave SNOBOL fascinated me as soon as I learned in first languages survey course (also covered LISP, ALGOL, others) in 1971. In the mid 1980s, when we (IBM AIX people) wanted to move our PL.8 code to C, I created a PL.8 to C translator in Griswold's Icon successor to SNOBOL, then an ISC colleague took it over and enhanced it so that I could focus on my other responsibilities. I'm told the enhanced version was used quite a bit, but I don't really know. Charlie -- voice: +1.512.784.7526 e-mail: sauer@technologists.com fax: +1.512.346.5240 Web: https://technologists.com/sauer/ Facebook/Google/LinkedIn/Twitter: CharlesHSauer ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-07 23:25 ` Charles H Sauer (he/him) @ 2024-04-09 21:41 ` Stuff Received 2024-04-10 0:50 ` [COFF] SNOBOL, ICEBOL, SPITBOL, et al William H. Mitchell 0 siblings, 1 reply; 17+ messages in thread From: Stuff Received @ 2024-04-09 21:41 UTC (permalink / raw) To: coff On 2024-04-07 19:25, Charles H Sauer (he/him) wrote (in part): > On 4/7/2024 6:10 PM, Dave Horsfall wrote: >> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote: >> >> [...] >> >>> I wrote a Fortran to PL/I crude translator in SNOBOL [...] >> >> Gadzooks... For our "write a simple compiler" assignment I threatened to >> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-) >> >> -- Dave > > SNOBOL fascinated me as soon as I learned in first languages survey > course (also covered LISP, ALGOL, others) in 1971. I recall a job cards lying around the card readers with ICEBOL written on them. This may have been a local Toronto variant (in the 1970s). S. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] SNOBOL, ICEBOL, SPITBOL, et al. 2024-04-09 21:41 ` Stuff Received @ 2024-04-10 0:50 ` William H. Mitchell 2024-04-10 1:42 ` [COFF] " Dave Horsfall 0 siblings, 1 reply; 17+ messages in thread From: William H. Mitchell @ 2024-04-10 0:50 UTC (permalink / raw) To: Computer Old Farts Followers Re ICEBOL, there were lots of playful names for SNOBOL4 implementations. FASBOL, SITBOL and surely SPITBOL come to mind. Learning SPITBOL at NCSU in Dr. Tharp’s CSC 255 changed the course of my life, to my mother’s rue--I ended up moving from NC to AZ. I’ve mentioned on TUHS that I used Dave Hanson’s RATSNO (RATFOR meets SNOBOL4) on several large undergrad projects. I’ve since wondered if I was maybe only regular user of RATSNO in the universe. (Please let me know if I’m not alone in the universe!) I have hopes of reviving RATSNO, if not revived already on some world. Instead of calling it "RATSNO", Dr. Tharp liked to get my goat by calling it "RATSPIT". If Ralph Griswold were still around I think he might say to not confuse SNOBOL with SNOBOL2, SNOBOL3, or SNOBOL4; they were all significantly different. I believe all the creatively named implementations, like SPITBOL, were implementations of SNOBOL4. Speaking of differences in the four versions, I thought I'd read in Griswold’s HOPL paper on the SNOBOL languages (https://dl.acm.org/doi/pdf/10.1145/800025.1198417) that there was no such thing as a syntactically invalid SNOBOL (v1) program, but I’m not finding that now. Just now I found that ChatGPT 3.5 does speak somewhat correctly of there being a difference between SNOBOL and SNOBOL4. However, when I asked it, "Write me a SNOBOL program, and not a SNOBOL4, program to print the numbers from one through 10.", I got this: LOOP I = 1 TO 10 OUTPUT = I END And--see above--I believe that to be a syntactically valid SNOBOL program! :) William Mitchell Mitchell Software Engineering Occasional Adjunct Instructor at U of AZ CS 520-870-6488 (m) Discord: whm#5716, Twitter: @x77686d, Skype: x77686d linkedin.com/in/x77686d > On Apr 9, 2024, at 2:41 PM, Stuff Received <stuff@riddermarkfarm.ca> wrote: > > On 2024-04-07 19:25, Charles H Sauer (he/him) wrote (in part): >> On 4/7/2024 6:10 PM, Dave Horsfall wrote: >>> On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote: >>> >>> [...] >>> >>>> I wrote a Fortran to PL/I crude translator in SNOBOL [...] >>> >>> Gadzooks... For our "write a simple compiler" assignment I threatened to >>> use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-) >>> >>> -- Dave >> SNOBOL fascinated me as soon as I learned in first languages survey course (also covered LISP, ALGOL, others) in 1971. > > I recall a job cards lying around the card readers with ICEBOL written on them. This may have been a local Toronto variant (in the 1970s). > > S. > ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: SNOBOL, ICEBOL, SPITBOL, et al. 2024-04-10 0:50 ` [COFF] SNOBOL, ICEBOL, SPITBOL, et al William H. Mitchell @ 2024-04-10 1:42 ` Dave Horsfall 0 siblings, 0 replies; 17+ messages in thread From: Dave Horsfall @ 2024-04-10 1:42 UTC (permalink / raw) To: Computer Old Farts Followers On Tue, 9 Apr 2024, William H. Mitchell wrote: > Re ICEBOL, there were lots of playful names for SNOBOL4 implementations. > FASBOL, SITBOL and surely SPITBOL come to mind. Ahh... SPITBOL... We used it at UNSW, but it came with a time bomb i.e. the licence had to be renewed every so often. So, me being me I took a hex dump and patched the expiry date with Superzap. Well, it sort of worked... The compiler would then crash at random for no apparent reason, so I took a closer look; it turned out that there was more than one check on the expiry date, and took a jump to whatever random "address" was in R0 (I think). OK then; playing silly games are we? I wrote a program that LOADed SPITBOL into memory, and scanned it for anything that looked like that expiry date, and printing them (nicely formatted, of course). After checking the context there were about a dozen of them, and I patched the lot; it worked fine after that... For that effort Dr. Graham McMahon (another of my CompSci lecturers) gave me the "Superzap of the Year" award :-) -- Dave ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-07 23:10 ` Dave Horsfall 2024-04-07 23:25 ` Charles H Sauer (he/him) @ 2024-04-08 1:13 ` Paul Winalski 1 sibling, 0 replies; 17+ messages in thread From: Paul Winalski @ 2024-04-08 1:13 UTC (permalink / raw) To: Computer Old Farts Followers [-- Attachment #1: Type: text/plain, Size: 1645 bytes --] On Sun, Apr 7, 2024 at 7:10 PM Dave Horsfall <dave@horsfall.org> wrote: > On Tue, 2 Apr 2024, Charles H Sauer (he/him) wrote: > > [...] > > > I wrote a Fortran to PL/I crude translator in SNOBOL [...] > > Gadzooks... For our "write a simple compiler" assignment I threatened to > use SNOBOL, but my lecturer (Ken Robinson) threatened to fail me :-) > > Translating Fortran to PL/I is pretty straightforward. It translates pretty much 1-for-1 except for handling character data. One could replace Fortran's Hollerith-encoded character strings with an integer array on which a PL/I character string has been overlay defined. Back in 1977 I translated the TOPS-10 version of the Adventure game, which was in Fortran, into PL/I so that I could run it on our batch S/370 mainframe. I used an IBM 3277 transaction terminal as the interactive interface. I very carefully translated the TOPS-10 Fortran into IBM PL/I line by line, except for the character data where I bit the bullet and used pure PL/I character variables. The whole thing ran the very first time and had only one obscure bug: instead of saying PLOVER ROOM as one did in the TOPS-10 version, you had to say PLOVERROOM. Once that bug was fixed the PL/I version worked like a charm until we got our VAX, where I did another port of the TOPS-10 program so that it ran under VAX/VMS. This time it stayed in Fortran, but again there was funny business with character strings because of the 36 vs. 32 bit word size. If I were to write an automated, general Fortran-to-PL/I translator, SNOBOL would be my language of choice. -Paul W. -Paul W. [-- Attachment #2: Type: text/html, Size: 2009 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 16:40 ` [COFF] " Clem Cole 2024-04-02 17:01 ` Charles H Sauer (he/him) @ 2024-04-02 19:25 ` Stuff Received 2024-04-02 20:31 ` William H. Mitchell 1 sibling, 1 reply; 17+ messages in thread From: Stuff Received @ 2024-04-02 19:25 UTC (permalink / raw) To: coff On 2024-04-02 12:40, Clem Cole wrote (in part): > > > On Tue, Apr 2, 2024 at 11:23 AM Dave Horsfall <dave@horsfall.org > <mailto:dave@horsfall.org>> wrote (in part): > > -- Dave, who loved PL/360 > > Yeah - it might have been Nicklaus Wirth's best language. I still have > the Standford manuals, but I can not say I have seen a working compiler > since the late 1970s :-) A scanned printout (in assembler) is available, if someone is brave enough. S. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [COFF] Re: Of PL/I 2024-04-02 19:25 ` Stuff Received @ 2024-04-02 20:31 ` William H. Mitchell 0 siblings, 0 replies; 17+ messages in thread From: William H. Mitchell @ 2024-04-02 20:31 UTC (permalink / raw) To: Computer Old Farts Followers PL/I, in the form of Cornell’s PL/C was the language we learned in CSC 101H at NC State* in Fall 1976. At some point I was possessed to buy from the local IBM office a copy of "OS PL/I Optimizing Compiler: Execution Logic". I see that a 1985 version of that is here: http://bitsavers.trailing-edge.com/pdf/ibm/370/pli/SC33-0025-3_PLI_Optimizing_Compiler_Execution_Logic_Sep85.pdf 454 pages. Lots of ASCII (well, EBCDIC?) diagrams and flowcharts. See pages 31 and 151 for two examples. In a comparative languages class that I’ve taught at the U of Arizona, I've described PL/I as an example of what can happen when a language designer incorporates a number of good features from other languages: you get a Frankenstein. Support for `PIC` formatting comes to mind as one of the things borrowed from COBOL. IIRC, and it’s a dim memory of a then-freshman, an interesting thing about PL/I is that it has no reserved words. You can say something like `if else = if then while = returns + return;` PL/I also has a macro facility that I only "got" years later, when learning C. Hmm...no PL/I examples in https://rosettacode.org/wiki/Metaprogramming. I wish I had a clone to give that task. Very conveniently, PL/I has a `put data;` statement that prints the value of all variables in scope. A friend at NCSU in the 70s, Billy Willis, used PL/M on maybe a PDP-11 for a system he wrote to support his dissertation in chemical engineering. William Mitchell Mitchell Software Engineering Occasional Adjunct Instructor at U of AZ CS 520-870-6488 (m) Discord: whm#5716, Twitter: @x77686d, Skype: x77686d linkedin.com/in/x77686d *Go Wolfpack; beat Purdue! ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-04-10 1:42 UTC | newest] Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-04-02 15:06 [COFF] Of PL/I Dave Horsfall 2024-04-02 16:40 ` [COFF] " Clem Cole 2024-04-02 17:01 ` Charles H Sauer (he/him) 2024-04-03 16:18 ` Paul Winalski 2024-04-03 17:30 ` segaloco via COFF 2024-04-03 20:44 ` Paul Winalski 2024-04-04 3:37 ` Wesley Parish 2024-04-04 15:40 ` Paul Winalski 2024-04-04 22:53 ` Peter Pentchev 2024-04-07 23:10 ` Dave Horsfall 2024-04-07 23:25 ` Charles H Sauer (he/him) 2024-04-09 21:41 ` Stuff Received 2024-04-10 0:50 ` [COFF] SNOBOL, ICEBOL, SPITBOL, et al William H. Mitchell 2024-04-10 1:42 ` [COFF] " Dave Horsfall 2024-04-08 1:13 ` [COFF] Re: Of PL/I Paul Winalski 2024-04-02 19:25 ` Stuff Received 2024-04-02 20:31 ` William H. Mitchell
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).