|
The PL/1 Resource – Directory & Links
From Mainframes.in – Home of Legacy & Mainframes Online
|
|
The PL/1 Programming section of Mainframes.in provides a listing of WWW resources for PL/1 programming & software development. Mainframes.in is a comprehensive online resource for legacy and mainframe systems.
..
..
Add Links: If you have a web site that you wish to include in this directory, do let us know the details by sending a note about your URL to narsi@esource.in. We’ll quickly review the web site, and if found relevant, add it to the database. We look forward to web site owners and link exchange partners to submit URL. Thanks!
Content derived from Wikipedia article on PL/I
PL/I From Wikipedia, the free encyclopedia
PL/I ("Programming Language One", pronounced "pee el one") is an imperative computer programming language designed for scientific, engineering, and business applications. It is undoubtedly one of the most feature-rich programming languages that has ever been created and was one of the very first in the highly-feature-rich category. It has been used by various academic, commercial and industrial users since it was introduced in the early 1960s, and is still actively used today. See the newsletter[1].
PL/I's principal domain is data processing; it supports recursion and structured programming. The language syntax is English-like and suited for describing complex data formats, with a wide set of functions available to verify and manipulate them.
Contents
1 History of PL/I 2 Retrospective 3 Sample programs 3.1 Hello World 2 4 Standards 5 External links
History of PL/I PL/I was developed by IBM, at its Hursley Laboratories in the United Kingdom, as part of the development of System/360. Prior to System/360, IBM made several different incompatible models of mainframes for different purposes: some were designed for business use, others for scientific use. The goal of the System/360 project was to develop one series of compatible models to replace all the previous models, and which could be used equally well for commercial or scientific use.
Not only did business and scientific users use different machines; they also used different languages. Business users mainly used COBOL, while scientific users used Fortran. The goal of PL/I was to develop a single language usable for both business and scientific purposes. Another goal was to add structured programming constructs derived from ALGOL, which neither COBOL nor Fortran supported (at the time). PL/I was designed by a committee drawn from IBM programmers and users drawn from across the United States, working over several months. IBM originally wanted PL/I to be ready for use by the launch of System/360, but unfortunately this deadline could not be met.
The language was originally to be called NPL, for "New Programming Language"; but that abbreviation could not be used because it was the name of the National Physical Laboratory in the UK. The 'NPL' name was in effect between March 1 and November 30 in 1964. MPL and MPPL were considered before settling on PL/I.
Compilers were implemented by several groups in the early 1960s. The Multics project at MIT, one of the first to develop an operating system in a high level language, used Early PL/I (EPL), a subset dialect of PL/I, as their implementation language in 1964. EPL was developed at Bell Labs and MIT by Douglas McIlroy, Robert Morris, and others.
Although PL/I did not have immense universal popularity on all computing platforms of that era, that is not to say that it did not enjoy success on isolated islands within the 1970s computer industry. It received significant use in business data processing, and also for more general programming use, especially for authoring operating systems on certain processors. PL/M, a subset of PL/I distributed by Intel, was used to write the CP/M operating system proper and much application software running on CP/M and MP/M; Digital Research sold a PL/I compiler which was itself written in PL/M. PL/M was used to write much other software at Intel for the 8080, 8085, and Z-80 processors during the 1970s. The SAS System was initially written in PL/I; the SAS data step is still modeled on PL/I syntax. The XPL dialect of PL/I was used to write HAL/S as used on the Space Shuttle. A subset of PL/I, PL/P, was used to write new portions of PRIMOS at all rings of protection in its later revisions. A subset compiler named CORC, developed at Cornell University for teaching a dialect called PL/C, had the unusual capability of never failing to compile any program, through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements.
Another variant of PL/I was PL/S, the IBM systems programming language. IBM used PL/S to write the MVS operating system in the early 1970s. IBM uses an improved and renamed PL/S for internal work on current operating systems, OS/390 and now z/OS.
PL/8 (or PL.8) was a simplified variant of PL/I, having fewer data types and much more limited input/output. A version was used on IBM mainframes as a development tool for software that was being designed for the AS/400, as well as to write the S/390 microcode.
The pioneering online airline reservation system Sabre, primarily written in 7090 assembler, later used PL/I and a custom compiler for some high-level tasks.
Although mostly used on mainframes, there are also PL/I versions for DOS, Microsoft Windows, AIX, OpenVMS, and Unix.
Retrospective PL/I was not as successful as originally hoped for a number of reasons; though it was claimed that without it the US Apollo programme would never have been able to put a man on the moon.[citation needed]
Perhaps most important was that, even though the language was easy to learn and use, implementing a PL/I compiler was difficult and time-consuming. This was at least partially a result of having been designed by a committee, and the desire to supply the needs of very different types of users (business and scientific).
There were many poor choices made in the language syntax, which made the language difficult to parse. For example, the compiler (and human readers), had no way of telling if a statement was a declaration or an executable statement until encountering the ending period, which could be several lines later. The decision to keep the FORTRAN convention of spaces not being significant was also a huge headache for the compiler. The very sophisticated macro facility, which in effect required the compiler to have a built-in PL/I interpreter, also balooned the size of the compiler, and often required adding an extra pass or two, further slowing down the compile process. Typically a PL/I compiler was two to four times as large and as slow as comparable FORTRAN or COBOL compilers. This was a considerable drawback in the days of 256K byte mainframes and paying for CPU time by the second.
Such delays, its complexity, and the low quality of early versions of IBM's PL/I compiler discouraged users from switching from COBOL or Fortran. It contained many rarely used features, such as multithreading support, which added corresponding cost and complexity to the compiler and its co-processing facilities required a multi-programming environment with support for non-blocking multiple threads for processes by the operating system.
Another major problem was that instead of noticing features that would make their job easier, scientific (i.e. Fortran) programmers of the time had the opinion that it was a business language, while business (i.e. COBOL) programmers looked on it as a scientific language. In addition, COBOL programmers viewed it as a "bigger COBOL" and Fortran programmers viewed it as a "bigger Fortran," both somewhat intimidated by the language and disinclined to adopt it.
Compiler complexity was another issue that was perhaps underestimated during the initial design of the language. Optimization was unusually complex due to the need to handle asynchronous modification of variables (for example in the 'on error' exception handling construct) making it difficult to reliably predict how certain variables might be modified at runtime.
With full support for pointers to all data types (including pointers to structures), recursion, co-processing, extensive built-in functions and many other facilities, PL/I was indeed quite a leap forward compared to the programming languages of its time. In addition, the PL/I macro preprocessor was unusual, perhaps unique, in using its target language's syntax and semantics (e.g. as compared to the C preprocessor's "#" directives).
PL/I was probably the first commercial language where the compiler was written in the language to be compiled. This is called bootstrapping. The experimental language NELIAC achieved this at least five years prior, and there may have been others.
Sample programs Example_Program:
Test: procedure options(main);
declare My_String char(20) varying initialize('Hello, world!');
put skip list(My_String);
end Test;
Hello World 2 Hello2: proc options(main); put list ('Hello, world!'); end Hello2;
Standards In 1987 ANSI published ANSI X3.74-1987 (R1998), entitled Information Systems - Programming Language - PL/I General-Purpose Subset.
External links Kednos PL/I for HP OpenVMS VAX and Alpha IBM PL/I for IBM mainframe, Linux and Windows PL/I Resources PL/I home PL/I newsletter April 2006 Power vs. Adventure - PL/I and C A side-by-side comparison of PL/I and C. PL/I for GCC The pl1gcc project is an attempt to create a native PL/I compiler using the GNU Compiler Collection. Languages Related to PL/I Kednos PL/I for OpenVMS Compiler Documentation PL/I grammar Retrieved from http://en.wikipedia.org/wiki/PL/I
End of Wikipedia content, http://en.wikipedia.org/wiki/PLI
Content derived from PL/I Programming Language Category in Wikipedia
Category:PL/I programming language family From Wikipedia, the free encyclopedia
This category lists programming languages that are descendants of the PL/I programming language.
Pages in category "PL/I programming language family" There are 10 pages in this section of this category.
H HAL/S I IBM PL/S IITRAN P PL/0 PL/C PL/I PL/M S SP/k SabreTalk X XPL
End of Wikipedia content, http://en.wikipedia.org/wiki/Category:PL/I_programming_language_family
PL/1 Programming Directory & Resources @ Mainframes.in
..
..
Main Sections @ Mainframes.in
Legacy Operating Systems > Midrange, Mainframe Legacy Databases > DB2, IMS DB/DC, VSAM, CA/IDMS, Unidata Legacy Programming & Development
Legacy Hardware > Mainframe Hardware, Midrange Hardware
Legacy & Non-legacy > Legacy & Contemporary OS, Legacy & Contemporary Databases, Legacy & Networking, Legacy & Contemporary Programming Languages, Legacy & Mainframe Migration
Other IT Resources
eIT.in – IT & Software Directory & Resources
Software > Operating Systems, Databases, Programming & Development, Mainframe & Legacy, Internet & Web
Hardware, Networking & Communications, IT Strategy & Design, IT in Industries, IT in Functions, IT Infrastructure, Tech Support, IT Industry & Trade Network, IT News & Updates
Mainframes.in provides directory and web links resources for the legacy, mainframes and midrange systems. It is intended to be useful for mainframe programmers & developers, midrange programmer & developer, legacy & mainframe databases software development, administrators & DBAs, application developers, mainframe strategy architect, legacy design specialists and architects, mainframe & legacy migration consultants and analysts, administration, maintenance & support professionals, mainframe & legacy outsourcing consultant, legacy solutions programming developers & coders, project management & functional analyst, and for mainframe, midrange, system administrators, testing & quality control engineers. It will make an effort to provide resources on tutorial/tutorials, guide/guides, tips, faq/faqs on these mainframe and legacy topics.
Reference
GeoDig – Get Local!
Have you checked out the GeoDig directories for over 30 countries? GeoDig provides useful local and regional web resources for over 200 cities around the world. See the list of cities and countries for which GeoDig provides locality-specific web resources.
North America USA - Alabama (AL) > Birmingham; Alaska; Arkansas (AR) > Little Rock; Arizona (AZ) > Phoenix, Las Vegas, Tucson; California (CA) > Los Angeles, San Francisco, Sacramento, Fresno, Bakersfield; Colorado, CO > Denver; Connecticut, CT > Hartford; District of Columbia, DC > Washington DC; Delaware (DE) > Wilmington; Florida > Miami, Orlando, Tampa, Orlando, Sarasota, West Palm Beach, Jacksonville; Georgia > Atlanta; Hawaii > Honolulu; Idaho; Illinois > Chicago; Indiana > Indianapolis; Iowa; Kansas (KS); Kentucky (KY) > Louisville; Louisiana (LA) > New Orleans, Baton Rouge; Maine; Maryland (MD) > Baltimore; Massachusetts > Boston, Springfield; Michigan > Detroit, Grand Rapids; Minnesota > Minneapolis-St. Paul; Mississippi (MS); Missouri (MO) > Kansas City, St. Louis; Montana; Nebraska (NE) > Omaha; Nevada (NV) > Las Vegas; New Hampshire; New Jersey (NJ) > Jersey City, Newark; New Mexico (NM) > Albuquerque; New York > New York, Buffalo, Rochester, Albany, Syracuse; North Carolina (NC) > Raleigh-Durham, Charlotte, Greensboro; North Dakota; Ohio> Columbus, Cincinnati, Cleveland, Toledo, Youngstown, Dayton; Oklahoma (OK) > Oklahoma City, Tulsa; Oregon > Portland; Pennsylvania > Philadelphia, Allentown, Pittsburgh, Harrisburg, Scranton, ; Rhode Island (RI) > Providence; South Carolina (SC) > Greenville; South Dakota; Tennessee (TN) > Knoxville, Memphis, Nashville; Texas > Austin, Dallas, Houston, San Antonio, El Paso, Austin, McAllen; Utah (UT) > Salt Lake City; Vermont; Virginia (VA) > Norfolk, Richmond; Washington > Seattle; West Virginia; Wisconsin (WI) > Milwaukee; Wyoming Canada - Vancouver, Montreal, Toronto, Calgary, Ottawa-Gatineau, Edmonton, Quebec City, Winnipeg, Hamilton, London
Europe - UK - London, Glasgow, Manchester, Birmingham, Liverpool, Sheffield, Leeds, Bristol, Edinburgh, Leicester; France - Paris, Marseille, Lyon, Toulouse, Nice, Nantes, Strasbourg, Montpellier, Bordeaux; Germany - Frankfurt (Frankfurt am Main), Munich (München), Berlin, Düsseldorf, Hamburg, Cologne (Köln), Essen, Dortmund, Stuttgart, Bremen, Duisburg, Hannover, Nürnberg (Nuremberg), Dresden, Leipzig; Italy - Milan (Milano), Rome (Roma), Napoli (Naples), Torino (Turin), Palermo, Bologna, Firenze (Florence), Genova (Genoa); Spain - Madrid, Barcelona, Valencia, Sevilla, Zaragoza, Malaga, Murcia, Las Palmas, Bilbao; Scandinavia - Finland - Helsinki (Helsingin), Espoo, Tampere (Tampereen), Vantaa, Turku, Oulu, Sweden - Stockholm, Goteborg (Göteborg), Malmo (Malmö), Uppsala, Vasteras (Västerås), Denmark - Copenhagen (Københavns), Aarhus (Århus), Odense, Aalborg (Ålborg), Norway - Oslo, Bergen, Stavanger, Trondheim; Benelux - Belgium - Brussels (Brussel), Antwerp (Antwerpen), Ghent (Gent, Gand), Charleroi, Liège (Liege), Netherlands - Amsterdam, Rotterdam, Utrecht, Eindhoven, Tilburg, ‘s-Gravenhage (sGravenhage), Groningen, Luxembourg - Luxembourg City; Portugal – Lisbon; Greece – Athens; Hungary – Budapest; Poland – Warsaw; Switzerland - Zürich (Zurich), Geneva (Geneve, Genève), Basel, Bern (Berne), Lausanne; Austria - Linz, Vienna (Wien), Graz, Linz, Salzburg, Innsbruck; Ireland – Dublin
Asia - India - Mumbai, New Delhi, Bangalore; China & Hong Kong - Hong Kong, Beijing, Shanghai, Tianjin, Wuhan, Shenyang, Guangzhou, Harbin, Xian; Japan - Tokyo, Osaka, Yokohama, Nagoya, Sapporo, Kyoto, Kobe, Fukuoka, Kawasaki, Hiroshima; South Korea - Seoul, Pusa, Taegu, Incheon, Taejeon, Taiwan - Taipei; Malaysia - Kuala Lumpur; Singapore; Russia - Moscow, St Petersburg
Middle East - Turkey - Istanbul, Israel - Tel Aviv
Oceania - Australia - Sydney, Melbourne, Brisbane, Perth, Adelaide
Africa - South Africa - Johannesburg, Cape Town, Durban
|
Web Co-ordinator: Narasimhan Santhanam ( narsi@esource.in )
© 2004 – 05, From Mainframes.in – Home of Legacy & Mainframes Online