Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
PL/I
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===IBM PL/I optimizing and checkout compilers=== The PL/I Optimizer and Checkout compilers produced in Hursley support a common level of PL/I language<ref name="gc33-0009-4">{{cite book|url=http://www.bitsavers.org/pdf/ibm/360/pli/GC33-0009-4_PLI_Checkout_And_Opt_Compiler_Lang_Ref_Oct76.pdf|title=OS PL/I Checkout and Optimizing Compilers: Language Reference Manual|id=GC33-0009-04|date=October 1976|publisher=IBM}}</ref> 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 [[PL/S]]).<ref name=Krasun /> The performance objectives set for the compilers are shown in an IBM presentation to the BCS.<ref name=Krasun /> The compilers had to produce identical results{{snd}} 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. IBM introduced new attributes and syntax including {{tt|BUILTIN}}, case statements ({{tt|SELECT}}/{{tt|WHEN}}/{{tt|OTHERWISE}}), loop controls ({{tt|ITERATE}} and {{tt|LEAVE}}) and null argument lists to disambiguate, e.g., <code>DATE'''()'''</code>. 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 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.<ref name=CasD/> 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 [[DOS/360]] operating system in August 1971, and shortly afterward for OS/360,<ref name=OptPLI.1971/> and the first virtual memory IBM operating systems [[OS/VS1]], [[MVS]], and [[VM/CMS]]. (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 [[plug compatible|plug-compatible machines]] (PCMs). The compiler has been superseded by "IBM PL/I for OS/2, AIX, Linux, z/OS" below. The PL/I checkout compiler,<ref>{{cite journal|title=A Conversational Compiler for Full PL/I|author=R. N. Cuff|journal=[[The Computer Journal]]|date=May 1972|volume=15|issue=2|pages=99β104|doi=10.1093/comjnl/15.2.99|doi-access=free}}</ref><ref>{{cite journal|title=The design of a checkout compiler|author=B. L. Marks|journal=[[IBM Systems Journal]]|volume=12|issue=3|pages=315β327|date=1973|doi=10.1147/sj.123.0315}}</ref> (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 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?)
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
PL/I
(section)
Add topic