Knowledge

PL/I

Source 📝

1845:
of constant expressions using the run-time library, reducing the maximum memory for a compiler phase to 28 kilobytes. A second-time around design, it succeeded in eliminating the annoyances of PL/I F such as cascading diagnostics. It was written in S/360 Macro Assembler by a team, led by Tony Burbridge, most of whom had worked on PL/I F. Macros were defined to automate common compiler services and to shield the compiler writers from the task of managing real-mode storage, allowing the compiler to be moved easily to other memory models. The gamut of program optimization techniques developed for the contemporary IBM Fortran H compiler were deployed: the Optimizer equaled Fortran execution speeds in the hands of good programmers. Announced with IBM S/370 in 1970, it shipped first for the
1872:
interactive terminal, converting PL/I programs into an internal format, "H-text". This format is interpreted by the Checkout compiler at run-time, detecting virtually all types of errors. Pointers are represented in 16 bytes, containing the target address and a description of the referenced item, thus permitting "bad" pointer use to be diagnosed. In a conversational environment when an error is detected, control is passed to the user who can inspect any variables, introduce debugging statements and edit the source program. Over time the debugging capability of mainframe programming environments developed most of the functions offered by this compiler and it was withdrawn (in the 1990s?)
3662:
typically using fields in a data structure to encode information about its type and size. The fields can be held in the preceding structure or, with some constraints, in the current one. Where the encoding is in the preceding structure, the program needs to allocate a based variable with a declaration that matches the current item (using expressions for extents where needed). Where the type and size information are to be kept in the current structure ("self defining structures") the type-defining fields must be ahead of the type dependent items and in the same place in every version of the data structure. The
196: 1716:
systems with as little as 64 kilobytes of real storage – F being 64 kB in S/360 parlance. To fit a large compiler into the 44 kilobytes of memory available on a 64-kilobyte machine, the compiler consists of a control phase and a large number of compiler phases (approaching 100). The phases are brought into memory from disk, one at a time, to handle particular language features and aspects of compilation. Each phase makes a single pass over the partially-compiled program, usually held in memory.
6908: 4328: 367:(announced in 1964 and delivered in 1966) was designed as a common machine architecture for both groups of users, superseding all existing IBM architectures. Similarly, IBM wanted a single programming language for all users. It hoped that Fortran could be extended to include the features needed by commercial programmers. In October 1963 a committee was formed composed originally of three IBMers from New York and three members of 1861:. (The developers were unaware that while they were shoehorning the code into 28 kb sections, IBM Poughkeepsie was finally ready to ship virtual memory support in OS/360). It supported the batch programming environments and, under TSO and CMS, it could be run interactively. This compiler went through many versions covering all mainframe operating systems including the operating systems of the Japanese 1807:). The performance objectives set for the compilers are shown in an IBM presentation to the BCS. The compilers had to produce identical results – the Checkout Compiler is used to debug programs that would then be submitted to the Optimizer. Given that the compilers had entirely different designs and were handling the full PL/I language this goal was challenging: it was achieved. 1683:), Craig Franklin (Data General), Lois Frampton (Digital Equipment Corporation), and editor, D.J. Andrews of IBM undertook to rewrite the entire document, each producing one or more complete chapters. The standard is couched as a formal definition using a "PL/I Machine" to specify the semantics. It was the first programming language standard to be written as a semi-formal definition. 3420:
the result to a float decimal? Go ahead! Free a controlled variable procedure parameter and reallocate it before passing it back? Overlay three different types of variable on the same memory location? Anything you say! Write a recursive macro? Well, no, but Real Men use rescan. How could a language so obviously designed and written by Real Men not be intended for Real Man use?
3415:-similarities to COBOL, Fortran, and ALGOL. These were PL/I elements that looked similar to one of those languages, but worked differently in PL/I. Such frustrations left many experienced programmers with a jaundiced view of PL/I, and often an active dislike for the language. An early UNIX fortune file contained the following tongue-in-cheek description of the language: 3720:-units, allowed the program to stay in control in the face of hardware or operating system exceptions and to recover debugging information before closing down more gracefully. As a program became properly debugged, most of the exception handling could be removed or disabled: this level of control became less important when conversational execution became commonplace. 1579:, and particularly that from IBM implement many extensions over the standardized version of the language. The IBM extensions are summarised in the Implementation sub-section for the compiler later. Although there are some extensions common to these compilers the lack of a current standard means that compatibility is not guaranteed. 3686:
computer science. In addition to the problem of wild references and buffer overruns, issues arise due to the alignment and length for data types used with particular machines and compilers. Many cases where pointer arithmetic might be needed involve finding a pointer to an element inside a larger data structure. The
3336:
PL/I, took added implementation effort and additional compiler passes. A PL/I compiler was two to four times as large as comparable Fortran or COBOL compilers, and also that much slower—supposedly offset by gains in programmer productivity. This was anticipated in IBM before the first compilers were written.
553:: each capability to be independent of other capabilities and freely combined with other capabilities wherever meaningful. Each capability to be available in all contexts where meaningful, to exploit it as widely as possible and to avoid "arbitrary restrictions". Orthogonality helps make the language "large". 2113:
The latest series of PL/I compilers for z/OS, called Enterprise PL/I for z/OS, leverage code generation for the latest z/Architecture processors (z14, z13, zEC12, zBC12, z196, z114) via the use of ARCHLVL parm control passed during compilation, and was the second High level language supported by z/OS
1844:
The PL/I optimizing compiler took over from the PL/I F compiler and was IBM's workhorse compiler from the 1970s to the 1990s. Like PL/I F, it is a multiple pass compiler with a 44 kilobyte design point, but it is an entirely new design. Unlike the F compiler, it has to perform compile time evaluation
425:
The language was first specified in detail in the manual "PL/I Language Specifications. C28-6571", written in New York in 1965, and superseded by "PL/I Language Specifications. GY33-6003", written by Hursley in 1967. IBM continued to develop PL/I in the late sixties and early seventies, publishing it
3407:
due to a perceived complexity of the language and immaturity of the PL/I F compiler. Programmers were sharply divided into scientific programmers (who used Fortran) and business programmers (who used COBOL), with significant tension and even dislike between the groups. PL/I syntax borrowed from both
3419:
Speaking as someone who has delved into the intricacies of PL/I, I am sure that only Real Men could have written such a machine-hogging, cycle-grabbing, all-encompassing monster. Allocate an array and free the middle third? Sure! Why not? Multiply a character string times a bit string and assign
2956:
on System 370) and application generators became the focus of mainframe users' application development. Significant parts of the language became irrelevant because of the need to use the corresponding native features of the subsystems (such as tasking and much of input/output). Fortran was not used
1715:
Operating System, built by John Nash's team at Hursley in the UK: the runtime library team was managed by I.M. (Nobby) Clarke. The PL/I F compiler was written entirely in System/360 assembly language. Release 1 shipped in 1966. OS/360 is a real-memory environment and the compiler was designed for
6324:
The compiler cannot tell whether a statement is a declaration or a multiple assignment statement until encountering the "=" of the assignment or ";" of the DECLARE—which can be several lines later. The fact that DECLARE/DCL were not reserved is the proximate cause in this example –
3661:
Record I/O and list processing produce situations where the programmer needs to fit a declaration to the storage of the next record or item, before knowing what type of data structure it has. Based variables and pointers are key to such programs. The data structures must be designed appropriately,
2982:
On mainframes there were substantial business issues at stake too. IBM's hardware competitors had little to gain and much to lose from success of PL/I. Compiler development was expensive, and the IBM compiler groups had an in-built competitive advantage. Many IBM users wished to avoid being locked
2049:
and AIX. IBM continued to add functions to make PL/I fully competitive with other languages (particularly C and C++) in areas where it had been overtaken. The corresponding "IBM Language Environment" supports inter-operation of PL/I programs with Database and Transaction systems, and with programs
1996:
compilers which supported a sequence of subsets of PL/I called SP/1, SP/2, SP/3, ..., SP/8 for teaching programming. Programs that ran without errors under the SP/k compilers produced the same results under other contemporary PL/I compilers such as IBM's PL/I F compiler, IBM's checkout compiler or
1963:, 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. The language was almost all of PL/I as implemented by IBM. PL/C was a very fast compiler. 1871:
The PL/I checkout compiler, (colloquially "The Checker") announced in August 1970 was designed to speed and improve the debugging of PL/I programs. The team was led by Brian Marks. The three-pass design cut the time to compile a program to 25% of that taken by the F Compiler. It can be run from an
473:
To achieve these goals, PL/I borrowed ideas from contemporary languages while adding substantial new capabilities and casting it with a distinctive concise and readable syntax. Many principles and capabilities combined to give the language its character and were important in meeting the language's
3706:
With the prevalence of C and its free and easy attitude to pointer arithmetic, recent IBM PL/I compilers allow pointers to be used with the addition and subtraction operators to giving the simplest syntax (but compiler options can disallow these practices where safety and machine independence are
3685:
declaration can be used with a pointer into the storage to access the storage – inherently unsafe and machine dependent. However, this usage has become important for "pointer arithmetic" (typically adding a certain amount to a known address). This has been a contentious subject in
2656:
language for IBM mainframes. Almost all IBM mainframe system software in the 1970s and 1980s was written in PL/S. It differed from PL/I in that there were no data type conversions, no run-time environment, structures were mapped differently, and assignment was a byte by byte copy. All strings and
2053:
The PL/I design principles were retained and withstood this major extension, comprising several new data types, new statements and statement options, new exception conditions, and new organisations of program source. The resulting language is a compatible super-set of the PL/I Standard and of the
1880:
Perhaps the most commercially successful implementation aside from IBM's was Digital Equipment Corporation's VAX-11 PL/I, later known as VAX PL/I, then DEC PL/I. The implementation is "a strict superset of the ANSI X3.4-1981 PL/I General Purpose Subset and provides most of the features of the new
1595:
established a "Composite Language Development Committee", nicknamed "Kludge", later renamed X3J1 PL/I. Standardization became a joint effort of ECMA TC/10 and ANSI X3J1. A subset of the GY33-6003 document was offered to the joint effort by IBM and became the base document for standardization. The
3335:
Though the language is easy to learn and use, implementing a PL/I compiler is difficult and time-consuming. A language as large as PL/I needed subsets that most vendors could produce and most users master. This was not resolved until "ANSI G" was published. The compile time facilities, unique to
2991:
This article uses the PL/I standard as the reference point for language features. But a number of features of significance in the early implementations were not in the Standard; and some were offered by non-IBM compilers. And the de facto language continued to grow after the standard, ultimately
2932:
PL/I did not fulfill its supporters' hopes that it would displace Fortran and COBOL and become the major player on mainframes. It remained a minority but significant player. There cannot be a definitive explanation for this, but some trends in the 1970s and 1980s militated against its success by
3081:
statement was in the Standard, but the rest of the features were not. The DEC and Kednos PL/I compilers implemented much the same set of features as IBM, with some additions of their own. IBM has continued to add preprocessor features to its compilers. The preprocessor treats the written source
3390:
An undeclared variable is, by default, declared by first occurrence—thus misspelling might lead to unpredictable results. This "implicit declaration" is no different from FORTRAN programs. For PL/I(F), however, an attribute listing enables the programmer to detect any misspelled or undeclared
3552:-attribute, code to set it to an initial value is executed at this time. Care is required to manage the use of initialization properly. Large amounts of code can be executed to initialize variables every time a scope is entered, especially if the variable is an array or structure. Storage for 3228:
The feature allowed programmers to use identifiers for constants – e.g. product part numbers or mathematical constants – and was superseded in the standard by named constants for computational data. Conditional compiling and iterative generation of source code,
989:
There are no reserved words in PL/I. A statement is terminated by a semi-colon. The maximum length of a statement is implementation defined. A comment may appear anywhere in a program where a space is permitted and is preceded by the characters forward slash, asterisk and is terminated by the
985:
Values are computed by expressions written using a specific set of operations and builtin functions, most of which may be applied to aggregates as well as to single values, together with user-defined procedures which, likewise, may operate on and return aggregate as well as single values. The
1678:
As language development neared an end, X3J1/TC10 realized that there were a number of problems with a document written in English text. Discussion of a single item might appear in multiple places which might or might not agree. It was difficult to determine if there were omissions as well as
4801:
Reacting to IBM's involvement, a number of manufacturers had been reluctant to endorse an effort on a Standard. The initial remit of CLDG/X3J1 was to investigate whether PL/I was a suitable candidate for standardization. The joint effort processed over 3500 proposals for language or textual
394:
IBM took NPL as a starting point and completed the design to a level that the first compiler could be written: the NPL definition was incomplete in scope and in detail. Control of the PL/I language was vested initially in the New York Programming Center and later at the IBM UK Laboratory at
3408:
COBOL and Fortran syntax. So instead of noticing features that would make their job easier, Fortran programmers of the time noticed COBOL syntax and had the opinion that it was a business language, while COBOL programmers noticed Fortran syntax and looked upon it as a scientific language.
5030: 1675:, and various government and university representatives. Further development of the language occurred in the standards bodies, with continuing improvements in structured programming and internal consistency, and with the omission of the more obscure or contentious features. 403:
user groups were involved in extending the language and had a role in IBM's process for controlling the language through their PL/I Projects. The experience of defining such a large language showed the need for a formal definition of PL/I. A project was set up in 1967 in
1790:
compiler-compiler. The influential Multics PL/I compiler was the source of compiler technology used by a number of manufacturers and software groups. EPL was a system programming language and a dialect of PL/I that had some capabilities absent in the original PL/I.
3715:
When PL/I was designed, programs only ran in batch mode, with no possible intervention from the programmer at a terminal. An exceptional condition such as division by zero would abort the program yielding only a hexadecimal core dump. PL/I exception handling, via
3314:
PL/I had been conceived in a single-byte character world. With support for Japanese and Chinese language becoming essential, and the developments on International Code Pages, the character string concept was expanded to accommodate wide non-ASCII/EBCDIC strings.
1749:
low end operating system. It implements a subset of the PL/I language requiring all strings and arrays to have fixed extents, thus simplifying the run-time environment. Reflecting the underlying operating system, it lacks dynamic storage allocation and the
1802:
The PL/I Optimizer and Checkout compilers produced in Hursley support a common level of PL/I language and aimed to replace the PL/I F compiler. The checkout compiler is a rewrite of PL/I F in BSL, IBM's PL/I-like proprietary implementation language (later
818:
Names may be declared to represent data of the following types, either as single values, or as aggregates in the form of arrays, with a lower-bound and upper-bound per dimension, or structures (comprising nested structure, array and scalar variables):
2024:
In a major revamp of PL/I, IBM Santa Teresa in California launched an entirely new compiler in 1992. The initial shipment was for OS/2 and included most ANSI-G features and many new PL/I features. Subsequent releases provided additional platforms
1917:
In the late 1960s and early 1970s, many US and Canadian universities were establishing time-sharing services on campus and needed conversational compiler/interpreters for use in teaching science, mathematics, engineering, and computer science.
3082:
program as a sequence of tokens, copying them to an output source file or acting on them. When a % token is encountered the following compile time statement is executed: when an identifier token is encountered and the identifier has been
3867:
I/O statements have relatively simple syntax as they do not offer options for the many situations from end-of-file to record transmission errors that can occur when a record is read or written. Instead, these complexities are handled in the
3638:
There are several ways of accessing allocated storage through different data declarations. Some of these are well defined and safe, some can be used safely with careful programming, and some are inherently unsafe or machine dependent.
5697: 2957:
in these application areas, confining PL/I to COBOL's territory; most users stayed with COBOL. But as the PC became the dominant environment for program development, Fortran, COBOL and PL/I all became minority languages overtaken by
3382:
support (an IBM extension to the language) which add cost and complexity to the compiler, and its co-processing facilities require a multi-programming environment with support for non-blocking multiple threads for processes by the
2468:-statement executed in an ON-unit terminates execution of the ON-unit, and raises the condition again in the procedure that called the current one (thus passing control to the corresponding ON-unit for that procedure). 585:
construct is used to include text from other sources during program translation. All of the statement types are summarized here in groupings which give an overview of the language (the Standard uses this organization).
2968:
Second, PL/I was overtaken in the system programming field. The IBM system programming community was not ready to use PL/I; instead, IBM developed and adopted a proprietary dialect of PL/I for system programming. –
4643:
Control of the language was vested in a dedicated Language Control group and a Language Control Board that included representatives of the compiler groups (6 by 1973) in three countries. Daily communication was by
3891:-units. Values of variables that might otherwise be kept in registers between statements, may need to be returned to storage between statements. This is discussed in the section on Implementation Issues above. 371:, the IBM scientific users group, to propose these extensions to Fortran. Given the constraints of Fortran, they were unable to do this and embarked on the design of a new programming language based loosely on 1926:, but PL/I was a popular choice, as it was concise and easy to teach. As the IBM offerings were unsuitable, a number of schools built their own subsets of PL/I and their own interactive support. Examples are: 3370:
statements" in (unseen) callers. Together, these make it difficult to reliably predict when a program's variables might be modified at runtime. In typical use, however, user-written error handlers (the
441:
The goals for PL/I evolved during the early development of the language. Competitiveness with COBOL's record handling and report writing was required. The language's scope of usefulness grew to include
273:. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s. 1686:
A "PL/I General-Purpose Subset" ("Subset-G") standard was issued by ANSI in 1981 and a revision published in 1987. The General Purpose subset was widely adopted as the kernel for PL/I implementations.
3678:
ed fields are placed ahead of the "real" data. If the records in a data set, or the items in a list of data structures, are organised this way they can be handled safely in a machine independent way.
3322:, with the introduction of the DATETIME function that returned the date and time in one of about 35 different formats. Several other date functions deal with conversions to and from days and seconds. 4648:. Changes and extensions were made through a Language Log that reached several thousand detailed points. A management level Language Review Board resolved issues escalated to it by the Control Board. 2501:
A number of vendors produced compilers to compete with IBM PL/I F or Optimizing compiler on mainframes and minicomputers in the 1970s. In the 1980s the target was usually the emerging ANSI-G subset.
2170:
in early PL/I specifications) permits several scalar variables, arrays, or structures to share the same storage in a unit that occupies the amount of storage needed for the largest alternative.
5705: 4054:
HERE(-1): PUT LIST ("I O U"); GO TO Lottery; HERE(0): PUT LIST ("No Cash"); GO TO Lottery; HERE(1): PUT LIST ("Dollar Bill"); GO TO Lottery; HERE(2): PUT LIST ("TWO DOLLARS"); GO TO Lottery;
3440:
meant PL/I was indeed quite a leap forward compared to the programming languages of its time. However, these were not enough to persuade a majority of programmers or shops to switch to PL/I.
3411:
Both COBOL and Fortran programmers viewed it as a "bigger" version of their own language, and both were somewhat intimidated by the language and disinclined to adopt it. Another factor was
3275:
PL/I F had offered some debug facilities that were not put forward for the standard but were implemented by others – notably the CHECK(variable-list) condition prefix,
2979:
Fourth, features such as structured programming, character string operations, and object orientation were added to COBOL and Fortran, which further reduced PL/I's relative advantages.
2884:
It has been widely used in business data processing and for system use for writing operating systems on certain platforms. Very complex and powerful systems have been built with PL/I:
2814:
is a real-time aerospace programming language, best known for its use in the Space Shuttle program. It was designed by Intermetrics in the 1970s for NASA. HAL/S was implemented in XPL.
2545:
Paul Abrahams of NYU's Courant Institute of Mathematical Sciences wrote CIMS PL/I in 1972 in PL/I, bootstrapping via PL/I F. It supported "about 70%" of PL/I compiling to the CDC 6600
2853:
PL/I implementations were developed for mainframes from the late 1960s, mini computers in the 1970s, and personal computers in the 1980s and 1990s. Although its main use has been on
1742:, adapted at the IBM Mohansic Lab. The IBM La Gaude Lab in France developed "Language Conversion Programs" to convert Fortran, Cobol, and Algol programs to the PL/I F level of PL/I. 566:), not part of the standard, for tailoring and combining sections of source code into complete programs. External names to bind separately compiled procedures into a single program. 2256:
New string-handling functions were added – to centre text, to edit using a picture format, and to trim blanks or selected characters from the head or tail of text,
5698:"Enterprise > Micro Focus Studio Enterprise Edition for UNIX > Welcome > Product Information > Installing Studio Enterprise Edition for UNIX > System Requirements" 6720: 2976:
Third, the development environments grew capabilities for interactive software development that, again, made the unique PL/I interactive and debugging strengths less valuable.
1881:
ANSI X3.74-1987 PL/I General Purpose Subset", and was first released in 1980. It originally used a compiler backend named the VAX Code Generator (VCG) created by a team led by
3347:
when it encounters a keyword used in an incorrect context, it often assumes it is a variable name. This leads to "cascading diagnostics", a problem solved by later compilers.
2436:
The package construct consisting of a set of procedures and declarations for use as a unit. Variables declared outside of the procedures are local to the package, and can use
1719:
Aspects of the language were still being designed as PL/I F was implemented, so some were omitted until later releases. PL/I RECORD I/O was shipped with PL/I F Release 2. The
539:
initially proved to be impossible to meet this goal). New attributes, statements and statement options could be added to PL/I without invalidating existing programs. Not even
339:
In the 1950s and early 1960s, business and scientific users programmed for different computer hardware using different programming languages. Business users were moving from
2240:
attribute for controlling date representations and additions to bring time and date to best current practice. New functions for manipulating dates include –
3008:, under the name "multitasking", was implemented by PL/I F, the PL/I Checkout and Optimizing compilers, and the newer AIX and Z/OS compilers. It comprised the data types 5726: 3860:-unit, control might pass to the operating system where a system dump might be produced, or, for some computational conditions, continue execution (as mentioned above). 517:
An extensive structure of defaults in statements, options, and declarations to hide some complexities and facilitate extending the language while minimizing keystrokes.
3658:) to allow different definitions of data to share the same storage. This was not supported by many early IBM compilers. These usages are safe and machine independent. 2133:
but in addition the name and internal values are accessible via built-in functions. Built-in functions provide access to an ordinal value's predecessor and successor.
578:
The language is designed to be all things to all programmers. The summary is extracted from the ANSI PL/I Standard and the ANSI PL/I General-Purpose Subset Standard.
5667: 1727: – were first shipped in Release 4. In a major attempt to speed up PL/I code to compete with Fortran object code, PL/I F Release 5 does substantial 4657:
The Universal Language Document (ULD). Technical reports TR25.081, TR25.082, TR25.083, TR25.0S4, TR25.085, TR25.086 and TR25.087, IBM Corp Vienna Austria June 1968
331:
handling. 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.
4756:"PL/I is the first language to provide adequate facilities for scientific computations, business data processing and systems programming in a single language" - 1615:
Proposals to change the base document were voted upon by both committees. In the event that the committees disagreed, the chairs, initially Michael Marcotty of
1057:
statement. The body of a procedure is a sequence of blocks, groups, and statements and contains declarations for names and procedures local to the procedure or
3052:
files. Event data identify a particular event and indicate whether it is complete ('1'B) or incomplete ('0'B): task data items identify a particular task (or
2475:
condition handles invalid operation codes detected by the PC processor, as well as illegal arithmetic operations such as subtraction of two infinite values.
6085: 5995: 3090:
d, and assigned a compile time value, the identifier is replaced by this value. Tokens are added to the output stream if they do not require action (e.g.
6963: 3283:
option. The IBM Optimizing and Checkout compilers added additional features appropriate to the conversational mainframe programming environment (e.g. an
6239: 2403:
name for a set of structure attributes and corresponding substructure member declarations for use in a structure declaration (a generalisation of the
6162:
Open PL/I estimated that in 1995 20% of mainframe legacy applications were in PL/I, with 60% in COBOL: there were 300,000 PL/I programmers worldwide
3375:-unit) often do not make assignments to variables. In spite of the aforementioned difficulties, IBM produced the PL/I Optimizing Compiler in 1971. 2808:
is a dialect of PL/I used to write other compilers using the XPL compiler techniques. XPL added a heap string datatype to its small subset of PL/I.
4726:
Some compilers chose to reserve these identifiers, or issue warnings if they found them used as identifiers. But the subsequent introduction of a
4715:
NPL is designed to serve the needs of an unusually large group of programmers, including scientific, business, real time, and systems programmers.
2109:
Compile time preprocessor extended to offer almost all PL/I string handling features and to interface with the Application Development Environment
1973:(Student Language/1, Student Language/One or Subset Language/1) was a PL/I subset, initially available late 1960s, that ran interpretively on the 815:
are not in the Standard but are supported in the PL/I F compiler and some other implementations are discussed in the Language evolution section.)
6403: 5163: 3642:
Passing a variable as an argument to a parameter by reference allows the argument's allocated storage to be referenced using the parameter. The
6958: 6691: 3681:
PL/I implementations do not (except for the PL/I Checkout compiler) keep track of the data structure used when storage is first allocated. Any
1951:
aimed at teaching computer science basics, offered a limited subset of the PL/I language in addition to BASIC and a remote job entry facility.
1909:, who later sold it to a company named Kednos. Kednos marketed the compiler as Kednos PL/I until October 2016 when the company ceased trading. 5852: 2817:
IBM and various subcontractors also developed another PL/I variant in the early 1970s to support signal processing for the Navy called SPL/I.
2661:
option. PL/S was succeeded by PL/AS, and then by PL/X, which is the language currently used for internal work on current operating systems,
6777: 3841:
preventing a return to the point of interrupt, but permitting the program to continue execution elsewhere as determined by the programmer.
3237:
Structured programming additions were made to PL/I during standardization but were not accepted into the standard. These features were the
6294: 3650:) allows part or all of a variable's storage to be used with a different, but consistent, declaration. The language definition includes a 3343:
are not reserved so programmers can use them as variable or procedure names in programs. Because the original PL/I(F) compiler attempts
1588: 6744: 5008: 5569: 4893:
These were designed in 1966 for an early Optimizing compiler, written in PL/I and to be bootstrapped starting with the PL/I F compiler
6943: 6938: 6933: 6928: 5299: 3354:(needed to compete with the excellent program optimization carried out by available Fortran compilers) is unusually complex owing to 6761: 6275: 2973:. With the success of PL/S inside IBM, and of C outside IBM, the unique PL/I strengths for system programming became less valuable. 2229:
option on iterative groups enabling a counter-controlled loop to be executed without exceeding the limit value (also essential for
31: 4057:
Statement label variables can be passed to called procedures, and used to return to a different statement in the calling routine.
3805:-statement. With some conditions it is possible to complete executing an ON-unit and return to the point of interrupt (e.g., the 121: 2690:
Two dialects of PL/I named PL/MP (Machine Product) and PL/MI (Machine Interface) were used by IBM in the system software of the
2567:
PL/I is an extended subset of ANSI Programming Language PL/I (ANSI X3.53-1976) for the IBM Series/1 Realtime Programming System.
6948: 6730: 3576:
storage is managed using a stack, but the pushing and popping of allocations on the stack is managed by the programmer, using
3472:
PL/I provides several 'storage classes' to indicate how the lifetime of variables' storage is to be managed –
3229:
possible with compile-time facilities, was not supported by the standard. Several manufacturers implemented these facilities.
3077:
was built by the IBM Boston Advanced Programming Center located in Cambridge, Mass, and shipped with the PL/I F compiler. The
1231:
A declaration of an identifier may contain one or more of the following attributes (but they need to be mutually consistent):
510:
Concise syntax for expressions, declarations, and statements with permitted abbreviations. Suitable for a character set of 60
6737: 6660: 6630: 6611: 6592: 6499: 5784: 4749: 4429: 4393: 1679:
inconsistencies. Consequently, David Beech (IBM), Robert Freiburghouse (Honeywell), Milton Barber (CDC), M. Donald MacLaren (
1592: 5635: 6235:
says OS/360 should have been written in PL/I not PL/S and Assembler. The article is a great summary of the OS/360 program.
6141: 2834: 2050:
written in C, C++, and COBOL, the compiler supports all the data types needed for intercommunication with these languages.
6304: 1987:, used a simplified subset of the PL/I language and focused on good diagnostic error messages and fast compilation times. 6176: 5680: 5423: 1002:
statements) or label name, and a condition prefix enabling or disabling a computational condition – e.g.
2482:
condition is provided to intercept conditions for which no specific ON-unit has been provided in the current procedure.
6204: 5126: 6256: 3770:-units established by the invoking activation are inherited by the new activation. They may be over-ridden by another 2687:, is an instructional dialect of the PL/I computer programming language, developed at Cornell University in the 1970s. 1849:
operating system in August 1971, and shortly afterward for OS/360, and the first virtual memory IBM operating systems
6546: 6527: 5540: 4346: 1984: 1943: 3630:. Data can be allocated and freed within a specific area, and the area can be deleted, read, and written as a unit. 3350:
The effort needed to produce good object code was perhaps underestimated during the initial design of the language.
5926: 1006:). Entry and label names may be single identifiers or identifiers followed by a subscript list of constants (as in 4703: 4685: 1774:, used Early PL/I (EPL), a subset dialect of PL/I, as their implementation language in 1964. EPL was developed at 6116: 2318:
attribute declares an identifier as a constant (derived from a specific literal value or restricted expression).
1771: 1624: 6026: 5240: 3723:
Computational exception handling is enabled and disabled by condition prefixes on statements, blocks (including
5593: 3425: 3355: 5048: 2924:
operating system were originally written in PL/I, but were later rewritten in C during the port of VMS to the
6236: 5192: 4341: 3529: 2949: 2126: 1783: 1640: 360: 3793:-unit is in effect when a condition is raised a standard system action is taken (often this is to raise the 2736:, so-called because it was about 80% of PL/I, was originally developed by IBM Research in the 1970s for the 6751: 4920: 4875: 4692: 3300: 3295:
Several attempts had been made to design a structure member type that could have one of several datatypes (
2830: 6375:
Enterprise PL/I for z/OS PL/I for AIX Rational Developer for System z PL/I for Windows: Language Reference
581:
A PL/I program consists of a set of procedures, each of which is written as a sequence of statements. The
30:"New programming language" redirects here. For the process of implementing new programming languages, see 6912: 6084:
J. von Buttlar; H. Bohm; R. Ernst; A. Horsch; A. Kohler; H. Schein; M. Stetter; K. Theurich (July 2002).
6051: 5979:
The result was the PL.8 language, the ".8" implying that it had about 80 percent of the richness of PL/I.
4333: 3437: 2962: 2914: 2788: 1680: 550: 463:
Improved productivity of the programming process, transferring effort from the programmer to the compiler
379:. This acronym conflicted with that of the UK's National Physical Laboratory and was replaced briefly by 4048:
The programmer can also create an array of static label constants by subscripting the statement labels.
2515:
released a UNIVAC PL/I, and in the 1970s also used a variant of PL/I, PL/I PLUS, for system programming.
6898: 6059:. SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction. ACM. pp. 22–31. 5949: 4467: 2983:
into proprietary solutions. With no early support for PL/I by other vendors it was best to avoid PL/I.
2448:
storage. Procedure names used in the package also are local, but can be made external by means of the
6787:
Liant Software Corporation (1994), Open PL/I Language Reference Manual, Rev. Ed., Framingham (Mass.).
6440: 6426: 5806: 5265: 4561: 3448: 562:
Programs divided into separately compilable sections, with extensive compile-time facilities (a.k.a.
413: 324: 408:
to make an unambiguous and complete specification. This led in turn to one of the first large scale
6864: 6771:
IBM, OS/2 PL/I Version 2: Programming: Language Reference, 3rd Ed., Form SC26-4308, San Jose. 1994.
3525: 2838: 2707: 2548: 1632: 563: 500:
A wide range of computational data types, program control data types, and forms of data structure (
447: 6790:
Nixdorf Computer, "Terminalsystem 8820 Systemtechnischer Teil PL/I-Subset",05001.17.8.93-01, 1976.
6454: 6174:
Schultz, G.; D.Rose; C.West; J.Gray (April 1980). "Executable description and validation of SNA".
4851: 4365: 3674:
is used to allocate instances of the data structure. For self-defining structures, any typing and
3267:
These features were all included in IBM's PL/I Checkout and Optimizing compilers and in DEC PL/I.
2899:
was originally written for the IBM 7090 in assembler. The S/360 version was largely written using
5575: 5390: 5218: 5186: 4852:"The first 35+ years of Hursley software 1958-1993 with some hardware asides, a personal account" 2896: 2824: 2764: 2009: 1934: 1794:
The Honeywell PL/I compiler (for Series 60) is an implementation of the full ANSI X3J1 standard.
466: 6806: 6774: 5844: 3599:, but instead of a stack these allocations have independent lifetimes and are addressed through 2748:
architectures. It continues to be used for several IBM internal systems development tasks (e.g.
6826: 6298: 3570:
variables are used to retain variables' contents between invocations of a procedure or block.
2941: 521: 312: 304: 262: 258: 56: 52: 48: 3782:-statement – e.g. to help debug the exception handlers. The dynamic inheritance principle for 2542:
operating systems. A number of operating system utility programs were written in the language.
1068:
is a single statement or block of statements written to be executed when one or more of these
6953: 6860: 6822: 6726:
Fujitsu Ltd, "Facom OS IV PL/I Reference Manual", 70SP5402E-1,1974. 579 pages. PL/I F subset.
4671: 4667: 3433: 3379: 2506: 2030: 1648: 1597: 808: 405: 308: 288: 5994:
W. Gellerich; T. Hendel; R. Land; H. Lehmann; M. Mueller; P. H. Oden; H. Penner (May 2004).
3887:-units can have an effect on optimization, because variables can be inspected or altered in 2936:
First, the nature of the mainframe software environment changed. Application subsystems for
2114:
Language Environment to do so (XL C/C++ being the first, and Enterprise COBOL v5 the last.)
5996:"The GNU 64-bit PL8 compiler: Toward an open standard environment for firmware development" 5068: 4821: 4448: 3786:-units allows a routine to handle the exceptions occurring within the subroutines it uses. 3359: 3351: 3303:
in programming theory, approaches to this became possible on a PL/I base –
2870: 2527: 2523: 1728: 1700: 1601: 507:
Dynamic extents for arrays and strings with inheritance of extents by procedure parameters.
292: 266: 43: 17: 5901: 5875: 5295: 3731:. Operating system exceptions for Input/Output and storage management are always enabled. 3693:
Pointer arithmetic may be accomplished by aliasing a binary variable with a pointer as in
8: 6758: 6716:
CDC. R. A. Vowels, "PL/I for CDC Cyber". Optimizing compiler for the CDC Cyber 70 series.
6713:
Burroughs Corporation, "B 6700 / B 7700 PL/I Language Reference", 5001530. Detroit, 1977.
5099: 4480: 3094:), as are the values of ACTIVATEd compile time expressions. Thus a compile time variable 3053: 3033: 3025: 2652:, a dialect of PL/I, initially called BSL was developed in the late 1960s and became the 2621:
implemented Open PL/I for Windows and UNIX/Linux systems, which they acquired from Liant.
1739: 478: 454:
Performance of compiled code competitive with that of Fortran (but this was not achieved)
400: 3611:
variables can also be used to address arbitrary storage areas by setting the associated
3544:-unit in which they are declared. The compiler and runtime system allocate memory for a 2096:
Improvements in readability of programs – often rendering implied usages explicit (e.g.
1745:
The PL/I D compiler, using 16 kilobytes of memory, was developed by IBM Germany for the
6681: 6108: 6086:"z/CECSIM: An efficient and comprehensive microcode simulator for the IBM eServer z900" 6018: 5825: 5437: 5348: 4626: 4580: 4522: 4501: 4414: 4369: 3627: 3363: 3005: 2854: 2703: 2653: 1960: 556: 443: 320: 296: 6849: 6373: 3754:-unit. When the exception for this condition occurs and the condition is enabled, the 3548:
to contain them and other housekeeping information. If a variable is declared with an
433:
The first compiler was delivered in 1966. The Standard for PL/I was approved in 1976.
6626: 6607: 6588: 6542: 6523: 6495: 5934: 5780: 5668:"What's New in Studio and Server Enterprise Edition 6.0 Service Pack 2 - Wrap Pack 1" 5536: 4903: 4902:
There were many delays in shipping these, so a common PL/I joke at the time was that
4745: 4444:
The committee actually had 8 members at the time the report was released. They were:
4425: 4389: 3155:%procedure_name: PROCEDURE (parameter list) RETURNS (type); statements...; %END; 3065: 2862: 2042: 1919: 1672: 812: 490: 368: 72: 6112: 6022: 5441: 4630: 4584: 2933:
progressively reducing the territory on which PL/I enjoyed a competitive advantage.
2306:
and attributes were added for omitted arguments and variable length argument lists.
6885: 6348: 6185: 6100: 6060: 6010: 5964: 5930: 5829: 5815: 5579: 5526: 5455: 5427: 5244: 5167: 5108: 5077: 4616: 4570: 4038:
attribute), which can store the value of a statement label, and later be used in a
3384: 2795: 2596: 2531: 1906: 1045:) may contain declarations for names and internal procedures local to the block. A 220: 161: 2085:
Additional data types and attributes corresponding to common PC data types (e.g.
1933:
implemented the Remote Users of Shared Hardware (RUSH) time sharing system for an
6781: 6765: 6243: 5774: 5645: 4607: 4473: 2953: 2892:
was initially written in PL/I; the SAS data step is still modeled on PL/I syntax.
2770: 2303: 1868:
The compiler has been superseded by "IBM PL/I for OS/2, AIX, Linux, z/OS" below.
1862: 1779: 1724: 1720: 559:
capabilities for controlling and intercepting exceptional conditions at run time.
284: 63: 6844: 6149: 3837:
condition is raised when this is attempted. An ON-unit may be terminated with a
3121:
strings of varying length with no maximum length. The structure statements are:
105: 6891: 4727: 4523:"Datamation in Business & Science ANOTHER NEW NAME, MORE COMPILERS FOR NPL" 3456: 3258: 2784: 2778: 2757: 2741: 2699: 2578: 2551:
delivered an optimizing subset PL/I compiler for Cyber 70, 170 and 6000 series.
2155:
data type, but strongly typed to bind only to a particular data structure. The
1787: 1644: 1616: 528: 409: 364: 316: 6189: 5296:"Teaching the Fatal Disease (or) Introductory Computer Programming Using PL/I" 5210: 1990:
The Computer Systems Research Group of the University of Toronto produced the
6922: 6870: 5748: 5082: 5063: 4961: 4542:
Report II of the SHARE Advanced Language Development Committee, June 25, 1964
4461: 3520:
variables, similar to that of other block-structured languages influenced by
2702:
of these platforms, and targeted the IMPI instruction set. PL/MI targets the
1930: 1723:
functions – Based Variables, Pointers, Areas and Offsets and
1668: 1660: 1037:
part (see the sample program). The group is the unit of iteration. The begin
501: 494: 457: 388: 195: 6888:, source code in book form, by David Sligar (1977), for IBM PL/1 F compiler. 3902:
Syntax for both COBOL and FORTRAN exist for coding two special two types of
3899:
PL/I has counterparts for COBOL and FORTRAN's specialized GO TO statements.
3387:. Compiler writers were free to select whether to implement these features. 2718:. The PL/MP code was mostly replaced with C++ when OS/400 was ported to the 5631: 4552: 4454: 3943:
There are other/helpful restrictions on these, especially "in programs ...
3444: 3073: 2841: 2730:
architecture. The PL/MI code was not replaced, and remains in use in IBM i.
2564: 2519: 2125:
is a new computational data type. The ordinal facilities are like those in
1636: 1620: 967: 185: 6641: 6064: 5820: 5801: 5531: 5432: 5411: 5248: 4621: 4602: 4575: 4556: 3984:(which restricts the variable's value to "one of the labels in the list.") 3872:-units for the various file conditions. The same approach was adopted for 2913:
PL/I was used to write an executable formal definition to interpret IBM's
469:
to operate effectively on the main computer hardware and operating systems
6232: 5675: 5640: 5206: 5171: 4943: 4757: 3616: 3545: 3319: 2618: 2558: 1882: 1576: 419: 396: 6796:
Q1 Corporation, "The Q1/LMC Systems Software Manual", Farmingdale, 1978.
6702:
Information technology—Programming languages—PL/I general purpose subset
6677:
Information Systems - Programming Language - PL/I General-Purpose Subset
6671:
Information Systems - Programming Language - PL/I General-Purpose Subset
6104: 6014: 5968: 5334: 5112: 4791:
Information Systems - Programming Language - PL/I General-Purpose Subset
1885:. The front end was designed by Robert Freiburghouse, and was ported to 199: 6353: 6264:(Fifth ed.). December 1972. Chapter 15: Multitasking. GC28-8201-4. 3829:
conditions) and resume normal execution. With other conditions such as
2903:, a purpose-built subset PL/I compiler for a dedicated control program. 2889: 2745: 1704: 328: 6759:
Enterprise PL/I for z/OS Version 4 Release 1 Language Reference Manual
6283:(Fifth ed.). October 1976. Chapter 17: Multitasking. GC33-0009-4. 6083: 5993: 4965: 4877:
IBM System/360 Operating System PL/I (F) Compiler Program Logic Manual
4762:
Some Approaches to, and Illustrations of, Programming Language History
4511:. Vol. 11, no. 4. FRANK D. THOMPSON. April 1965. p. 17. 5525:. 1979 SIGPLAN symposium on Compiler construction. pp. 107–116. 4987: 4532:. Vol. 11, no. 6. FRANK D. THOMPSON. June 1965. p. 17. 4421: 4124:/* and then print every subsequent line that contains that string. */ 3848:-unit needs to be designed to deal with exceptions that occur in the 3762:-units are inherited down the call chain. When a block, procedure or 3666:-option is used for self-defining extents (e.g. string lengths as in 3429: 3362:
of variables. Unpredictable modification can occur asynchronously in
2900: 2820: 2749: 2727: 2691: 2582: 2539: 1938: 1898: 1775: 1762:
Compilers were implemented by several groups in the early 1960s. The
1628: 482: 340: 300: 6907: 6745:
OS PL/I Checkout and Optimizing Compilers: Language Reference Manual
6649:. Courant Mathematics and Computing Laboratory, New York University. 6277:
OS PL/I Checkout and Optimizing Compilers: Language Reference Manual
5217:(Interview). Interviewed by Grant Saviers. Computer History Museum. 5010:
OS PL/I Checkout and Optimizing Compilers: Language Reference Manual
4327: 3290: 2722:
processor family, although some was retained and retargeted for the
6793:
Ing. C. Olivetti, "Mini PL/I Reference Manual", 1975, No. 3970530 V
4907: 4045:
LABL1: .... . . LABL2: ... . . . MY_DEST = LABL1; . GO TO MY_DEST;
3856:
statement allows a nested error trap; if an error occurs within an
3690:
function computes such pointers, safely and machine independently.
2937: 2802:, starting from version 18, and then SPL, starting from version 19. 2753: 2719: 2649: 2554:
Fujitsu delivered a PL/I compiler equivalent to the PL/I Optimizer.
2395:
as an alias for the set of built-in attributes FIXED BINARY(31.0).
2309: 2058:
New attributes for better support of user-defined data types – the
1974: 1708: 486: 169: 149: 6258:
IBM System/360 Operating System PL/I (F) Language Reference Manual
1025:
statement. Groups may include nested groups and begin blocks. The
3503: 3404: 2995: 2921: 2907: 2874: 2737: 2723: 2711: 2678: 2604: 2589: 2082:
data type, and built-in functions for manipulating the new types.
2038: 1890: 1886: 1846: 1763: 1746: 1735: 994:). Statements may have a label-prefix introducing an entry name ( 427: 352: 344: 145: 6880: 5595:
IBM Series/1 PL/I Introduction Program Numbers 5719-PL1 5719-PL3
3264:
SELECT (expression) {WHEN (expression) group}... OTHERWISE group
6721:"decsystem10 Conversational Programming Language User's Manual" 6343:
Hart, Timothy P. (October 1963). "MACRO Definitions for LISP".
2792: 2761: 2715: 2695: 2662: 2535: 2512: 2248:
for converting between dates and number of days, and a general
2034: 1948: 1858: 1850: 1712: 1656: 511: 6831: 3498:
data is allocated and initialized at load-time, as is done in
2557:
Stratus Technologies PL/I is an ANSI G implementation for the
986:
assignment statement assigns values to one or more variables.
226: 6835: 4883:. IBM. December 1966. SECTION 2: COMPILER PHASES. Y28-6800-1. 4645: 3797:
condition). The system action can be reestablished using the
3521: 3510:
variables (similar to C “extern” or Fortran “named common"),
3499: 3400: 2958: 2811: 2670: 2636: 2496: 1923: 1902: 1797: 1731:
of DO-loops facilitated by the REORDER option on procedures.
1664: 372: 356: 348: 141: 6623:
Introduction to PL/I, Algorithms, and Structured Programming
6049: 5800:
Berg, William; Cline, Marshall; Girou, Mike (October 1995).
4412:
Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991).
3451:
world) in using its target language's syntax and semantics (
2159:
operator is used to select a data structure using a handle.
1587:
Language standardization began in April 1966 in Europe with
422:
is credited with ensuring PL/I had the CHARACTER data type.
32:
Programming language design § Design and implementation
6839: 6810: 2970: 2945: 2925: 2878: 2866: 2799: 2774: 2733: 2684: 2674: 2666: 2632: 2625: 2612: 2600: 2144:
s to be declared composed from PL/I's built-in attributes.
2046: 1992: 1955: 1804: 277: 231: 181: 177: 173: 165: 5273: 3906:, each of which has a target that is not always the same. 3696:
DCL P POINTER, N FIXED BINARY(31) BASED(ADDR(P)); N=N+255;
3339:
Some argue that PL/I is unusually hard to parse. The PL/I
2577:
In 2011, Raincode designed a full legacy compiler for the
6818: 6814: 6408: 6173: 5460: 5152:
Uniprise Systems, Inc., Irvine, California, 1995, p. xxi.
5097:
B. L. Marks (1973). "The design of a checkout compiler".
4699: 2858: 2805: 2608: 2131:
DEFINE ORDINAL Colour (red, yellow, green, blue, violet);
2026: 1894: 1854: 1767: 1652: 1029:
statement specifies a group or a single statement as the
270: 242: 76: 68: 5849:
Online Historical Encyclopaedia of Programming Languages
5049:"Early Language and Compiler Developments at IBM Europe" 3318:
Time and date handling were overhauled to deal with the
2054:
earlier IBM compilers. Major topics added to PL/I were:
1754:
storage class. It was shipped within a year of PL/I F.
426:
in the GY33-6003 manual. These manuals were used by the
5031:"Microsoft.CodeAnalysis.CSharp A Binder converts names" 4820:
The PL/I machine defined in the standard is covered in
2399:
applies to structures and their members; it provides a
1770:, one of the first to develop an operating system in a 383:(MultiPurpose Programming Language) and, in 1965, with 6854: 6738:
IBM Operating System/360 PL/I: Language Specifications
4502:"Datamation in Business & Science MPPL IN FOR NPL" 4051:
GO TO HERE(LUCKY_NUMBER); /* minus 1, zero, or ... */
3977:
One enhancement, which adds built-in documentation, is
3668:
DCL 1 A BASED, 2 N BINARY, 2 B CHAR(LENGTH REFER A.N.)
3536:
variables is allocated upon entry into the procedure,
3428:
to all data types (including pointers to structures),
2611:. It was based on Subset G of PL/I and was written in 2019: 6896: 6875: 6142:"Open PL/I: Liant addresses PL/I legacy applications" 5902:"RE: Dave McKenzie's UNDELete utility - a LifeSaver!" 5322:
User's Guide to PL/C - The Cornell Compiler for PL/I,
4596: 4594: 3778:-statement. The exception can be simulated using the 3232: 3056:) and indicate its priority relative to other tasks. 2698:
platforms. PL/MP was used to implement the so-called
1703:
in the United Kingdom, as part of the development of
1627:
had to resolve the disagreement. In addition to IBM,
245: 239: 5626: 5624: 5622: 5496:
SPERRY UNIVAC 1100 Series PL/I Programmer Reference,
4551: 4323: 2571: 2045:), but as of 2021, the only supported platforms are 1786:, and others. Initially, it was developed using the 520:
Powerful iterative processing with good support for
234: 223: 27:
Procedural, imperative computer programming language
6381:(Third ed.). IBM. September 2012. SC14-7285-02 2844:
supercomputer, used extensively for graphic design.
2410: 2173: 2004:by P. Grouse at the University of New South Wales, 1810:IBM introduced new attributes and syntax including 1596:major features omitted from the base document were 391:"I"). The first definition appeared in April 1964. 6604:The New PL/I ... for PC, Workstation and Mainframe 5601:(First ed.). IBM. February 1977. GC34-0084-0. 5405: 5403: 4835:1987 PL/I General-Purpose Subset (ANSI X3.74-1987) 4591: 4413: 3710: 2823:, a real-time dialect of PL/I used to program the 2493:statement is unable to obtain sufficient storage. 1959:, a dialect for teaching, a compiler developed at 982:applied to both the real and the imaginary parts. 569:Debugging facilities integrated into the language. 6775:Kednos PL/I for OpenVMS Systems. Reference Manual 6665:Information Systems - Programming Language - PL/I 6469:Digital Research PL/I Language Programmer's Guide 5948:Cocke, John; Markstein, Victoria (January 1990). 5619: 4668:"Frederick P. Brooks Jr. - IEEE Computer Society" 4411: 3750:statement enables the condition specified, e.g., 3378:PL/I contains many rarely used features, such as 3291:Significant features developed since the standard 3185:and the simple statements, which also may have a 3098:could be declared, activated, and assigned using 2992:driven by developments on the Personal Computer. 2986: 2895:The pioneering online airline reservation system 2706:of those platforms, and is used in the System/38 2375:-statement introduces user-specified names (e.g. 1905:. During the 1990s, Digital sold the compiler to 1834:) and null argument lists to disambiguate, e.g., 493:, using dummy variables for values where needed ( 6920: 6585:PL/I: Structured Programming and Problem Solving 6492:The PL/I Machine: An Introduction to Programming 6300:Kednos PL/I for OpenVMS Systems Reference Manual 6237:"The /360 Architecture and Its Operating System" 3996:... based on a variable's subscript-like value. 3894: 3626:attribute is used to declare programmer-defined 3532:, and "local-storage" in IBM COBOL. Storage for 2379:) for combinations of built-in attributes (e.g. 2310:Program readability – making intentions explicit 1053:statement and is terminated syntactically by an 5772: 5749:"Iron Spring PL/I Compiler - Programming Guide" 5409: 5400: 5293: 4984:Series 60 (Level 66)/6000 PL/I Reference Manual 4941: 4603:"The Early History and Characteristics of PL/I" 3699:It relies on pointers being the same length as 2423:to continue with the next iteration of a loop. 2070:statement to introduce user-defined types, the 1757: 6845:Micro Focus' Mainframe PL/I Migration Solution 6576:PL/I Programming for Engineering & Science 6558:PL/I Programming in Technological Applications 5947: 5873: 5799: 5483:B 6700/B 7700: PL/I Language Reference Manual, 5042: 5040: 5003: 5001: 4999: 4997: 4906:forbade La Gaude from shipping them until the 3044:-options on the record I/O statements and the 2996:Significant features omitted from the standard 2740:architecture. It later gained support for the 2590:PL/I compilers for personal computers and Unix 2346:obviates the need for the contrived construct 6489: 6421: 6419: 5899: 5174:. Archived from the original on June 14, 2021 4937: 4935: 4773: 4771: 4034:PL/I has statement label variables (with the 3703:integers and aligned on the same boundaries. 2910:operating system was largely written in PL/I. 2760:systems) and has been re-engineered to use a 2103:Additional structured programming constructs. 1694: 978:. The mode is specified separately, with the 280:standard, X3.53-1976, was published in 1976. 6050:Marc Auslander; Martin Hopkins (June 1982). 5802:"Lessons learned from the OS/400 OO project" 5630: 5613:IBM Series/1 PL/I: Language Reference Manual 5520: 5397:2nd Ed., Paladin House, Geneva (Ill.), 1978. 5238: 3528:language, the default storage allocation in 2585:platforms, named The Raincode PL/I compiler. 1912: 6892:An open source PL/I Compiler for Windows NT 6202: 5719: 5379:Structured Programming using PL/I and SP/k, 5096: 5037: 4994: 4922:IBM System/360 PL/I Subset Reference Manual 4121:/* Read in a line, which contains a string, 3774:-statement and can be reestablished by the 3311:etc. have been added by several compilers. 2340:attributes prevent unintended assignments. 6964:Programming languages with an ISO standard 6573: 6416: 6398: 6396: 6368: 6366: 6364: 5989: 5987: 5586: 5161: 5061: 4932: 4823:The Definition Mechanism for Standard PL/I 4785: 4783: 4768: 4557:"Highlights of a New Programming Language" 4407: 4405: 3436:, string handling, and extensive built-in 2497:Other mainframe and minicomputer compilers 2275:Compound assignment operators a la C e.g. 1977:; instructional use was its strong point. 1798:IBM PL/I optimizing and checkout compilers 1699:PL/I was first implemented by IBM, at its 460:for new hardware and new application areas 6490:Neuhold, E.J. & Lawson, H.W. (1971). 6352: 6205:"Porting OpenVMS to HP Integrity Servers" 5950:"The evolution of RISC technology at IBM" 5924: 5819: 5530: 5431: 5260: 5258: 5081: 5064:"A Conversational Compiler for Full PL/I" 5046: 4960: 4845: 4843: 4841: 4811:"PL/I Language Specifications. GY33-6003" 4777:ANS Programming Language PL/I. X3.53-1976 4620: 4574: 3462: 2186:(for zero-terminated character strings), 2140:-statement (see below) allows additional 1947:, an interactive time-sharing system for 990:characters asterisk, forward slash (i.e. 6863:, a side-by-side comparison of PL/I and 6639: 6564: 6139: 5150:Uniprise PL/I for UNIX Reference Manual, 4826:. Michael Marcotty, Frederick G Sayward. 3399:Many programmers were slow to move from 3330: 2787:used two different PL/I dialects as the 1734:A version of PL/I F was released on the 6582: 6393: 6361: 6093:IBM Journal of Research and Development 6003:IBM Journal of Research and Development 5984: 5957:IBM Journal of Research and Development 5241:"PL/I Frequently Asked Questions (FAQ)" 5025: 5023: 4780: 4402: 3729:(SIZE, NOSUBSCRIPTRANGE): A(I)=B(I)*C; 3633: 3524:, like the "auto" storage class in the 3424:On the positive side, full support for 2509:announced PL/I for the B6700 and B7700. 2385:DEFINE ALIAS INTEGER FIXED BINARY(31.0) 1517:PICTURE picture-specification or PIC... 481:, with underlying semantics (including 436: 351:, while scientific users programmed in 14: 6921: 6620: 6606:. Vieweg-Teubner, Wiesbaden, Germany. 6555: 6536: 6517: 6508: 5255: 5205: 4838: 4739: 4114: 4065: 3048:statement to unlock locked records on 2657:arrays had fixed extents, or used the 2607:(PL/I-86) and Personal Computers with 1659:served on X3J1 along with major users 6959:Programming languages created in 1964 6731:"Multics PL/I Language Specification" 6601: 6140:Pearkins, Jon E. (December 1, 1995). 4600: 4383: 3758:-unit for the condition is executed. 3241:-statement to exit from an iterative 2459: 1738:timesharing operating system for the 6707: 6342: 5294:Richard C. Holt (November 5, 1972). 5020: 3883:The existence of exception handling 3516:is PL/I's default storage class for 3394: 2835:General Motors Research Laboratories 2151:locator data type is similar to the 2012:at the University of Maryland., and 1997:Cornell University's PL/C compiler. 430:group and other early implementers. 75:Language Development Committee, and 6177:IEEE Transactions on Communications 5855:from the original on August 2, 2020 5571:OpenVOS PL/I Language Manual (R009) 5424:Association for Computing Machinery 5302:from the original on April 15, 2011 5266:"Kednos PL/I for OpenVMS and Tru64" 3443:The PL/I F compiler's compile time 3270: 2252:function for changing date formats. 2201:The optional arithmetic attributes 2020:IBM PL/I for OS/2, AIX, Linux, z/OS 1941:and subsequently implemented IBM's 1013:A sequence of statements becomes a 573: 24: 6723:, DEC-10-LCPUA-A-D. Maynard, 1975. 5842: 5368:Polytechnic Institute of Brooklyn. 5016:. IBM. October 1976. GC33-0009-04. 4849: 4555:; H. Paul Rogoway (January 1965). 4060: 4000:GO TO (1914, 1939, 2140), MYCHOICE 3648:DCL A(10,10), B(2:9,2:9) DEFINED A 3615:variable, for example following a 3556:variables is freed at block exit. 3467: 3299:in early IBM). With the growth of 3207:%DECLARE identifier_attribute_list 2628:in 1994, and PL/I for AIX in 1995. 2233:s and good for documenting loops). 1689: 1582: 450:. Additional goals for PL/I were: 129: 25: 6975: 6800: 6560:. Books on Demand, Ann Arbor, MI. 5776:Inside the AS/400, Second Edition 5485:Reference 5001530, Detroit, 1977. 5324:Cornell University, Ithaca, 1977. 4730:shows the value of the principle. 4347:Timeline of programming languages 3980:GO TO IGOTTAGO (1860, 1914, 1939) 3000: 2681:for z/OS is also written in PL/X. 2572:PL/I compilers for Microsoft .NET 2419:statement to exit a loop, and an 1985:Polytechnic Institute of Brooklyn 954:, and for fixed point numbers, a 905:type comprises these attributes: 6944:Concurrent programming languages 6939:Structured programming languages 6934:PL/I programming language family 6929:Procedural programming languages 6906: 6861:Power vs. Adventure - PL/I and C 6850:OS PL/I V2R3 grammar Version 0.1 6053:An overview of the PL.8 compiler 5727:"IBM PL/I Set for AIX Version 1" 5559:1978, Publication No. 60388100A. 5494:Sperry-Univac Computer Systems, 5320:Department of Computer Science, 4326: 3591:variables is also managed using 3233:Structured programming additions 2643: 2411:Structured programming additions 2174:Competitiveness on PC and with C 2016:from the University of Toronto. 1711:was the PL/I F compiler for the 334: 219: 194: 6719:Digital Equipment Corporation, 6583:Ziegler, R.R. & C. (1986). 6461: 6447: 6433: 6336: 6318: 6287: 6268: 6249: 6222: 6196: 6167: 6133: 6077: 6043: 5941: 5918: 5893: 5867: 5836: 5793: 5766: 5741: 5690: 5660: 5605: 5562: 5549: 5514: 5501: 5488: 5475: 5448: 5384: 5371: 5359: 5341: 5327: 5314: 5287: 5232: 5221:from the original on 2021-12-11 5199: 5155: 5143: 5119: 5090: 5055: 4976: 4954: 4913: 4896: 4887: 4868: 4829: 4814: 4805: 4795: 4733: 4720: 4678: 4660: 4651: 4637: 4416:IBM's 360 and early 370 systems 4005: 3999: 3979: 3972: 3956: 3920: 3738:-unit is a single statement or 3727:-units) and procedures. – e.g. 3711:ON-units and exception handling 3670:, etc  – where 3195: 3191: 3186: 3159: 3125: 3059: 2347: 2130: 991: 966:The base, scale, precision and 6303:. January 2007. Archived from 5511:Order No. 093-000204, c. 1978. 5410:Robin A. Vowels (March 1996). 5377:J. N. P. Hume and R. C. Holt, 4545: 4536: 4515: 4494: 4438: 4377: 4358: 2987:Evolution of the PL/I language 2857:, there are PL/I versions for 2833:, a PL/I dialect developed by 1929:In the 1960s and early 1970s, 1412:INITIAL(value-list) or INIT... 1271:ENVIRONMENT(options) or ENV... 13: 1: 6949:Systems programming languages 6881:PL1GCC project in SourceForge 6675:ANSI ANSI X3.74-1987 (R1998) 6669:ANSI ANSI X3.74-1981 (R1998) 6643:The PL/I Programming Language 6625:(3rd ed.). R.A. Vowels. 6478: 6345:Artificial Intelligence Memos 5874:Leif Svalgaard (2003-10-08). 5335:"SL/1 (Student Language/One)" 4483:. From the GUIDE organization 4342:List of programming languages 3947:attribute, in methods, or .. 3895:GO TO with a non-fixed target 3325: 2433:options on iterative groups. 2178:These attributes were added: 2117: 2106:Interrupt handling additions. 1641:Digital Equipment Corporation 1021:statement and followed by an 531:(although the function names 489:. Arguments are passed using 6886:PL/1 software to print signs 6688:, 1st edition, December 1976 6654: 6483: 6295:"Chapter 8: Program Control" 5900:Dave McKenzie (2004-09-01). 5272:. 2016-11-02. Archived from 5164:"RE: Dave Cutler and VMS #2" 3502:"working-storage" and early 3366:, which may be provided by " 3358:and pervasive problems with 3113:The data type supported are 3102:. Subsequent occurrences of 2489:condition is raised when an 2329:(pass by value) attributes. 1758:Multics PL/I and derivatives 1707:. The first production PL/I 1440:LIKE unsubscripted reference 7: 6752:IBM, "NPL Technical Report" 6539:PL/I Structured Programming 5679:. p. 1. Archived from 5395:PL/I Programming with PLUM, 5239:Robin Vowels (2010-04-01). 4944:"The Multics PL/1 Compiler" 4489:Bernice Weitzenhoffer, IBM. 4334:Computer programming portal 4319: 2915:System Network Architecture 2827:airline reservation system. 2789:system programming language 2669:. It is also used for some 1875: 1681:Argonne National Laboratory 974:type is encoded within the 839:PICTURE for Arithmetic data 88:; 60 years ago 10: 6980: 6696:Programming languages—PL/I 6455:"GO TO Statement in COBOL" 6146:Enterprise Systems Journal 5555:Control Data Corporation, 5509:AOS PL/I Reference Manual, 5507:Data General Corporation, 5456:"IBM PL/I Compiler Family" 5211:"Dave Cutler Oral History" 5127:"VAX-11 PL/I, Version 1.0" 4744:. R.A. Vowels. p. x. 4468:Standard Oil of California 3746:-statement. Executing the 3506:. This is the default for 3192:%ACTIVATE(identifier_list) 3063: 1695:IBM PL/I F and D compilers 1209:or one of the conditions: 1198:UNDEFINEDFILE(file) (UNDF) 844:PICTURE for Character data 29: 6857:, PL/I editor for Eclipse 6686:Programming Language PL/I 6574:Stoutemyer, D.R. (1971). 6212:OpenVMS Technical Journal 6203:Clair Grant (June 2005). 6190:10.1109/TCOM.1980.1094695 5807:Communications of the ACM 5191:: CS1 maint: unfit URL ( 5162:Tom Linden (2004-05-21). 4702:. December 1964. p.  4686:"Chapter 1: Introduction" 4601:Radin, G. (August 1978). 4562:Communications of the ACM 4176:declareline_nofixedbinary 3654:attribute (later renamed 3447:was unusual (outside the 2599:sold a PL/I compiler for 2166:attribute (equivalent to 2100:attribute for parameters) 1913:Teaching subset compilers 191: 160: 155: 140: 135: 127: 120: 100: 82: 62: 42: 6784:, AA-H952E-TM. Nov 2003. 6663:ANSI X3.53-1976 (R1998) 6537:Hughes, Joan K. (1986). 6518:Hughes, Joan K. (1973). 6230:IBM Operating System/360 5925:Dan Hicks (1998-08-21). 5773:Frank G. Soltis (1997). 5498:Reference UP-8277, 1976. 5366:PLAGO/360 User's Manual, 4928:. IBM. 1967. C28-8202-0. 4789:ANSI X3.74-1981 (R1998) 4384:Sturm, Eberhard (2009). 4352: 4118: 4069: 3766:-unit is activated, the 3742:-block introduced by an 2848: 2839:Control Data Corporation 2777:for use in creating the 2708:Control Program Facility 2321:Parameters can have the 1863:plug-compatible machines 1240:Input/output attributes 992:/* This is a comment. */ 448:event-driven programming 283:PL/I's main domains are 215:Programming Language One 6640:Abrahams, Paul (1979). 6565:Anderson, M.E. (1973). 6541:(3rd ed.). Wiley. 6522:(1st ed.). Wiley. 5935:comp.sys.ibm.as400.misc 5636:"The Norton chronicles" 5576:Marlboro, Massachusetts 5481:Burroughs Corporation, 5391:Marvin Victor Zelkowitz 5132:. Digital. October 1980 5062:R. N. Cuff (May 1972). 4990:. 1976. Order No. DE05. 4148:declarepatterncharacter 4096:'Hello, World!' 4028:(“go to depending on”). 3876:sub-allocation and the 2920:Some components of the 2639:was introduced in 2007. 2624:IBM delivered PL/I for 2595:In the 1970s and 1980s 2074:locator data type, the 2010:Marvin Victor Zelkowitz 1935:IBM System/360 Model 50 1600:and the attributes for 1575:Current compilers from 1077:computational condition 514:and sub-settable to 48. 269:initially developed by 6871:Softpanorama PL/1 page 6587:(1st ed.). West. 6325:consider the fragment 5906:Midrange Archive MI400 5580:Stratus Computer, Inc. 5557:PL/I Reference Manual, 5523:The CIMS PL/I compiler 5083:10.1093/comjnl/15.2.99 4740:Vowels, Robin (2001). 3463:Special topics in PL/I 3422: 2942:transaction processing 2530:platforms running the 2182:The string attributes 2149:HANDLE(data structure) 2078:data type itself, the 1395:GENERIC(criteria list) 1218:CONDITION (identifier) 1122:SUBSCRIPTRANGE (SUBRG) 972:Picture-for-arithmetic 522:structured programming 305:structured programming 253:and sometimes written 6768:, SC14-7285-00. 2010. 6621:Vowels, R.A. (1997). 6556:Groner, G.F. (1971). 6509:Barnes, R.A. (1979). 6099:(4.5). IBM: 607–615. 6065:10.1145/872726.806977 6009:(3.4). IBM: 543–556. 5876:"Re: Re: MI emulator" 5821:10.1145/226239.226253 5532:10.1145/800229.806960 5433:10.1145/227717.227724 5381:Reston, Reston, 1975. 4942:R. A. Frieburghouse. 4672:IEEE Computer Society 4622:10.1145/960118.808389 4576:10.1145/363707.363708 3417: 3331:Implementation issues 3279:on-condition and the 3261:of the general form: 3106:would be replaced by 3064:Further information: 2631:Iron Spring PL/I for 2522:provided PL/I on its 2507:Burroughs Corporation 2325:(pass by address) or 2302:Additional parameter 2264:from the right. and 1368:(dimension-attribute) 1043:BEGIN; stmt-list END; 980:picture specification 976:picture-specification 743:Assignment statement 406:IBM Laboratory Vienna 309:linked data structure 289:numerical computation 6913:Computer programming 6832:Iron Spring Software 6567:PL/I for Programmers 6511:PL/I for Programmers 6412:. 24 September 2021. 5686:on November 7, 2017. 5069:The Computer Journal 4966:"The Choice of PL/I" 4910:had its first flight 4742:Introduction to PL/I 4693:NPL Technical Report 4481:Procter & Gamble 4420:. Cambridge, Mass.: 4162:declarelinecharacter 3634:Storage type sharing 3459:'s "#" directives). 3352:Program optimization 1893:. It runs on VMS on 1729:program optimization 1701:Hursley Laboratories 1602:program optimization 1489:NONVARYING or NONVAR 1317:CHARACTER or CHAR... 1093:FIXEDOVERFLOW (FOFL) 776:Record input/output 762:Stream input/output 527:There were to be no 467:Machine independence 437:Goals and principles 293:scientific computing 267:programming language 6152:on November 3, 2012 6105:10.1147/rd.464.0607 6015:10.1147/rd.483.0543 5969:10.1147/rd.341.0004 5729:. 19 September 1995 5615:. IBM. GC34-0085-0. 5582:1995. OpenVOS PL/I. 5416:ACM SIGPLAN Notices 5113:10.1147/sj.123.0315 5100:IBM Systems Journal 4608:ACM SIGPLAN Notices 4476:, Bell Laboratories 4366:"Changes at I.B.M." 4115:Search for a string 4066:Hello world program 3940:(“altered go to”). 3455:as compared to the 2000:Other examples are 1814:, case statements ( 1772:high-level language 1740:System/360 Model 67 1496:POSITION or POS... 1334:COMPLEX or CPLX... 1017:when preceded by a 709:Interrupt handling 83:First appeared 39: 6807:IBM PL/I Compilers 6780:2004-03-04 at the 6764:2020-07-28 at the 6747:, GC33-0009. 1976. 6700:ISO/IEC 6522:1992 6602:Sturm, E. (2009). 6494:. Addison-wesley. 6441:"GO TO (Computed)" 6427:"GO TO (Assigned)" 6327:DECLARE(I,J,K),L= 6242:2020-07-28 at the 5843:Pigott, Diarmuid. 5521:Paul W. Abrahams. 5047:A. Endres (2013). 4466:Bruce Rosenblatt, 4388:. Vieweg+Teubner. 4370:The New York Times 4002:(“computed go to”) 3970:(“assigned go to”) 3925:paragraph_name_xxx 3852:-unit itself. The 3364:exception handlers 3320:millennium problem 2700:Vertical Microcode 2654:system programming 2460:Interrupt handling 2381:FIXED BINARY(31,0) 2221:necessitated the 1961:Cornell University 1826:), loop controls ( 1356:SEQUENTIAL or SEQL 1351:DECIMAL or DEC... 1112:STRINGRANGE (STRG) 1061:to the procedure. 807:(Features such as 557:Exception handling 444:system programming 363:, and others. The 297:system programming 37: 6876:The PL/I Language 6740:, C28-6571. 1965. 6729:Honeywell, Inc., 6708:Reference manuals 6632:978-0-9596384-9-3 6613:978-3-8348-0726-7 6594:978-0-314-93915-9 6501:978-0-2010-5275-6 6404:"ALTER statement" 6331:DECLARE(I,J,K),L; 6228:In his slides on 5927:"UNIX vs AS/400?" 5786:978-1-882419-66-1 4751:978-0-9596384-9-3 4486:C.W. Medlock, IBM 4479:Robert Sheppard, 4431:978-0-262-16123-7 4395:978-3-8348-0726-7 3395:Programmer issues 3253:-option added to 3066:PL/I preprocessor 3038:DELAY(delay-time) 2863:Microsoft Windows 2781:operating system. 2704:Machine Interface 2561:operating system. 2295:is equivalent to 1983:, created at the 1673:Bell Laboratories 1573: 1572: 1553:UNALIGNED or UNAL 1482:PARAMETER or PARM 1361:DEFINED or DEF... 1344:CONTROLLED or CTL 1310:CONDITION or COND 1283:BINARY or BIN... 1259:AUTOMATIC or AUTO 1243:Other attributes 1207: 1206: 1149: 1148: 1136:ZERODIVIDE (ZDIV) 1117:STRINGSIZE (STRZ) 1088:CONVERSION (CONV) 964: 963: 899: 898: 813:PL/I preprocessor 805: 804: 801: 800: 694: 693: 491:call by reference 412:for development, 208: 207: 114:/pli-compiler-zos 16:(Redirected from 6971: 6911: 6910: 6902: 6754:, December 1964. 6733:, AG94-02. 1981. 6650: 6648: 6636: 6617: 6598: 6579: 6578:. Prentice-Hall. 6570: 6569:. Prentice-Hall. 6561: 6552: 6533: 6520:PL/I Programming 6514: 6513:. North-Holland. 6505: 6473: 6472: 6465: 6459: 6458: 6451: 6445: 6444: 6437: 6431: 6430: 6423: 6414: 6413: 6400: 6391: 6390: 6388: 6386: 6380: 6370: 6359: 6358: 6356: 6340: 6334: 6332: 6328: 6322: 6316: 6315: 6313: 6312: 6291: 6285: 6284: 6282: 6272: 6266: 6265: 6263: 6253: 6247: 6226: 6220: 6219: 6209: 6200: 6194: 6193: 6171: 6165: 6164: 6159: 6157: 6148:. Archived from 6137: 6131: 6130: 6128: 6127: 6121: 6115:. Archived from 6090: 6081: 6075: 6074: 6072: 6071: 6058: 6047: 6041: 6040: 6038: 6037: 6031: 6025:. Archived from 6000: 5991: 5982: 5981: 5976: 5975: 5954: 5945: 5939: 5938: 5922: 5916: 5915: 5913: 5912: 5897: 5891: 5890: 5888: 5887: 5871: 5865: 5864: 5862: 5860: 5840: 5834: 5833: 5823: 5797: 5791: 5790: 5770: 5764: 5763: 5761: 5760: 5745: 5739: 5738: 5736: 5734: 5723: 5717: 5716: 5714: 5713: 5704:. Archived from 5694: 5688: 5687: 5685: 5672: 5664: 5658: 5657: 5655: 5653: 5644:. Archived from 5634:(May 15, 1984). 5628: 5617: 5616: 5609: 5603: 5602: 5600: 5590: 5584: 5583: 5566: 5560: 5553: 5547: 5546: 5534: 5518: 5512: 5505: 5499: 5492: 5486: 5479: 5473: 5472: 5470: 5468: 5452: 5446: 5445: 5435: 5407: 5398: 5388: 5382: 5375: 5369: 5363: 5357: 5356: 5345: 5339: 5338: 5331: 5325: 5318: 5312: 5311: 5309: 5307: 5291: 5285: 5284: 5282: 5281: 5262: 5253: 5252: 5236: 5230: 5229: 5227: 5226: 5203: 5197: 5196: 5190: 5182: 5180: 5179: 5159: 5153: 5147: 5141: 5140: 5138: 5137: 5131: 5123: 5117: 5116: 5094: 5088: 5087: 5085: 5059: 5053: 5052: 5044: 5035: 5034: 5027: 5018: 5017: 5015: 5005: 4992: 4991: 4980: 4974: 4973: 4958: 4952: 4951: 4939: 4930: 4929: 4927: 4917: 4911: 4900: 4894: 4891: 4885: 4884: 4882: 4872: 4866: 4865: 4863: 4861: 4856: 4847: 4836: 4833: 4827: 4818: 4812: 4809: 4803: 4799: 4793: 4787: 4778: 4775: 4766: 4765: 4737: 4731: 4724: 4718: 4717: 4712: 4710: 4697: 4690: 4682: 4676: 4675: 4664: 4658: 4655: 4649: 4641: 4635: 4634: 4624: 4598: 4589: 4588: 4578: 4549: 4543: 4540: 4534: 4533: 4527: 4519: 4513: 4512: 4506: 4498: 4492: 4442: 4436: 4435: 4419: 4409: 4400: 4399: 4381: 4375: 4374: 4373:. June 20, 1984. 4362: 4336: 4331: 4330: 4315: 4311: 4308: 4305: 4302: 4299: 4296: 4292: 4288: 4285: 4281: 4277: 4273: 4270: 4267: 4264: 4260: 4256: 4252: 4249: 4246: 4242: 4239: 4235: 4231: 4228: 4225: 4222: 4219: 4216: 4212: 4209: 4205: 4202: 4198: 4194: 4190: 4186: 4182: 4179: 4175: 4171: 4168: 4165: 4161: 4157: 4154: 4151: 4147: 4144: 4140: 4137: 4134: 4131: 4128: 4125: 4122: 4110: 4106: 4103: 4100: 4097: 4094: 4090: 4087: 4083: 4080: 4076: 4073: 4041: 4037: 4027: 4026: 4023: 4020: 4017: 4014: 4011: 4008: 4001: 3995: 3981: 3974: 3969: 3968: 3965: 3962: 3959: 3950: 3946: 3939: 3938: 3935: 3932: 3929: 3926: 3923: 3916: 3912: 3905: 3890: 3886: 3879: 3875: 3871: 3866: 3859: 3855: 3854:ON ERROR SYSTEM; 3851: 3847: 3840: 3836: 3832: 3831:(SUBSCRIPTRANGE) 3828: 3824: 3820: 3816: 3812: 3808: 3804: 3800: 3796: 3792: 3785: 3781: 3777: 3773: 3769: 3765: 3761: 3757: 3753: 3752:ON ZERODIVIDE ON 3749: 3745: 3741: 3737: 3730: 3726: 3719: 3702: 3701:FIXED BINARY(31) 3689: 3684: 3677: 3673: 3669: 3665: 3657: 3653: 3649: 3646:attribute (e.g. 3645: 3625: 3614: 3610: 3606: 3602: 3598: 3594: 3590: 3583: 3579: 3575: 3569: 3565: 3561: 3555: 3551: 3543: 3539: 3535: 3519: 3515: 3509: 3497: 3491: 3487: 3483: 3479: 3475: 3385:operating system 3374: 3369: 3310: 3306: 3298: 3286: 3282: 3278: 3271:Debug facilities 3256: 3252: 3248: 3244: 3240: 3218: 3213: 3208: 3197: 3193: 3187: 3181: 3180: 3177: 3174: 3171: 3168: 3165: 3162: 3156: 3151: 3150: 3147: 3144: 3141: 3137: 3134: 3131: 3128: 3120: 3116: 3109: 3105: 3101: 3100:%PI='3.14159265' 3097: 3093: 3089: 3085: 3080: 3051: 3047: 3043: 3039: 3031: 3023: 3019: 3015: 3011: 2796:operating system 2660: 2597:Digital Research 2492: 2488: 2481: 2474: 2467: 2455: 2451: 2447: 2443: 2439: 2432: 2428: 2422: 2418: 2406: 2402: 2398: 2397:DEFINE STRUCTURE 2394: 2390: 2386: 2382: 2378: 2374: 2367: 2366: 2363: 2359: 2356: 2353: 2350: 2345: 2339: 2335: 2328: 2324: 2317: 2298: 2294: 2290: 2286: 2282: 2278: 2271: 2267: 2263: 2259: 2251: 2247: 2243: 2239: 2232: 2228: 2224: 2220: 2216: 2212: 2208: 2204: 2197: 2193: 2189: 2185: 2169: 2165: 2158: 2154: 2150: 2143: 2139: 2132: 2124: 2099: 2092: 2088: 2081: 2077: 2073: 2069: 2068:DEFINE STRUCTURE 2065: 2061: 1971: 1970: 1907:UniPrise Systems 1840: 1833: 1829: 1825: 1821: 1817: 1813: 1611: 1607: 1565: 1554: 1543: 1532: 1525: 1518: 1511: 1504: 1497: 1490: 1483: 1476: 1469: 1468:OPTIONS(options) 1462: 1455: 1448: 1441: 1434: 1427: 1420: 1413: 1408: 1403: 1396: 1391: 1386: 1379: 1374: 1369: 1362: 1357: 1352: 1345: 1340: 1335: 1328: 1323: 1318: 1311: 1306: 1301: 1294: 1289: 1284: 1277: 1272: 1267: 1260: 1255: 1250: 1237:Data attributes 1234: 1233: 1227: 1223: 1219: 1215: 1199: 1194: 1189: 1180: 1175: 1170: 1165: 1158: 1157: 1137: 1128: 1123: 1118: 1113: 1104: 1099: 1094: 1089: 1082: 1081: 1060: 1056: 1052: 1044: 1036: 1032: 1028: 1024: 1020: 1009: 1005: 1001: 997: 993: 981: 977: 973: 957: 953: 952:number of digits 949: 942: 938: 931: 927: 920: 916: 908: 907: 904: 893: 888: 883: 878: 869: 864: 859: 854: 845: 840: 835: 830:(expanded below) 829: 822: 821: 797: 793: 789: 785: 781: 771: 767: 757: 753: 741: 736: 732: 722: 718: 714: 698: 697: 688: 684: 680: 676: 672: 668: 663:Flow of control 658: 653: 649: 644: 640: 630: 626: 622: 618: 613: 609: 593: 592: 589: 588: 584: 574:Language summary 546: 542: 538: 534: 399:. The SHARE and 325:character string 252: 251: 248: 247: 244: 241: 237: 236: 233: 229: 228: 225: 198: 162:Control Language 116: 113: 111: 109: 107: 96: 94: 89: 64:Designed by 40: 36: 21: 6979: 6978: 6974: 6973: 6972: 6970: 6969: 6968: 6919: 6918: 6917: 6905: 6897: 6803: 6782:Wayback Machine 6766:Wayback Machine 6710: 6657: 6646: 6633: 6614: 6595: 6549: 6530: 6502: 6486: 6481: 6476: 6467: 6466: 6462: 6453: 6452: 6448: 6439: 6438: 6434: 6425: 6424: 6417: 6402: 6401: 6394: 6384: 6382: 6378: 6372: 6371: 6362: 6347:. No. 57. 6341: 6337: 6330: 6326: 6323: 6319: 6310: 6308: 6293: 6292: 6288: 6280: 6274: 6273: 6269: 6261: 6255: 6254: 6250: 6244:Wayback Machine 6227: 6223: 6207: 6201: 6197: 6172: 6168: 6155: 6153: 6138: 6134: 6125: 6123: 6119: 6088: 6082: 6078: 6069: 6067: 6056: 6048: 6044: 6035: 6033: 6029: 5998: 5992: 5985: 5973: 5971: 5952: 5946: 5942: 5923: 5919: 5910: 5908: 5898: 5894: 5885: 5883: 5872: 5868: 5858: 5856: 5841: 5837: 5798: 5794: 5787: 5771: 5767: 5758: 5756: 5747: 5746: 5742: 5732: 5730: 5725: 5724: 5720: 5711: 5709: 5696: 5695: 5691: 5683: 5670: 5666: 5665: 5661: 5651: 5649: 5648:on July 6, 2011 5629: 5620: 5611: 5610: 5606: 5598: 5592: 5591: 5587: 5568: 5567: 5563: 5554: 5550: 5543: 5519: 5515: 5506: 5502: 5493: 5489: 5480: 5476: 5466: 5464: 5454: 5453: 5449: 5412:"PL/I for OS/2" 5408: 5401: 5389: 5385: 5376: 5372: 5364: 5360: 5347: 5346: 5342: 5333: 5332: 5328: 5319: 5315: 5305: 5303: 5292: 5288: 5279: 5277: 5264: 5263: 5256: 5237: 5233: 5224: 5222: 5204: 5200: 5184: 5183: 5177: 5175: 5160: 5156: 5148: 5144: 5135: 5133: 5129: 5125: 5124: 5120: 5095: 5091: 5060: 5056: 5045: 5038: 5029: 5028: 5021: 5013: 5007: 5006: 4995: 4982: 4981: 4977: 4959: 4955: 4940: 4933: 4925: 4919: 4918: 4914: 4901: 4897: 4892: 4888: 4880: 4874: 4873: 4869: 4859: 4857: 4854: 4848: 4839: 4834: 4830: 4819: 4815: 4810: 4806: 4800: 4796: 4788: 4781: 4776: 4769: 4752: 4738: 4734: 4725: 4721: 4708: 4706: 4695: 4688: 4684: 4683: 4679: 4666: 4665: 4661: 4656: 4652: 4642: 4638: 4599: 4592: 4550: 4546: 4541: 4537: 4525: 4521: 4520: 4516: 4504: 4500: 4499: 4495: 4474:Douglas McIlroy 4443: 4439: 4432: 4410: 4403: 4396: 4382: 4378: 4364: 4363: 4359: 4355: 4332: 4325: 4322: 4317: 4316: 4313: 4309: 4306: 4303: 4300: 4297: 4294: 4290: 4286: 4283: 4279: 4275: 4271: 4268: 4265: 4262: 4258: 4254: 4250: 4247: 4244: 4240: 4237: 4233: 4229: 4226: 4223: 4220: 4217: 4214: 4210: 4207: 4203: 4200: 4196: 4192: 4188: 4184: 4180: 4177: 4173: 4169: 4166: 4163: 4159: 4155: 4152: 4149: 4145: 4142: 4138: 4135: 4132: 4129: 4126: 4123: 4120: 4117: 4112: 4111: 4108: 4104: 4101: 4098: 4095: 4092: 4088: 4085: 4081: 4078: 4074: 4071: 4068: 4063: 4061:Sample programs 4055: 4052: 4046: 4039: 4035: 4024: 4021: 4018: 4015: 4012: 4009: 4006: 3993: 3978: 3971: 3966: 3963: 3960: 3957: 3948: 3944: 3936: 3933: 3930: 3927: 3924: 3921: 3914: 3910: 3903: 3897: 3888: 3884: 3877: 3873: 3869: 3864: 3857: 3853: 3849: 3845: 3838: 3834: 3830: 3826: 3822: 3818: 3814: 3810: 3806: 3802: 3798: 3794: 3790: 3783: 3779: 3775: 3771: 3767: 3763: 3759: 3755: 3751: 3747: 3743: 3739: 3735: 3728: 3724: 3717: 3713: 3700: 3697: 3687: 3682: 3675: 3671: 3667: 3663: 3655: 3651: 3647: 3643: 3636: 3623: 3612: 3608: 3604: 3600: 3596: 3592: 3588: 3581: 3577: 3573: 3567: 3563: 3559: 3553: 3549: 3541: 3537: 3533: 3517: 3513: 3507: 3495: 3489: 3485: 3481: 3477: 3473: 3470: 3468:Storage classes 3465: 3397: 3372: 3367: 3345:auto-correction 3333: 3328: 3308: 3304: 3296: 3293: 3284: 3280: 3276: 3273: 3265: 3254: 3250: 3246: 3242: 3238: 3235: 3216: 3211: 3206: 3178: 3175: 3172: 3169: 3166: 3163: 3160: 3154: 3148: 3145: 3142: 3139: 3135: 3132: 3129: 3126: 3118: 3114: 3107: 3103: 3099: 3095: 3091: 3087: 3083: 3078: 3068: 3062: 3049: 3045: 3041: 3037: 3029: 3021: 3020:-option on the 3017: 3013: 3009: 3003: 2998: 2989: 2851: 2771:Honeywell, Inc. 2767:-based backend. 2658: 2646: 2592: 2574: 2499: 2490: 2486: 2479: 2472: 2465: 2462: 2453: 2449: 2445: 2441: 2437: 2430: 2426: 2420: 2416: 2413: 2404: 2400: 2396: 2392: 2388: 2384: 2380: 2376: 2372: 2364: 2361: 2357: 2354: 2351: 2348: 2343: 2337: 2333: 2326: 2322: 2315: 2312: 2296: 2292: 2288: 2284: 2280: 2276: 2269: 2265: 2261: 2257: 2249: 2245: 2241: 2237: 2230: 2226: 2222: 2218: 2214: 2210: 2206: 2202: 2195: 2191: 2187: 2183: 2176: 2167: 2163: 2156: 2152: 2148: 2141: 2137: 2122: 2120: 2097: 2090: 2086: 2079: 2075: 2071: 2067: 2063: 2059: 2022: 1968: 1967: 1922:was developing 1915: 1878: 1835: 1831: 1827: 1823: 1819: 1815: 1811: 1800: 1780:Douglas McIlroy 1760: 1725:LOCATE-mode I/O 1721:list processing 1697: 1692: 1690:Implementations 1609: 1605: 1585: 1583:Standardization 1563: 1552: 1541: 1530: 1523: 1516: 1509: 1502: 1495: 1488: 1481: 1474: 1467: 1460: 1453: 1446: 1439: 1432: 1426:INTERNAL or INT 1425: 1418: 1411: 1406: 1401: 1394: 1389: 1384: 1378:EXTERNAL or EXT 1377: 1372: 1367: 1360: 1355: 1350: 1343: 1338: 1333: 1326: 1321: 1316: 1309: 1304: 1299: 1292: 1287: 1282: 1275: 1270: 1265: 1258: 1253: 1248: 1225: 1221: 1217: 1213: 1197: 1192: 1187: 1178: 1173: 1168: 1163: 1135: 1127:UNDERFLOW (UFL) 1126: 1121: 1116: 1111: 1102: 1097: 1092: 1087: 1058: 1054: 1050: 1042: 1034: 1030: 1026: 1022: 1018: 1007: 1003: 999: 995: 979: 975: 971: 955: 951: 947: 940: 936: 929: 925: 918: 914: 902: 891: 886: 881: 876: 867: 862: 857: 852: 843: 838: 833: 827: 795: 794: 791: 790: 787: 786: 783: 782: 779: 769: 768: 765: 755: 754: 751: 742: 739: 738: 734: 730: 720: 719: 716: 715: 712: 690:Null statement 689: 686: 685: 682: 681: 678: 677: 674: 673: 670: 669: 666: 656: 655: 651: 647: 646: 642: 638: 628: 627: 624: 623: 620: 619: 616: 615: 611: 607: 582: 576: 544: 540: 536: 532: 479:Block structure 439: 337: 285:data processing 238: 230: 222: 218: 104: 92: 90: 87: 35: 28: 23: 22: 15: 12: 11: 5: 6977: 6967: 6966: 6961: 6956: 6951: 6946: 6941: 6936: 6931: 6916: 6915: 6895: 6894: 6889: 6883: 6878: 6873: 6868: 6858: 6852: 6847: 6842: 6829: 6802: 6801:External links 6799: 6798: 6797: 6794: 6791: 6788: 6785: 6772: 6769: 6755: 6748: 6741: 6734: 6727: 6724: 6717: 6714: 6709: 6706: 6705: 6704: 6698: 6689: 6679: 6673: 6667: 6656: 6653: 6652: 6651: 6637: 6631: 6618: 6612: 6599: 6593: 6580: 6571: 6562: 6553: 6547: 6534: 6528: 6515: 6506: 6500: 6485: 6482: 6480: 6477: 6475: 6474: 6471:. p. 103. 6460: 6446: 6432: 6415: 6392: 6360: 6335: 6317: 6286: 6267: 6248: 6221: 6195: 6184:(4): 661–677. 6166: 6132: 6076: 6042: 5983: 5940: 5917: 5892: 5882:(Mailing list) 5866: 5835: 5792: 5785: 5779:. Duke Press. 5765: 5753:ironspring.com 5740: 5718: 5689: 5659: 5618: 5604: 5585: 5561: 5548: 5541: 5513: 5500: 5487: 5474: 5447: 5399: 5383: 5370: 5358: 5353:BobsPixels.com 5349:"The IBM 1130" 5340: 5326: 5313: 5286: 5254: 5231: 5209:(2016-02-25). 5198: 5187:cite newsgroup 5154: 5142: 5118: 5107:(3): 315–327. 5089: 5054: 5036: 5019: 4993: 4975: 4970:Multicians.org 4953: 4948:Multicians.org 4931: 4912: 4895: 4886: 4867: 4850:Krasun, Andy. 4837: 4828: 4813: 4804: 4794: 4779: 4767: 4750: 4732: 4728:case statement 4719: 4677: 4659: 4650: 4636: 4615:(8): 227–241. 4590: 4544: 4535: 4514: 4493: 4491: 4490: 4487: 4484: 4477: 4471: 4464: 4458: 4452: 4437: 4430: 4401: 4394: 4376: 4356: 4354: 4351: 4350: 4349: 4344: 4338: 4337: 4321: 4318: 4119: 4116: 4113: 4070: 4067: 4064: 4062: 4059: 4053: 4050: 4044: 4032: 4031: 4030: 4029: 4003: 3991: 3990: 3989: 3988: 3987: 3986: 3985: 3973:GO TO IGOTTAGO 3954: 3953: 3952: 3896: 3893: 3801:option of the 3712: 3709: 3695: 3635: 3632: 3469: 3466: 3464: 3461: 3457:C preprocessor 3396: 3393: 3332: 3329: 3327: 3324: 3292: 3289: 3272: 3269: 3263: 3259:case statement 3234: 3231: 3226: 3225: 3219: 3214: 3209: 3204: 3198: 3183: 3182: 3157: 3152: 3070:The first IBM 3061: 3058: 3006:Multithreading 3002: 3001:Multithreading 2999: 2997: 2994: 2988: 2985: 2965:and the like. 2930: 2929: 2918: 2911: 2904: 2893: 2850: 2847: 2846: 2845: 2828: 2818: 2815: 2809: 2803: 2785:Prime Computer 2782: 2768: 2758:z/Architecture 2742:Motorola 68000 2731: 2688: 2682: 2645: 2642: 2641: 2640: 2629: 2622: 2616: 2591: 2588: 2587: 2586: 2579:Microsoft .NET 2573: 2570: 2569: 2568: 2562: 2555: 2552: 2546: 2543: 2516: 2510: 2498: 2495: 2461: 2458: 2452:option of the 2412: 2409: 2311: 2308: 2254: 2253: 2234: 2199: 2175: 2172: 2119: 2116: 2111: 2110: 2107: 2104: 2101: 2094: 2083: 2021: 2018: 1914: 1911: 1877: 1874: 1799: 1796: 1759: 1756: 1696: 1693: 1691: 1688: 1645:Prime Computer 1617:General Motors 1591:TC10. In 1969 1584: 1581: 1571: 1570: 1568: 1566: 1564:VARYING or VAR 1560: 1559: 1557: 1555: 1549: 1548: 1546: 1544: 1538: 1537: 1535: 1533: 1531:POINTER or PTR 1527: 1526: 1521: 1519: 1513: 1512: 1507: 1505: 1499: 1498: 1493: 1491: 1485: 1484: 1479: 1477: 1471: 1470: 1465: 1463: 1457: 1456: 1451: 1449: 1443: 1442: 1437: 1435: 1429: 1428: 1423: 1421: 1415: 1414: 1409: 1404: 1398: 1397: 1392: 1387: 1381: 1380: 1375: 1370: 1364: 1363: 1358: 1353: 1347: 1346: 1341: 1336: 1330: 1329: 1324: 1319: 1313: 1312: 1307: 1302: 1296: 1295: 1290: 1285: 1279: 1278: 1273: 1268: 1262: 1261: 1256: 1251: 1245: 1244: 1241: 1238: 1229: 1228: 1205: 1204: 1203: 1202: 1200: 1195: 1193:TRANSMIT(file) 1190: 1183: 1182: 1181: 1176: 1171: 1166: 1147: 1146: 1145: 1144: 1142: 1140: 1138: 1131: 1130: 1129: 1124: 1119: 1114: 1107: 1106: 1105: 1100: 1098:OVERFLOW (OFL) 1095: 1090: 1049:starts with a 962: 961: 960: 959: 944: 933: 922: 897: 896: 895: 894: 889: 884: 879: 872: 871: 870: 865: 860: 855: 848: 847: 846: 841: 836: 831: 803: 802: 799: 798: 777: 773: 772: 763: 759: 758: 749: 745: 744: 728: 724: 723: 710: 706: 705: 702: 695: 692: 691: 664: 660: 659: 636: 632: 631: 605: 601: 600: 597: 575: 572: 571: 570: 567: 560: 554: 548: 547:were reserved. 541:IF, THEN, ELSE 529:reserved words 525: 518: 515: 508: 505: 498: 485:), similar to 471: 470: 464: 461: 455: 438: 435: 410:Formal Methods 365:IBM System/360 336: 333: 327:handling, and 317:floating-point 299:. It supports 206: 205: 204: 203: 189: 188: 158: 157: 153: 152: 138: 137: 133: 132: 125: 124: 118: 117: 102: 98: 97: 84: 80: 79: 66: 60: 59: 46: 26: 9: 6: 4: 3: 2: 6976: 6965: 6962: 6960: 6957: 6955: 6952: 6950: 6947: 6945: 6942: 6940: 6937: 6935: 6932: 6930: 6927: 6926: 6924: 6914: 6909: 6904: 6903: 6900: 6893: 6890: 6887: 6884: 6882: 6879: 6877: 6874: 6872: 6869: 6866: 6862: 6859: 6856: 6853: 6851: 6848: 6846: 6843: 6841: 6837: 6833: 6830: 6828: 6824: 6820: 6816: 6812: 6808: 6805: 6804: 6795: 6792: 6789: 6786: 6783: 6779: 6776: 6773: 6770: 6767: 6763: 6760: 6756: 6753: 6749: 6746: 6742: 6739: 6735: 6732: 6728: 6725: 6722: 6718: 6715: 6712: 6711: 6703: 6699: 6697: 6693: 6690: 6687: 6683: 6680: 6678: 6674: 6672: 6668: 6666: 6662: 6659: 6658: 6645: 6644: 6638: 6634: 6628: 6624: 6619: 6615: 6609: 6605: 6600: 6596: 6590: 6586: 6581: 6577: 6572: 6568: 6563: 6559: 6554: 6550: 6548:0-471-83746-6 6544: 6540: 6535: 6531: 6529:0-471-42032-8 6525: 6521: 6516: 6512: 6507: 6503: 6497: 6493: 6488: 6487: 6470: 6464: 6456: 6450: 6442: 6436: 6428: 6422: 6420: 6411: 6410: 6405: 6399: 6397: 6377: 6376: 6369: 6367: 6365: 6355: 6350: 6346: 6339: 6321: 6307:on 2016-08-18 6306: 6302: 6301: 6296: 6290: 6279: 6278: 6271: 6260: 6259: 6252: 6245: 6241: 6238: 6234: 6231: 6225: 6217: 6213: 6206: 6199: 6191: 6187: 6183: 6179: 6178: 6170: 6163: 6151: 6147: 6143: 6136: 6122:on 2020-02-11 6118: 6114: 6110: 6106: 6102: 6098: 6094: 6087: 6080: 6066: 6062: 6055: 6054: 6046: 6032:on 2021-01-24 6028: 6024: 6020: 6016: 6012: 6008: 6004: 5997: 5990: 5988: 5980: 5970: 5966: 5962: 5958: 5951: 5944: 5936: 5932: 5928: 5921: 5907: 5903: 5896: 5881: 5877: 5870: 5854: 5850: 5846: 5839: 5831: 5827: 5822: 5817: 5814:(10): 54–64. 5813: 5809: 5808: 5803: 5796: 5788: 5782: 5778: 5777: 5769: 5754: 5750: 5744: 5728: 5722: 5708:on 2017-11-07 5707: 5703: 5699: 5693: 5682: 5678: 5677: 5669: 5663: 5647: 5643: 5642: 5637: 5633: 5627: 5625: 5623: 5614: 5608: 5597: 5596: 5589: 5581: 5577: 5573: 5572: 5565: 5558: 5552: 5544: 5542:0-89791-002-8 5538: 5533: 5528: 5524: 5517: 5510: 5504: 5497: 5491: 5484: 5478: 5463: 5462: 5457: 5451: 5443: 5439: 5434: 5429: 5425: 5421: 5417: 5413: 5406: 5404: 5396: 5392: 5387: 5380: 5374: 5367: 5362: 5354: 5350: 5344: 5336: 5330: 5323: 5317: 5301: 5297: 5290: 5276:on 2021-03-14 5275: 5271: 5267: 5261: 5259: 5250: 5246: 5242: 5235: 5220: 5216: 5212: 5208: 5202: 5194: 5188: 5173: 5169: 5165: 5158: 5151: 5146: 5128: 5122: 5114: 5110: 5106: 5102: 5101: 5093: 5084: 5079: 5076:(2): 99–104. 5075: 5071: 5070: 5065: 5058: 5050: 5043: 5041: 5032: 5026: 5024: 5012: 5011: 5004: 5002: 5000: 4998: 4989: 4985: 4979: 4971: 4967: 4963: 4962:Tom Van Vleck 4957: 4949: 4945: 4938: 4936: 4924: 4923: 4916: 4909: 4905: 4904:Gen de Gaulle 4899: 4890: 4879: 4878: 4871: 4853: 4846: 4844: 4842: 4832: 4825: 4824: 4817: 4808: 4798: 4792: 4786: 4784: 4774: 4772: 4764: 4763: 4759: 4753: 4747: 4743: 4736: 4729: 4723: 4716: 4705: 4701: 4694: 4687: 4681: 4673: 4669: 4663: 4654: 4647: 4640: 4632: 4628: 4623: 4618: 4614: 4610: 4609: 4604: 4597: 4595: 4586: 4582: 4577: 4572: 4568: 4564: 4563: 4558: 4554: 4548: 4539: 4531: 4524: 4518: 4510: 4503: 4497: 4488: 4485: 4482: 4478: 4475: 4472: 4469: 4465: 4463: 4462:Union Carbide 4459: 4456: 4453: 4450: 4446: 4445: 4441: 4433: 4427: 4423: 4418: 4417: 4408: 4406: 4397: 4391: 4387: 4380: 4372: 4371: 4367: 4361: 4357: 4348: 4345: 4343: 4340: 4339: 4335: 4329: 4324: 4058: 4049: 4043: 4004: 3998: 3997: 3992: 3983: 3982: 3976: 3975: 3955: 3942: 3941: 3937:para_name_zzz 3919: 3918: 3909: 3908: 3907: 3900: 3892: 3881: 3861: 3842: 3787: 3732: 3721: 3708: 3704: 3694: 3691: 3679: 3659: 3640: 3631: 3629: 3620: 3618: 3585: 3571: 3557: 3547: 3531: 3527: 3523: 3511: 3505: 3501: 3493: 3460: 3458: 3454: 3450: 3446: 3441: 3439: 3435: 3431: 3427: 3421: 3416: 3414: 3409: 3406: 3402: 3392: 3388: 3386: 3381: 3376: 3365: 3361: 3357: 3353: 3348: 3346: 3342: 3337: 3323: 3321: 3316: 3312: 3302: 3288: 3268: 3262: 3260: 3230: 3223: 3220: 3215: 3210: 3205: 3202: 3199: 3190: 3189: 3188: 3158: 3153: 3124: 3123: 3122: 3117:integers and 3115:FIXED DECIMAL 3111: 3076: 3075: 3072:Compile time 3067: 3057: 3055: 3035: 3027: 3007: 2993: 2984: 2980: 2977: 2974: 2972: 2966: 2964: 2960: 2955: 2951: 2947: 2943: 2939: 2934: 2928:architecture. 2927: 2923: 2919: 2916: 2912: 2909: 2905: 2902: 2898: 2894: 2891: 2887: 2886: 2885: 2882: 2880: 2876: 2872: 2868: 2864: 2860: 2856: 2843: 2840: 2836: 2832: 2829: 2826: 2822: 2819: 2816: 2813: 2810: 2807: 2804: 2801: 2797: 2794: 2790: 2786: 2783: 2780: 2776: 2772: 2769: 2766: 2763: 2759: 2755: 2751: 2747: 2743: 2739: 2735: 2732: 2729: 2725: 2721: 2717: 2713: 2709: 2705: 2701: 2697: 2693: 2689: 2686: 2683: 2680: 2676: 2672: 2668: 2664: 2655: 2651: 2648: 2647: 2644:PL/I dialects 2638: 2634: 2630: 2627: 2623: 2620: 2617: 2614: 2610: 2606: 2602: 2598: 2594: 2593: 2584: 2580: 2576: 2575: 2566: 2563: 2560: 2556: 2553: 2550: 2547: 2544: 2541: 2537: 2533: 2529: 2525: 2521: 2517: 2514: 2511: 2508: 2504: 2503: 2502: 2494: 2483: 2476: 2469: 2457: 2434: 2424: 2408: 2369: 2341: 2338:NONASSIGNABLE 2330: 2319: 2307: 2305: 2300: 2273: 2238:DATE(pattern) 2235: 2200: 2181: 2180: 2179: 2171: 2160: 2145: 2134: 2128: 2115: 2108: 2105: 2102: 2095: 2084: 2057: 2056: 2055: 2051: 2048: 2044: 2040: 2036: 2032: 2028: 2017: 2015: 2011: 2007: 2003: 1998: 1995: 1994: 1988: 1986: 1982: 1978: 1976: 1972: 1964: 1962: 1958: 1957: 1952: 1950: 1946: 1945: 1940: 1936: 1932: 1931:Allen-Babcock 1927: 1925: 1921: 1910: 1908: 1904: 1900: 1896: 1892: 1888: 1884: 1873: 1869: 1866: 1864: 1860: 1856: 1852: 1848: 1842: 1839: 1808: 1806: 1795: 1792: 1789: 1785: 1784:Robert Morris 1781: 1777: 1773: 1769: 1765: 1755: 1753: 1748: 1743: 1741: 1737: 1732: 1730: 1726: 1722: 1717: 1714: 1710: 1706: 1702: 1687: 1684: 1682: 1676: 1674: 1670: 1669:Union Carbide 1666: 1662: 1661:Eastman Kodak 1658: 1654: 1650: 1646: 1642: 1638: 1634: 1630: 1626: 1623:representing 1622: 1618: 1613: 1603: 1599: 1594: 1590: 1580: 1578: 1569: 1567: 1562: 1561: 1558: 1556: 1551: 1550: 1547: 1545: 1540: 1539: 1536: 1534: 1529: 1528: 1522: 1520: 1515: 1514: 1508: 1506: 1501: 1500: 1494: 1492: 1487: 1486: 1480: 1478: 1473: 1472: 1466: 1464: 1459: 1458: 1452: 1450: 1445: 1444: 1438: 1436: 1431: 1430: 1424: 1422: 1417: 1416: 1410: 1405: 1400: 1399: 1393: 1388: 1383: 1382: 1376: 1371: 1366: 1365: 1359: 1354: 1349: 1348: 1342: 1337: 1332: 1331: 1325: 1320: 1315: 1314: 1308: 1303: 1298: 1297: 1291: 1286: 1281: 1280: 1274: 1269: 1264: 1263: 1257: 1252: 1247: 1246: 1242: 1239: 1236: 1235: 1232: 1212: 1211: 1210: 1201: 1196: 1191: 1186: 1185: 1184: 1177: 1172: 1169:ENDPAGE(file) 1167: 1164:ENDFILE(file) 1162: 1161: 1160: 1159: 1156: 1154: 1143: 1141: 1139: 1134: 1133: 1132: 1125: 1120: 1115: 1110: 1109: 1108: 1101: 1096: 1091: 1086: 1085: 1084: 1083: 1080: 1078: 1073: 1071: 1067: 1062: 1048: 1040: 1033:part and the 1016: 1011: 987: 983: 969: 945: 934: 923: 912: 911: 910: 909: 906: 890: 885: 880: 875: 874: 873: 866: 861: 856: 851: 850: 849: 842: 837: 832: 826: 825: 824: 823: 820: 816: 814: 810: 809:multi-tasking 778: 775: 774: 764: 761: 760: 750: 748:Input/Output 747: 746: 729: 726: 725: 711: 708: 707: 703: 700: 699: 696: 665: 662: 661: 637: 634: 633: 606: 603: 602: 598: 595: 594: 591: 590: 587: 579: 568: 565: 561: 558: 555: 552: 551:Orthogonality 549: 530: 526: 523: 519: 516: 513: 509: 506: 503: 502:strong typing 499: 496: 495:call by value 492: 488: 484: 480: 477: 476: 475: 468: 465: 462: 459: 458:Extensibility 456: 453: 452: 451: 449: 445: 434: 431: 429: 423: 421: 417: 415: 411: 407: 402: 398: 392: 390: 389:Roman numeral 386: 382: 378: 374: 370: 366: 362: 358: 354: 350: 346: 342: 335:Early history 332: 330: 326: 322: 318: 314: 310: 306: 302: 298: 294: 290: 286: 281: 279: 274: 272: 268: 264: 260: 256: 250: 217:, pronounced 216: 212: 201: 197: 193: 192: 190: 187: 183: 179: 175: 171: 167: 163: 159: 154: 151: 147: 143: 139: 136:Influenced by 134: 131: 126: 123: 119: 115: 103: 99: 85: 81: 78: 74: 70: 67: 65: 61: 58: 54: 50: 47: 45: 41: 33: 19: 6954:IBM software 6701: 6695: 6685: 6676: 6670: 6664: 6642: 6622: 6603: 6584: 6575: 6566: 6557: 6538: 6519: 6510: 6491: 6468: 6463: 6449: 6435: 6407: 6383:. Retrieved 6374: 6344: 6338: 6320: 6309:. Retrieved 6305:the original 6299: 6289: 6276: 6270: 6257: 6251: 6229: 6224: 6215: 6211: 6198: 6181: 6175: 6169: 6161: 6154:. Retrieved 6150:the original 6145: 6135: 6124:. Retrieved 6117:the original 6096: 6092: 6079: 6068:. Retrieved 6052: 6045: 6034:. Retrieved 6027:the original 6006: 6002: 5978: 5972:. Retrieved 5960: 5956: 5943: 5920: 5909:. Retrieved 5905: 5895: 5884:. Retrieved 5879: 5869: 5857:. Retrieved 5848: 5838: 5811: 5805: 5795: 5775: 5768: 5757:. Retrieved 5755:. 2020-09-15 5752: 5743: 5731:. Retrieved 5721: 5710:. Retrieved 5706:the original 5701: 5692: 5681:the original 5674: 5662: 5650:. Retrieved 5646:the original 5639: 5632:Peter Norton 5612: 5607: 5594: 5588: 5570: 5564: 5556: 5551: 5522: 5516: 5508: 5503: 5495: 5490: 5482: 5477: 5465:. Retrieved 5459: 5450: 5419: 5415: 5394: 5386: 5378: 5373: 5365: 5361: 5352: 5343: 5329: 5321: 5316: 5304:. Retrieved 5289: 5278:. Retrieved 5274:the original 5269: 5249:comp.answers 5234: 5223:. Retrieved 5214: 5207:Cutler, Dave 5201: 5176:. Retrieved 5157: 5149: 5145: 5134:. Retrieved 5121: 5104: 5098: 5092: 5073: 5067: 5057: 5009: 4983: 4978: 4969: 4956: 4947: 4921: 4915: 4898: 4889: 4876: 4870: 4858:. Retrieved 4831: 4822: 4816: 4807: 4797: 4790: 4761: 4755: 4741: 4735: 4722: 4714: 4707:. Retrieved 4680: 4662: 4653: 4639: 4612: 4606: 4566: 4560: 4547: 4538: 4529: 4517: 4508: 4496: 4455:George Radin 4440: 4415: 4386:The New PL/I 4385: 4379: 4368: 4360: 4312:find_strings 4127:find_strings 4056: 4047: 4033: 3901: 3898: 3882: 3862: 3843: 3788: 3733: 3722: 3714: 3707:paramount). 3705: 3698: 3692: 3680: 3660: 3641: 3637: 3621: 3587:Storage for 3586: 3584:statements. 3572: 3558: 3512: 3494: 3471: 3452: 3445:preprocessor 3442: 3434:multitasking 3423: 3418: 3412: 3410: 3398: 3389: 3380:multitasking 3377: 3356:side effects 3349: 3344: 3340: 3338: 3334: 3317: 3313: 3294: 3287:condition). 3274: 3266: 3249:-option and 3236: 3227: 3221: 3212:%GO TO label 3200: 3184: 3112: 3074:preprocessor 3071: 3069: 3060:Preprocessor 3032:-statement ( 3024:-statement ( 3004: 2990: 2981: 2978: 2975: 2967: 2935: 2931: 2883: 2852: 2677:components. 2565:IBM Series/1 2520:Data General 2500: 2484: 2480:ANYCONDITION 2477: 2470: 2463: 2456:-statement. 2435: 2425: 2414: 2407:attribute). 2387:creates the 2370: 2342: 2331: 2320: 2313: 2301: 2291:were added. 2274: 2255: 2215:LITTLEENDIAN 2177: 2161: 2146: 2135: 2121: 2112: 2060:DEFINE ALIAS 2052: 2023: 2013: 2005: 2001: 1999: 1991: 1989: 1980: 1979: 1966: 1965: 1954: 1953: 1942: 1937:with custom 1928: 1916: 1879: 1870: 1867: 1843: 1837: 1809: 1801: 1793: 1761: 1751: 1744: 1733: 1718: 1698: 1685: 1677: 1637:Data General 1621:C.A.R. Hoare 1614: 1598:multitasking 1586: 1574: 1230: 1208: 1188:RECORD(file) 1153:Input/Output 1152: 1150: 1076: 1074: 1069: 1065: 1063: 1046: 1038: 1014: 1012: 1008:L(12,2):A=0; 988: 984: 968:scale factor 965: 956:scale factor 900: 817: 806: 635:Declarative 580: 577: 472: 440: 432: 424: 418: 393: 384: 380: 376: 338: 282: 275: 254: 214: 210: 209: 202:at Wikibooks 6834:, PL/I for 6354:1721.1/6111 6233:Fred Brooks 6156:February 3, 5963:(1): 4–11. 5702:Micro Focus 5676:Micro Focus 5652:January 25, 5641:PC Magazine 5215:youtube.com 5172:comp.os.vms 4758:Jean Sammet 4569:(1): 9–17. 4460:James Cox, 4447:Hans Berg, 4274:putskiplist 4042:statement. 3917:(FORTRAN): 3880:condition. 3807:STRINGRANGE 3617:linked list 3607:variables. 3546:stack frame 3540:-block, or 3196:%DEACTIVATE 2619:Micro Focus 2603:(PL/I-80), 2358:'1' 2344:DO FOREVER; 2304:descriptors 2272:functions. 1883:Dave Cutler 1778:and MIT by 1766:project at 1577:Micro Focus 1155:condition, 604:Structural 420:Fred Brooks 313:fixed-point 6923:Categories 6694:6160:1979 6479:References 6311:2017-11-05 6126:2021-02-26 6070:2021-02-26 6036:2021-02-26 5974:2022-10-05 5911:2021-05-24 5886:2021-02-26 5759:2021-02-26 5712:2017-11-05 5280:2021-03-30 5270:kednos.com 5225:2021-02-26 5178:2021-02-26 5136:2023-10-31 4709:January 1, 4698:(Report). 4530:Datamation 4509:Datamation 4016:para_Three 3815:CONVERSION 3574:CONTROLLED 3564:CONTROLLED 3482:CONTROLLED 3391:variable. 3326:Criticisms 3201:assignment 3138:statements 3108:3.14159265 2890:SAS System 2855:mainframes 2837:for their 2773:developed 2746:System/370 2710:, and the 2635:and later 2528:Eclipse MV 2518:From 1978 2446:CONTROLLED 2334:ASSIGNABLE 2246:DAYSTODATE 2118:Data types 1752:controlled 1705:System/360 1179:NAME(file) 1070:conditions 903:arithmetic 828:Arithmetic 704:Statement 599:Statement 341:Autocoders 329:bit string 311:handling, 263:imperative 259:procedural 156:Influenced 57:structured 53:imperative 49:Procedural 6655:Standards 6484:Textbooks 5931:Newsgroup 5426:: 22–27. 5245:Newsgroup 5168:Newsgroup 4988:Honeywell 4553:Radin, G. 4422:MIT Press 4133:procedure 4019:DEPENDING 3945:RECURSIVE 3913:(COBOL), 3863:The PL/I 3811:UNDERFLOW 3554:AUTOMATIC 3534:AUTOMATIC 3514:AUTOMATIC 3478:AUTOMATIC 3438:functions 3430:recursion 3285:ATTENTION 3224:statement 3203:statement 3133:iteration 3119:CHARACTER 3050:EXCLUSIVE 2901:SabreTalk 2821:SabreTalk 2750:millicode 2728:Power ISA 2714:layer of 2692:System/38 2583:.NET Core 2540:AOS/VS II 2473:INVALIDOP 2211:BIGENDIAN 1939:microcode 1920:Dartmouth 1901:, and on 1824:OTHERWISE 1776:Bell Labs 1649:Burroughs 1629:Honeywell 1542:STRUCTURE 1174:KEY(file) 1051:PROCEDURE 1047:procedure 1000:PROCEDURE 948:PRECISION 924:a scale ( 834:CHARACTER 701:Category 608:PROCEDURE 596:Category 483:recursion 301:recursion 276:The PL/1 265:computer 112:/products 6778:Archived 6762:Archived 6240:Archived 6113:12745372 6023:19020943 5853:Archived 5442:24441291 5300:Archived 5219:Archived 4908:Concorde 4802:changes. 4631:13925251 4585:17133703 4470:, Chair. 4449:Lockheed 4320:See also 4013:para_Two 4010:para_One 3967:IGOTTAGO 3951:option." 3819:OVERFLOW 3593:ALLOCATE 3578:ALLOCATE 3518:INTERNAL 3508:EXTERNAL 3426:pointers 3360:aliasing 3341:keywords 3257:, and a 3217:%INCLUDE 3088:ACTIVATE 3079:%INCLUDE 2938:database 2842:STAR-100 2754:firmware 2720:IBM RS64 2665:and now 2505:In 1974 2491:ALLOCATE 2466:RESIGNAL 2431:DOWNTHRU 2383:). Thus 2250:DATETIME 2227:DOWNTHRU 2219:UNSIGNED 2203:UNSIGNED 2192:WIDECHAR 2184:VARYINGZ 2091:VARYINGZ 2087:UNSIGNED 1975:IBM 1130 1876:DEC PL/I 1865:(PCMs). 1709:compiler 1610:ABNORMAL 1524:VARIABLE 1327:CONSTANT 1059:EXTERNAL 1004:(NOSIZE) 935:a mode ( 913:a base ( 811:and the 731:ALLOCATE 727:Storage 583:%INCLUDE 487:Algol 60 387:(with a 375:labeled 150:ALGOL 60 130:dialects 122:Dialects 44:Paradigm 6855:Pliedit 6385:July 9, 6246:, 2001. 5933::  5859:Feb 24, 5845:"PL/MP" 5830:7492851 5306:May 30, 5247::  5170::  4964:(ed.). 4674:. 1989. 4451:Burbank 4293:line_no 4289:line_no 4278:line_no 4261:pattern 4232:getedit 4227:forever 4213:line_no 4199:pattern 4195:getedit 4183:endfile 4172:varying 4158:varying 4136:options 4091:putlist 4079:options 4025:IDECIDE 3958:ASSIGN 3931:PROCEED 3644:DEFINED 3613:POINTER 3605:POINTER 3550:INITIAL 3504:Fortran 3405:Fortran 3301:classes 3084:DECLARE 3054:process 3036:), the 3028:), the 2922:OpenVMS 2908:Multics 2875:OpenVMS 2791:of the 2738:IBM 801 2724:PowerPC 2679:IBM Db2 2605:CP/M-86 2524:Eclipse 2487:STORAGE 2454:PACKAGE 2450:EXPORTS 2421:ITERATE 2393:INTEGER 2377:INTEGER 2327:BYVALUE 2258:VERIFYR 2231:ORDINAL 2196:GRAPHIC 2188:HEXADEC 2153:POINTER 2129:, e.g. 2123:ORDINAL 2098:BYVALUE 2064:ORDINAL 2043:Windows 1891:Multics 1887:VAX/VMS 1847:DOS/360 1828:ITERATE 1812:BUILTIN 1764:Multics 1747:DOS/360 1736:TSS/360 1433:FLOAT 1293:BUILTIN 1249:ALIGNED 1072:occur: 1066:ON-unit 970:of the 941:COMPLEX 919:DECIMAL 892:POINTER 788:REWRITE 648:DEFAULT 639:DECLARE 474:goals: 428:Multics 397:Hursley 353:Fortran 345:COMTRAN 321:complex 257:) is a 146:Fortran 101:Website 91: ( 6899:Portal 6629:  6610:  6591:  6545:  6526:  6498:  6111:  6021:  5828:  5783:  5733:13 May 5539:  5467:5 July 5440:  4860:May 5, 4748:  4629:  4583:  4428:  4392:  4107:Hello2 4072:Hello2 4007:GO TO 3949:THREAD 3915:ASSIGN 3865:RECORD 3833:, the 3825:, and 3799:SYSTEM 3789:If no 3780:SIGNAL 3776:REVERT 3672:LENGTH 3601:OFFSET 3560:STATIC 3530:Pascal 3496:STATIC 3488:, and 3484:, and 3474:STATIC 3413:pseudo 3251:REPEAT 3245:, the 3046:UNLOCK 3016:, the 2954:Oracle 2877:, and 2793:PRIMOS 2762:64-bit 2716:OS/400 2696:AS/400 2663:OS/390 2538:& 2536:AOS/VS 2513:UNIVAC 2438:STATIC 2427:UPTHRU 2373:DEFINE 2323:BYADDR 2281:&= 2266:SEARCH 2262:VERIFY 2223:UPTHRU 2207:SIGNED 2194:, and 2138:DEFINE 2127:Pascal 2072:HANDLE 2066:, and 2035:OS/390 1949:OS/360 1859:VM/CMS 1857:, and 1851:OS/VS1 1816:SELECT 1713:OS/360 1657:Univac 1655:, and 1606:NORMAL 1604:(e.g. 1510:STATIC 1503:OFFSET 1475:MEMBER 1447:FORMAT 1419:FIXED 1407:RECORD 1390:UPDATE 1373:STREAM 1322:OUTPUT 1254:DIRECT 1226:FINISH 1151:or an 943:), and 932:), and 921:), and 915:BINARY 887:OFFSET 877:FORMAT 796:DELETE 792:LOCATE 721:REVERT 717:SIGNAL 683:RETURN 675:SELECT 657:FORMAT 564:macros 543:, and 512:glyphs 361:GEORGE 295:, and 71:, the 6836:Linux 6757:IBM, 6750:IBM, 6743:IBM, 6736:IBM, 6647:(PDF) 6379:(PDF) 6281:(PDF) 6262:(PDF) 6208:(PDF) 6120:(PDF) 6109:S2CID 6089:(PDF) 6057:(PDF) 6030:(PDF) 6019:S2CID 5999:(PDF) 5953:(PDF) 5880:MI400 5826:S2CID 5684:(PDF) 5671:(PDF) 5599:(PDF) 5438:S2CID 5422:(3). 5130:(PDF) 5014:(PDF) 4926:(PDF) 4881:(PDF) 4855:(PDF) 4696:(PDF) 4689:(PDF) 4646:telex 4627:S2CID 4581:S2CID 4526:(PDF) 4505:(PDF) 4457:, IBM 4353:Notes 4253:index 4187:sysin 4036:LABEL 3994:GO TO 3922:ALTER 3911:ALTER 3904:GO TO 3839:GO TO 3835:ERROR 3795:ERROR 3740:BEGIN 3683:BASED 3676:REFER 3664:REFER 3656:UNION 3628:heaps 3609:BASED 3589:BASED 3568:BASED 3566:, or 3538:BEGIN 3522:ALGOL 3500:COBOL 3486:BASED 3401:COBOL 3305:UNION 3277:CHECK 3247:UNTIL 3239:LEAVE 3042:EVENT 3010:EVENT 2897:Sabre 2849:Usage 2831:Apple 2825:Sabre 2812:HAL/S 2671:z/VSE 2659:REFER 2637:Linux 2442:BASED 2417:LEAVE 2391:name 2352:WHILE 2316:VALUE 2297:A=A+1 2270:TALLY 2164:UNION 2157:=> 2080:UNION 2014:PLUTO 1981:PLAGO 1924:BASIC 1903:Tru64 1899:Alpha 1889:from 1832:LEAVE 1665:MITRE 1461:LABEL 1454:LOCAL 1385:ENTRY 1339:PRINT 1305:KEYED 1288:INPUT 1276:BASED 1222:ERROR 1039:block 1015:group 996:ENTRY 930:FLOAT 926:FIXED 882:LABEL 863:ENTRY 784:WRITE 756:CLOSE 735:ALLOC 679:GO TO 621:BEGIN 617:ENTRY 401:GUIDE 373:ALGOL 369:SHARE 357:ALGOL 349:COBOL 142:COBOL 73:SHARE 6840:OS/2 6838:and 6825:and 6811:z/OS 6809:for 6682:ECMA 6661:ANSI 6627:ISBN 6608:ISBN 6589:ISBN 6543:ISBN 6524:ISBN 6496:ISBN 6387:2023 6158:2010 5861:2021 5781:ISBN 5735:2019 5654:2010 5537:ISBN 5469:2021 5308:2010 5193:link 4862:2020 4746:ISBN 4711:2024 4426:ISBN 4390:ISBN 4282:line 4272:then 4266:> 4257:line 4236:line 4191:stop 4141:main 4084:main 4077:proc 4040:GOTO 3961:1860 3878:AREA 3874:AREA 3827:FILE 3823:AREA 3734:The 3688:ADDR 3652:CELL 3624:AREA 3622:The 3597:FREE 3582:FREE 3580:and 3490:AREA 3453:e.g. 3449:Lisp 3309:TYPE 3297:CELL 3281:SNAP 3222:null 3194:and 3176:ELSE 3173:...% 3170:THEN 3167:...% 3034:Join 3030:WAIT 3026:Fork 3022:CALL 3018:TASK 3014:TASK 3012:and 2971:PL/S 2963:Java 2952:and 2948:and 2946:CICS 2940:and 2926:IA64 2906:The 2888:The 2879:Unix 2867:OS/2 2800:PL/P 2779:CP-6 2775:PL-6 2756:for 2752:and 2744:and 2734:PL.8 2694:and 2685:PL/C 2675:z/VM 2673:and 2667:z/OS 2650:PL/S 2633:OS/2 2626:OS/2 2613:PL/M 2601:CP/M 2581:and 2526:and 2485:The 2478:The 2471:The 2464:The 2429:and 2405:LIKE 2401:TYPE 2389:TYPE 2371:The 2336:and 2332:The 2314:The 2293:A+=1 2268:and 2244:and 2242:DAYS 2236:The 2225:and 2213:and 2205:and 2168:CELL 2162:The 2147:The 2142:TYPE 2136:The 2076:TYPE 2047:z/OS 2041:and 2006:PLUM 1993:SP/k 1969:SL/1 1956:PL/C 1897:and 1836:DATE 1830:and 1820:WHEN 1805:PL/S 1619:and 1608:and 1593:ANSI 1589:ECMA 1402:FILE 1300:BIT 1266:AREA 1214:AREA 1103:SIZE 1035:ELSE 1031:THEN 998:and 937:REAL 901:The 868:FILE 853:AREA 780:READ 752:OPEN 740:FREE 733:(or 687:STOP 667:CALL 650:(or 641:(or 612:PROC 610:(or 537:TIME 535:and 533:DATE 446:and 385:PL/I 381:MPPL 343:via 278:ANSI 255:PL/1 211:PL/I 200:PL/I 182:REXX 178:PL.8 174:PL-6 170:PL/S 166:PL/M 128:See 110:.com 108:.ibm 93:1964 86:1964 38:PL/I 18:PL/1 6827:VSE 6819:MVS 6815:AIX 6692:ISO 6684:50 6409:IBM 6349:hdl 6329:vs 6186:doi 6101:doi 6061:doi 6011:doi 5965:doi 5816:doi 5527:doi 5461:IBM 5428:doi 5109:doi 5078:doi 4700:IBM 4617:doi 4571:doi 4310:end 4304:end 4167:100 4153:100 4105:end 3844:An 3603:or 3403:or 3146:END 3086:d, 2959:C++ 2950:IMS 2871:AIX 2859:DOS 2806:XPL 2765:gcc 2712:XPF 2609:DOS 2559:VOS 2549:CDC 2532:AOS 2444:or 2289:||= 2260:to 2209:, 2039:AIX 2027:MVS 2008:by 2002:PL0 1944:CPS 1895:VAX 1855:MVS 1788:TMG 1768:MIT 1653:RCA 1633:CDC 1625:ICL 1612:). 1064:An 1055:END 1023:END 1010:). 939:or 928:or 917:or 858:BIT 770:PUT 766:GET 652:DFT 643:DCL 629:END 414:VDM 377:NPL 347:to 271:IBM 186:SAS 106:www 77:ISO 69:IBM 6925:: 6823:VM 6821:, 6817:, 6813:, 6418:^ 6406:. 6395:^ 6363:^ 6297:. 6214:. 6210:. 6182:28 6180:. 6160:. 6144:. 6107:. 6097:46 6095:. 6091:. 6017:. 6007:48 6005:. 6001:. 5986:^ 5977:. 5961:34 5959:. 5955:. 5929:. 5904:. 5878:. 5851:. 5847:. 5824:. 5812:38 5810:. 5804:. 5751:. 5700:. 5673:. 5638:. 5621:^ 5578:: 5574:. 5535:. 5458:. 5436:. 5420:31 5418:. 5414:. 5402:^ 5393:, 5351:. 5298:. 5268:. 5257:^ 5243:. 5213:. 5189:}} 5185:{{ 5166:. 5105:12 5103:. 5074:15 5072:. 5066:. 5039:^ 5022:^ 4996:^ 4986:. 4968:. 4946:. 4934:^ 4840:^ 4782:^ 4770:^ 4760:, 4754:. 4713:. 4704:11 4691:. 4670:. 4625:. 4613:13 4611:. 4605:. 4593:^ 4579:. 4565:. 4559:. 4528:. 4507:. 4424:. 4404:^ 4251:if 4224:do 4181:on 4022:ON 3964:TO 3934:TO 3928:TO 3889:ON 3885:ON 3870:ON 3858:ON 3850:ON 3846:ON 3821:, 3817:, 3813:, 3809:, 3803:ON 3791:ON 3784:ON 3772:ON 3768:ON 3764:ON 3760:ON 3756:ON 3748:ON 3744:ON 3736:ON 3725:ON 3718:ON 3619:. 3562:, 3542:ON 3492:. 3480:, 3476:, 3432:, 3373:ON 3368:ON 3307:, 3255:DO 3243:DO 3179:.. 3164:IF 3130:DO 3110:. 3104:PI 3096:PI 3040:, 2961:, 2881:. 2873:, 2869:, 2865:, 2861:, 2798:: 2534:, 2440:, 2415:A 2368:. 2349:DO 2299:. 2287:, 2285:-= 2283:, 2279:, 2277:+= 2217:. 2190:, 2093:). 2089:, 2062:, 2037:, 2033:, 2031:VM 2029:, 1853:, 1841:. 1838:() 1782:, 1671:, 1667:, 1663:, 1651:, 1647:, 1643:, 1639:, 1635:, 1631:, 1224:, 1220:, 1216:, 1079:, 1075:a 1027:IF 1019:DO 946:a 713:ON 671:IF 625:DO 545:DO 504:). 497:). 416:. 359:, 355:, 323:, 319:, 315:, 307:, 303:, 291:, 287:, 261:, 227:iː 184:, 180:, 176:, 172:, 168:, 164:, 148:, 144:, 55:, 51:, 6901:: 6867:. 6865:C 6635:. 6616:. 6597:. 6551:. 6532:. 6504:. 6457:. 6443:. 6429:. 6389:. 6357:. 6351:: 6333:. 6314:. 6218:. 6216:6 6192:. 6188:: 6129:. 6103:: 6073:. 6063:: 6039:. 6013:: 5967:: 5937:. 5914:. 5889:. 5863:. 5832:. 5818:: 5789:. 5762:. 5737:. 5715:. 5656:. 5545:. 5529:: 5471:. 5444:. 5430:: 5355:. 5337:. 5310:. 5283:. 5251:. 5228:. 5195:) 5181:. 5139:. 5115:. 5111:: 5086:. 5080:: 5051:. 5033:. 4972:. 4950:. 4864:. 4633:. 4619:: 4587:. 4573:: 4567:8 4434:. 4398:. 4314:; 4307:; 4301:; 4298:1 4295:+ 4291:= 4287:; 4284:) 4280:, 4276:( 4269:0 4263:) 4259:, 4255:( 4248:; 4245:) 4243:L 4241:( 4238:) 4234:( 4230:; 4221:; 4218:1 4215:= 4211:; 4208:) 4206:L 4204:( 4201:) 4197:( 4193:; 4189:) 4185:( 4178:; 4174:; 4170:) 4164:( 4160:; 4156:) 4150:( 4146:; 4143:) 4139:( 4130:: 4109:; 4102:; 4099:) 4093:( 4089:; 4086:) 4082:( 4075:: 3595:/ 3526:C 3161:% 3149:; 3143:% 3140:; 3136:: 3127:% 3092:+ 2944:( 2917:. 2726:/ 2615:. 2365:; 2362:) 2360:B 2355:( 2198:. 2025:( 1822:/ 1818:/ 1041:( 958:) 950:( 737:) 654:) 645:) 614:) 524:. 249:/ 246:n 243:ʌ 240:w 235:l 232:ɛ 224:p 221:/ 213:( 95:) 34:. 20:)

Index

PL/1
Programming language design § Design and implementation
Paradigm
Procedural
imperative
structured
Designed by
IBM
SHARE
ISO
www.ibm.com/products/pli-compiler-zos
Dialects
dialects
COBOL
Fortran
ALGOL 60
Control Language
PL/M
PL/S
PL-6
PL.8
REXX
SAS

PL/I
/pɛlwʌn/
procedural
imperative
programming language
IBM

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.