Difference between revisions of "PL/I"

From EDM2
Jump to: navigation, search
(GUI and application generators with PL/I output)
m (PC DOS implementations)
(10 intermediate revisions by one user not shown)
Line 1: Line 1:
 
[[Image:George-Radin.png|thumb|200px|right|'''George Radin'''<br>1931-01-22 to 2013-05-21 - One of the principal developers of PL/I at IBM]]
 
[[Image:George-Radin.png|thumb|200px|right|'''George Radin'''<br>1931-01-22 to 2013-05-21 - One of the principal developers of PL/I at IBM]]
A procedural programming language introduced in 1964 by [[IBM]], development was started in the early 60's under the auspices of George Radin with the aim of making an updated version of [[FORTRAN]] that could better handle generic programming tasks, but in the end it was decided to implement a new language based on [[ALGOL]] that would also incorporate features from [[COBOL]] and FORTRAN that were considered useful.
+
The '''Programming Language/I''' (''PL/I'') is a procedural programming language introduced in 1964 by [[IBM]].
  
 
PL/I is a rather large language that had some design goals that might seem quaint by now such as "you shouldn't have to learn all of PL/I to use it", but this actually a feature: The low level and systems language features of PL/I are separate parts of the language specification and you can use it as a generic application domain language without touching any of the low level constructs, while having the options to use them if need be.
 
PL/I is a rather large language that had some design goals that might seem quaint by now such as "you shouldn't have to learn all of PL/I to use it", but this actually a feature: The low level and systems language features of PL/I are separate parts of the language specification and you can use it as a generic application domain language without touching any of the low level constructs, while having the options to use them if need be.
  
Another quirk is that it does not have any reserved words/commands, this is something it inherited from ALGOL and may be a reaction to [[COBOL]] but at the time PL/I was being developed that language was dominant and the list of reserved word you had to memorise was quite staggering, over 300 and growing with each new implementation, modern versions of COBOL have reduced that somewhat, this is similar to modern [[Basic]] variants such as [[GFA Basic]] that can have over 1000 reserved words.
+
It does not have any reserved words. This is something it inherited from ALGOL and may be a reaction to [[COBOL]]. But at the time PL/I was being developed that language was dominant and the list of reserved word you had to memorise was quite staggering, over 300 and growing with each new implementation. Modern versions of COBOL have reduced that somewhat, this is similar to modern [[Basic]] variants such as [[GFA Basic]] that can have over 1000 reserved words.
  
The language is sometimes incorrectly known as PL/1, while the language is indeed named '''Programming Language One''', the one was always meant to be expressed as a Roman numerical rather than an Arabian one, as is the tradition with computer languages even today. The Arabic 1 is only used on vintage computer and communications systems like [[USENET]] where the lower case only system or display limitation means that there is no Roman "I" available.
+
The language is sometimes incorrectly known as PL/1, while the language is indeed named '''Programming Language One''', the one was always meant to be expressed as a Roman numerical rather than an Arabian one, as is the tradition with computer languages even today. The Arabic 1 is only used on vintage computer and communications systems like USENET where the lower case only system or display limitation means that there is no Roman "I" available.
  
There are some variants of the language that are by now completely forgotten such as the safe variant '''SPL/I''', that was designed at the behest of the USA Department of Defence in the early 1970's and was intended to be the language used for all non-business type programming done for the DoD but it end they gave up due to the variability of implementations and the difficulty of writing compilers and the DoD went with [[Ada]] instead.
+
==History==
 +
The development was started in the early 1960s under the auspices of George Radin with the aim of making an updated version of [[FORTRAN]] that could better handle generic programming tasks. In the end it was decided to implement a new language based on [[ALGOL]] that would also incorporate features from [[COBOL]] and FORTRAN that were considered useful.
  
Another variant was '''PL/C''' developed at Cornell University, it was designed for beginning programming students and the basic idea was that the compiler front end was smart enough to try and work out what the student meant rather than give just an error when he tried to compile. Since the background correction was silent, unless the compiler had to give up, you could easily end up with working programs that did something completely different than you intended to write.
+
When the team hit difficulties in shaping FORTRAN to their needs they decided to start afresh and implemented an [[ALGOL 60]] variant under the name "New Programming Language" (NPL).
  
====PL/M====
+
IBM later brought on people from other organisations that used IBM hardware to serve on the PL/I design committee including [http://www.cs.dartmouth.edu/~doug/ M. Douglas McIlroy] from Cornell University.
A language introduced in 1972 by [[Gary Kidall]] to allow development of computer programs for 4 and 8 bit microcomputers, full name being '''Programming Language for Microcomputers'''. Initially a very minimalistic version of PL/I that lacked even a standard I/O but later versions added features from sundry languages, which makes the latter PL/M releases somewhat unlike PL/I in many respects. Kidall sold the rights to his compiler to [[Intel]] who sold a version of the language for about 30 years mainly targeting the embedded market, but in addition he used the language to develop the [[CP/M]] operating system and used it as the main development language of [[Digital Research]] until the mid 80's. Digital released a PL/I compiler at the end of the decade for CP/M that implemented a properly defined subset of the language and that toolkit was later ported to [[DOS]].
+
  
==A list of OS/2 implementations of PL/I==
+
There are some variants of the language that are by now completely forgotten such as the safe variant '''SPL/I''', that was designed at the behest of the US Department of Defence in the early 1970s and was intended to be the language used for all non-business type programming done. In the end they gave up due to the variability of implementations and the difficulty of writing compilers and the DoD went with [[Ada]] instead.
* [[IBM SAA AD/Cycle PL/I Package/2]] - Commercial - Discontinued
+
 
* [[IBM PL/I Workstation/2]] - Commercial - Discontinued
+
Another variant was '''PL/C''' developed at Cornell University, it was designed for beginning programming students and the basic idea was that the compiler front end was smart enough to try and work out what the student meant rather than give just an error when he tried to compile. Since the background correction was silent, unless the compiler had to give up, you could easily end up with working programs that did something completely different than you intended to write.
* [[IBM PL/I for OS/2]] - Commercial - Discontinued
+
* [[IBM VisualAge PL/I Enterprise]] - Commercial - Discontinued
+
* [[Iron Spring PL/I]] - Freeware - Current
+
* [[Liant Open PL/I]] - Commercial - Discontinued
+
* [http://pl1gcc.sourceforge.net/ PL1GCC] - An incomplete front end for [[GCC]] - Open source - Discontinued.
+
  
====OS/2 Libraries and class libraries====
+
==OS/2 implementations==
*  
+
* [[IBM SAA AD/Cycle PL/I Package/2]] - Commercial
 +
* [[IBM PL/I Workstation/2]] - Commercial
 +
* [[IBM PL/I for OS/2]] - Commercial
 +
* [[IBM VisualAge PL/I Enterprise]] - Commercial
 +
* [[Iron Spring PL/I]] - Freeware
 +
* Liant Open PL/I - Commercial
 +
* [http://pl1gcc.sourceforge.net/ PL1GCC] - An incomplete front end for [[GCC]] - Open source
  
====GUI and application generators with PL/I output====
+
;GUI and application generators with PL/I output
* [[CA-Telon]] - [[CASE]] tool/Application generator - Commercial - Discontinued.
+
* [[CA-Telon]] - CASE tool/application generator - Commercial
 
* IBM PL/I Toolkit (Visual PL/I)
 
* IBM PL/I Toolkit (Visual PL/I)
  
====Translators that generate PL/I output====
+
;Translators that generate PL/I output
 
* C to PL/I ([http://members.dodo.com.au/~robin51/c2pli.htm c2pli])
 
* C to PL/I ([http://members.dodo.com.au/~robin51/c2pli.htm c2pli])
* FORTRAN to PL/I Translator ([http://members.dodo.com.au/~robin51/F4-PLI.PLI F4-PLI.PLI]) - for FORTRAN IV
+
* FORTRAN to PL/I Translator ([http://members.dodo.com.au/~robin51/F4-PLI.PLI F4-PLI.PLI]) - for [[FORTRAN IV]]
  
====Workframes and or IDE's====
+
;Workframes and or IDEs
 
* IBM Workframe/2
 
* IBM Workframe/2
  
====OS/2 programmer's editors with PL/I or PL/M support====
+
;Editor support
* IBM LPEX (Live Parsing Editor eXtended)
+
* IBM [[Enhanced Editor]] (PL/x keywords for REXX and PL/I)
* [[Lugaru Epsilon]] - PL/M syntax highlighting and autoindent available as a seperate download. - Commercial.
+
* IBM [[LPEX]] (Live Parsing Editor eXtended)
  
====PL/I source code snippets, archives and collections====
+
==PC DOS implementations==
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
+
* [[Digital Research PL/I]] - PL/I-86 available for PC DOS and CP/M
* [http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=Walter+Pachl&go=Go Walter Pachl's code on rosettacode.org] - Mostly Classic [[REXX]] but also a few PL/I snippets hidden in between.
+
 
+
==A list of PC DOS implementations of PL/I==
+
* [http://www.z80.eu/pli.html DR PL/1-86] - The old Digital Research PL/I, available for PC DOS and CP/M - Discontinued - Commercial - now freeware
+
 
* Liant LPI-PL/I - commercial
 
* Liant LPI-PL/I - commercial
 
* RUN - interpreter for limited PL/1 subset
 
* RUN - interpreter for limited PL/1 subset
  
==== PC DOS Libraries and class libraries====
+
;PC DOS Libraries and class libraries
* [http://www.z80.eu/pli.html DR PL/1-86 Libraries] - The old Digital Research libraries for the above compiler, disassembled - Discontinued - Commercial - Now freeware.
+
* DR PL/I-86 Libraries - The old Digital Research libraries for the above compiler, disassembled
  
==Generic or cross platform source code==
 
* [http://www.cocolab.com/parse_pl1.html PL/I grammar for Coctail] - By CoCoLab
 
* [https://code.google.com/p/legstar-pli2cob/ PL/I to Cobol] - Open source software that converts PL/I structures to COBOL structures, but not whole programs so far.
 
 
==Publications==
 
==Publications==
* Paul Abrahams: [https://archive.org/details/pliprogrammingla00abra The PL/I programming language] - 1978 - A book in the [[public domain]].
+
* Paul Abrahams: [https://archive.org/details/pliprogrammingla00abra The PL/I Programming Language] - 1978 - A book in the [[public domain]].
* [http://www.iron-spring.com/PLI_Bulletins/Bulletin.html Archives of old PL/I Bulletins newsletters] - Hosted by [[Iron Spring Software]]
+
* Jeffrey D. Liotta: ''ML/I Macro Processor, Implementation in PL/I'' - 1980 - University of North Carolina at Chapel Hill
* Jeffrey D. Liotta: ''ML/I Macro Processor, Implementation in PL/I'' - 1980 - University of North Carolina at Chapel Hill - 324 pages
+
  
====Books====
+
;Books
* Barnes: ''PL/I for Programmers'' - North-Holland 1979, ISBN 0-444-00284-7
+
*Don Cassel: ''Programming Language One'' – Reston 1972, ISBN 0-87909-648-9
* Hughes: ''PL/I Structured Programming'' - 3rd Ed., Wiley 1986, ISBN 0-471-83746-6
+
*Mary L. Douglas; Frank Bates: ''Programming Language One, Third Edition: With Structured Programming'' – Prentice-Hall 1975, ISBN 0-13-730473-0
* Mary L. Douglas and Frank Bates: ''Programming Language One, Third Edition: With Structured Programming'' – June 1975 - Prentice-Hall - Paperback, 416 pages - ISBN 0137304730 - ISBN 978-0137304738
+
*Robert Arthur Barnes: ''PL/I for Programmers'' - North-Holland 1979, ISBN 0-444-00284-7
:Earlier versions of this book were for many years the standard introductory PL/I text used in USA colleges and universities, they were OK and the text is reasonably clear and examples reasonably varied but there were better introductory texts out there, the third edition with its structured programming additions is however a considerable improvement over the earlier versions.
+
*Joan K. Hughes: ''PL/I Structured Programming'' - 3rd Ed., Wiley 1986, ISBN 0-471-83746-6
* Don Cassel: ''Programming Language One'' – 1 October, 1972 - Reston Publishing Company - Paperback, 265 pages - ISBN 0879096489 - ISBN: 978-0879096489
+
 
+
====External articles====
+
* [http://www.multicians.org/pl1.html The Choice of PL/I] - An article on why they choose to implement [[Multics]] in PL/I.
+
* [http://members.dodo.com.au/robin51/pli_faq.htm PL/I FAQ]
+
====Tutorials and other learning material====
+
* [http://en.wikibooks.org/wiki/Software_Engineers_Handbook/Language_Dictionary/PLI Software Engineers Handbook/Language Dictionary/PLI] - From Wikibooks, more of a command listing than anything else and not complete.
+
 
+
====Tips'n'Tricks====
+
* [http://www.felgall.com/soft1c.htm Ask Felgall] - Sundry small tips for beginners.
+
  
 
==Links==
 
==Links==
Line 83: Line 66:
 
* Eberhard Sturm: ''[https://www.uni-muenster.de/ZIV.EberhardSturm/PL1andC.html Power vs. Adventure - PL/I and C]'' - A paper that discusses the differences between PL/I and [[C]], both in the application domain and as systems languages.
 
* Eberhard Sturm: ''[https://www.uni-muenster.de/ZIV.EberhardSturm/PL1andC.html Power vs. Adventure - PL/I and C]'' - A paper that discusses the differences between PL/I and [[C]], both in the application domain and as systems languages.
 
* Tom Van Vleck: ''[http://www.multicians.org/pl1.html PL/I on Multics]''
 
* Tom Van Vleck: ''[http://www.multicians.org/pl1.html PL/I on Multics]''
====Mailing lists & forums====
+
* [http://www.iron-spring.com/PLI_Bulletins/Bulletin.html Archives of old PL/I Bulletins newsletters] - Hosted by [[Iron Spring Software]]
 +
 
 +
;External articles
 +
* [http://www.multicians.org/pl1.html The Choice of PL/I] - An article on why they choose to implement Multics in PL/I.
 +
* [http://members.dodo.com.au/robin51/pli_faq.htm PL/I FAQ]
 +
 
 +
;Tutorials and other learning material
 +
* [http://en.wikibooks.org/wiki/Software_Engineers_Handbook/Language_Dictionary/PLI Software Engineers Handbook/Language Dictionary/PLI] - From Wikibooks, more of a command listing than anything else and not complete.
 +
 
 +
;PL/I source code snippets, archives and collections
 +
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
 +
* [http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=Walter+Pachl&go=Go Walter Pachl's code on rosettacode.org] - Mostly Classic [[REXX]] but also a few PL/I snippets hidden in between.
 +
 
 +
;Generic or cross platform source code
 +
* [http://www.cocolab.com/parse_pl1.html PL/I grammar for Coctail] - By CoCoLab
 +
* [https://code.google.com/p/legstar-pli2cob/ PL/I to Cobol] - Open source software that converts PL/I structures to COBOL structures, but not whole programs so far.
 +
 
 +
;Tips'n'Tricks
 +
* [http://www.felgall.com/soft1c.htm Ask Felgall] - Sundry small tips for beginners.
 +
 
 +
;Mailing lists & forums
 
* [https://groups.yahoo.com/neo/groups/PLIDevelopers/info PL/I Developers] - On Yahoo groups - very low volume list intended for people that are developing PL/I tools, not for general PL/I programming discussion.
 
* [https://groups.yahoo.com/neo/groups/PLIDevelopers/info PL/I Developers] - On Yahoo groups - very low volume list intended for people that are developing PL/I tools, not for general PL/I programming discussion.
====USENET====
+
 
* [news:comp.lang.pl1 comp.lang.pl1] - Fairly low volume - Go to the [https://groups.google.com/forum/#!forum/comp.lang.pl1 Google groups version] if you or your ISP are in any way newsgroup challenged.
+
;USENET
 +
* [news:comp.lang.pl1 comp.lang.pl1]
  
 
==Standards==
 
==Standards==
Line 92: Line 96:
 
* PL/I Language Specifications. IBM C28-6571 - 1965
 
* PL/I Language Specifications. IBM C28-6571 - 1965
 
* ECMA TC10 Working group preliminary report - The first preliminary standard - sponsored by the IBM Vienna Lab (IBM-WT).
 
* ECMA TC10 Working group preliminary report - The first preliminary standard - sponsored by the IBM Vienna Lab (IBM-WT).
* PL/I Language Specifications. IBM GY33-6003 - Originally published in 1967 but received a number of updates in the 70's.
+
* PL/I Language Specifications. IBM GY33-6003 - Originally published in 1967 but received a number of updates in the 70s.
 
* [http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-50,%201st%20Edition%20December%201976.pdf ECMA-50 First Edition] - First international standard, later adopted by various national and international organisations, best known being ANSI X3.53-1976. Now withdrawn by ECMA but still valid in some jurisdictions.
 
* [http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-50,%201st%20Edition%20December%201976.pdf ECMA-50 First Edition] - First international standard, later adopted by various national and international organisations, best known being ANSI X3.53-1976. Now withdrawn by ECMA but still valid in some jurisdictions.
 
* ANSI INCITS 74-1987 (R1998) - A PL/I Subset for generic programming (Subset G)
 
* ANSI INCITS 74-1987 (R1998) - A PL/I Subset for generic programming (Subset G)
 
==PL/I history==
 
A procedural programming language introduced in mid 1960's by [[IBM]], originally development was started in 1964 under the auspices of George Radin with the aim of making an updated version of [[FORTRAN]] that could better handle generic programming tasks, but although very popular and hugely influential, FORTRAN really only shone at numerical computing and I/O. When the team hit difficulties in shaping FORTRAN to their needs they decided to start afresh and implemented an [[ALGOL|ALGOL 60]] variant under the name "New Programming Language" or NPL.
 
 
IBM later brougt on people from other organistaions that used IBM hardware to serve on the PL/I design committee including [http://www.cs.dartmouth.edu/~doug/ M. Douglas McIlroy] from Cornell University.
 
  
 
[[Category:Programming Languages]] [[Category:PL/I]]
 
[[Category:Programming Languages]] [[Category:PL/I]]

Revision as of 00:12, 28 January 2020

George Radin
1931-01-22 to 2013-05-21 - One of the principal developers of PL/I at IBM

The Programming Language/I (PL/I) is a procedural programming language introduced in 1964 by IBM.

PL/I is a rather large language that had some design goals that might seem quaint by now such as "you shouldn't have to learn all of PL/I to use it", but this actually a feature: The low level and systems language features of PL/I are separate parts of the language specification and you can use it as a generic application domain language without touching any of the low level constructs, while having the options to use them if need be.

It does not have any reserved words. This is something it inherited from ALGOL and may be a reaction to COBOL. But at the time PL/I was being developed that language was dominant and the list of reserved word you had to memorise was quite staggering, over 300 and growing with each new implementation. Modern versions of COBOL have reduced that somewhat, this is similar to modern Basic variants such as GFA Basic that can have over 1000 reserved words.

The language is sometimes incorrectly known as PL/1, while the language is indeed named Programming Language One, the one was always meant to be expressed as a Roman numerical rather than an Arabian one, as is the tradition with computer languages even today. The Arabic 1 is only used on vintage computer and communications systems like USENET where the lower case only system or display limitation means that there is no Roman "I" available.

History

The development was started in the early 1960s under the auspices of George Radin with the aim of making an updated version of FORTRAN that could better handle generic programming tasks. In the end it was decided to implement a new language based on ALGOL that would also incorporate features from COBOL and FORTRAN that were considered useful.

When the team hit difficulties in shaping FORTRAN to their needs they decided to start afresh and implemented an ALGOL 60 variant under the name "New Programming Language" (NPL).

IBM later brought on people from other organisations that used IBM hardware to serve on the PL/I design committee including M. Douglas McIlroy from Cornell University.

There are some variants of the language that are by now completely forgotten such as the safe variant SPL/I, that was designed at the behest of the US Department of Defence in the early 1970s and was intended to be the language used for all non-business type programming done. In the end they gave up due to the variability of implementations and the difficulty of writing compilers and the DoD went with Ada instead.

Another variant was PL/C developed at Cornell University, it was designed for beginning programming students and the basic idea was that the compiler front end was smart enough to try and work out what the student meant rather than give just an error when he tried to compile. Since the background correction was silent, unless the compiler had to give up, you could easily end up with working programs that did something completely different than you intended to write.

OS/2 implementations

GUI and application generators with PL/I output
  • CA-Telon - CASE tool/application generator - Commercial
  • IBM PL/I Toolkit (Visual PL/I)
Translators that generate PL/I output
Workframes and or IDEs
  • IBM Workframe/2
Editor support
  • IBM Enhanced Editor (PL/x keywords for REXX and PL/I)
  • IBM LPEX (Live Parsing Editor eXtended)

PC DOS implementations

  • Digital Research PL/I - PL/I-86 available for PC DOS and CP/M
  • Liant LPI-PL/I - commercial
  • RUN - interpreter for limited PL/1 subset
PC DOS Libraries and class libraries
  • DR PL/I-86 Libraries - The old Digital Research libraries for the above compiler, disassembled

Publications

Books
  • Don Cassel: Programming Language One – Reston 1972, ISBN 0-87909-648-9
  • Mary L. Douglas; Frank Bates: Programming Language One, Third Edition: With Structured Programming – Prentice-Hall 1975, ISBN 0-13-730473-0
  • Robert Arthur Barnes: PL/I for Programmers - North-Holland 1979, ISBN 0-444-00284-7
  • Joan K. Hughes: PL/I Structured Programming - 3rd Ed., Wiley 1986, ISBN 0-471-83746-6

Links

External articles
Tutorials and other learning material
PL/I source code snippets, archives and collections

Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.

Generic or cross platform source code
Tips'n'Tricks
Mailing lists & forums
  • PL/I Developers - On Yahoo groups - very low volume list intended for people that are developing PL/I tools, not for general PL/I programming discussion.
USENET

Standards

A standard for PL/I was not introduced until 1976, until then companies such as Burroughs and AT&T that wanted to implement the language used the published IBM specifications.

  • PL/I Language Specifications. IBM C28-6571 - 1965
  • ECMA TC10 Working group preliminary report - The first preliminary standard - sponsored by the IBM Vienna Lab (IBM-WT).
  • PL/I Language Specifications. IBM GY33-6003 - Originally published in 1967 but received a number of updates in the 70s.
  • ECMA-50 First Edition - First international standard, later adopted by various national and international organisations, best known being ANSI X3.53-1976. Now withdrawn by ECMA but still valid in some jurisdictions.
  • ANSI INCITS 74-1987 (R1998) - A PL/I Subset for generic programming (Subset G)