PL/I RESOURCES PL/1 RESOURCES PL1 RESOURCES
WELCOME TO THE PL/I RESOURCES PAGE
Literature
-
What is PL/I? -- basic information about this marvellous
programming language.
A truncated version of the same may be seen at:
About PL/I -- that will interest you.
-
Why not use PL/I? -- if you
aren't already using PL/I.
-
The Year 2000 challenge. Liant Software Corporation
released a tool to assist the conversion of PL/I programs
to comply with Year 2000 requirements. See
Year 2000 tool .
Micro Focus purchased the PL/I products from Liant. (see later
for information about Micro Focus).
-
The PL/I Newsletter, No. 11, November 2009
-
The PL/I Newsletter, No. 10, June 2008
-
The PL/I Newsletter, No. 9, April 2006
-
The PL/I Newsletter, No. 8, January 2005
-
The PL/I Newsletter, No. 7, December 2003
-
The PL/I Newsletter, No. 6, December 2002
-
The PL/I Newsletter, No. 5, August 2002
-
The PL/I Newsletter, No. 4, November 2001
-
The PL/I Newsletter, No. 3, June 2001
-
The PL/I Newsletter, No. 2, September 2000
-
The PL/I Newsletter, No. 1, July 2000
-
The combined
COBOL and PL/I Newsletter is the successor to The PL/I
Connection Newsletter. Earlier editions of the COBOL & PL/I
Newsletter in PDF format may be downloaded.
-
The PL/I Connection Newsletter:
-
The PL/I
Connection
.
IBM.
-
The PL/I Connection Newsletter No. 11 , December 1997.
-
The PL/I Connection Newsletter No. 10 , April 1997.
-
The PL/I Connection Newsletter No. 9 , December 1996.
-
The PL/I Connection Newsletter No. 8 , September 1996.
-
The PL/I Connection Newsletter No. 7 , June 1996.
-
The PL/I Connection Newsletter No. 6
, March 1996;
-
The PL/I Connection Newsletter No. 5
, December 1995;
-
The PL/I Connection Newsletter No. 4
, September 1995;
-
The PL/I Connection Newsletter No. 3
, June 1995;
-
The PL/I Connection Newsletter No. 2
, March 1995;
-
The PL/I Connection Newsletter No. 1
, December 1994
- Take a look at Peter Elderon's white paper on
Object Oriented PL/I .
-
In Praise of PL/I by Lou Marco.
-
Power vs Adventure -- PL/I and C ?
-
Peter Norton rediscovers PL/I.
PL/I SOFTWARE
The following PL/I functions implement many of the
new built-in functions that are now in IBM's Websphere and
Enterprise PL/I for z/OS,
VisualAge PL/I for OS/2, AIX, and Windows compilers.
(There are also the occasional
code segments and procedures unrelated to these compilers, and
which you may find useful.)
- ASCII declarations
for the ASCII control codes 0-31 and 127.
- CENTER with 2 or 3 arguments .
actually one of a family of functions for centering text,
including CENTER, CENTERLEFT, & CENTERRIGHT. There's
also LEFT, & RIGHT, which places a given string
at the left-hand or the right-hand end of a string,
respectively.
- COLLATE , which returns a character
string of length 256, with all the characters
in collating sequence order, from 0 to 255.
- COPY - a variation of the standard
function REPEAT, which returns n copies of a string
catenated.
- DATE. See below for the Year 2000 date functions.
- EDIT for editing a value according
to a given picture specification. The picture
specification may be created dynamically.
This function will allow you to define your own
currency symbol. If your system already supports the
new Euro currency symbol, you can go ahead and use this function
to display/print it. If your system does not support it,
the function will also allow you to
specify an approximation to the new Euro currency
symbol. This latter can only be done in conjunction with
serial printers.
- EPSILON , which returns the
smallest value which, when added to 1.0, gives
a result that is different from 1.
- GAMMA and LOGGAMMA for the Gamma
function & the logarithm of the Gamma function
respectively.
- HEX returns the hexadecimal form
of storage as a string.
- HUGE returns the largest value.
- INDEX with 3 arguments , which
starts the search from a specified position in the
string.
- INDEXR with 2 and 3 arguments ,
for a reverse search.
The search can start from the end of the string,
or from any specified position.
- INDEXR with WIDECHAR support,
for a reverse search. The search may start from the
end of the string, or from any specified position.
- MAXLEN , which returns the
maximum length of a varying-length string.
- RANDOM with no arguments or 1 argument ,
which generates random numbers.
- REM , a companion to the
MOD function, for computing remainders.
- REPEAT , for those systems
that don't have the standard REPEAT function.
- REVERSE , which returns a
string that is the argument in which the characters (or
bits) are in reverse order.
- SCALE
- SEARCH with 2 or 3 arguments ,
searches a string from left to right. The search
stops when any character from a set matches one in
the string being searched.
- SEARCHR with 2 or 3 arguments .
Same as SEARCH, but the string is searched from right
to left.
- SOME and EVERY .
- SUBTRACT
- SUCC
- TALLY (revised 12/10/2001), counts the number of
occurrences of one string in another.
- TINY returns the smallest positive
value.
- TRIM, with 1, 2, or 3 arguments ,
returns the argument string with blanks
(or other specified characters) trimmed from each end.
- VALID , which validates a
decimal variable against a picture
format.
- VERIFY with 3 arguments
is like the standard function VERIFY with 2 arguments,
but the search can start from any position.
- VERIFYR with 2 or 3 arguments ,
for a reverse search.
With 3 arguments, the search can start from any
position.
- GETARG is a utility function that returns the
n-th command-line argument. The first function reference
MUST be to NARGS, which returns the number of arguments.
Arguments are assumed to be separated by blanks.
Arguments containing blanks may be delimited by
apostrophes or quotation marks.
- BTEST, IBSET, IBCLR, and IBITS are four
procedures that implement the equivalent of the Fortran
intrinsic functions BTEST, IBSET, IBCLR, and IBITS.
The first three functions manipulate
individual bits in a binary integer, and are typically
used in conjunction with IAND, INOT, IOR, etc.
IBITS may be used to extract a group of bits from a binary
integer.
- BTEST, IBSET, IBCLR, and IBITS are four
macro procedures that implement the equivalent of the Fortran
intrinsic functions BTEST, IBSET, IBCLR, and IBITS.
They are therefore more efficient than the
procedures described in the previous paragraphs.
- Two versions of the integer circular shift functions
mimic those of the Fortran intrinsic function ISHFTC.
This is for DR PL/I while
this is for full PL/I.
- PACK and UNPACK
are generic procedures for packing certain numeric and
CHARACTER data into a vector.
When the argument is a character string, the string
is compressed "in place". This may be used to eliminate
one or more characters from a character string.
When the main argument is a numeric array, certain
elements may be selected and stored in a vector,
according to a mask.
UNPACK reverses the effect of a PACK operation for
numeric data.
- CSHIFT and EOSHIFT
These procedures perform a shift on numeric data that
is stored in a vector or matrix.
CSHIFT. In the case of a vector, the elements can be
rotated left
or right depending on the value of a variable Shift.
Values rotated out one end of the vector re-appear at the
other end.
In the case of a matrix, rows can be shifted "up" or "down"
depending on the value of the variable Shift.
Rows shifted out one end re-appear at the other end.
EOSHIFT performs a similar operation, except that elements
or rows shifted out one end are lost, and the values or rows
vacated at the opposite end are set to zero.
- DOT_PRODUCT computes the dot product
of the vector arguments (which can be real or complex).
- UNSTRING implements COBOL's
UNSTRING statement.
- INSPECT implements a subset of
COBOL's INSPECT statement.
- UNHEX converts a hexadecimal string
to CHARACTER form (that is, each pair of hex characters is
translated to a character).
- Numerical algorithms
including least squares, integration, differentiation,
transpose a matrix in place, gamma functions, Bessel functions,
eigenvalues and eigenvectors, random numbers, and the like.
- The XPL compiler - a subset dialect of PL/I - is found at
XPL.
Other PL/I Resources include:
-
For that Year 2000 conversion, if you are using one of the
older PL/I compilers, you might like to make use of some
new date routines that handle Year 2000. In addition to
DATETIME, which returns the date with a 4-digit year in a
variety of formats, there are DAYS, SECSTODATE, DAYSTODATE, SECS,
DAYSTOSECS, WEEKDAY, REPATTERN, Y4DATE, Y4JULIAN,
Y4YEAR and so on, all in the file of
Year 2000 Date routines .
For a summary of what the PL/I's new Year 2000 functions do,
look in
Year 2000 IBM workstation functions .
There's also a Year 2000 conversion tool, in beta test.
For information, see
REDWOOD.
You might also like to pay a visit to their home page at
Kiyo Design, Inc.
Micro-Processor Services, Inc also offers a
PL/I Millennium 2000 Detector.
-
PL/I Analyzer
is a reverse engineeering and re-engineering tool,
available from
Phoenix Software Technologies,
6701 Democracy Blvd,
Suite 300, Bethesda MD 20817, U.S.A. Tel (301) 571-2431
email: info@phoenixst.com
Version 2.0 (new) has Year 2000 diagnostic capability.
Phoenix has also released PLI-2000, a tool for locating
Year 2000 problems.
Phoenix Software technologies provides tools and services for Software
Maintenance, legacy Software reengineering and the Year 2000
(Y2K, Millennium) Problem including PL/I and Natural/Adabas.
-
Micro Focus offers tools to accompany PL/I for OS/2. For more infomation,
contact them at Suite 400, 2465 East Bayshore Road, Palo Alto, CA 94303, U.S.A.
MicroFocus
For a direct line, there's more if you read
How can I reduce Development Costs .
-
PLIFORM is a PL/I source code formatter, available from
Magicon, Inc. You'll find them at:
909 University Ave, Suite 22, Los Gatos, CA 95030-2345, U.S.A.
-
Peter Osterman's PL/I source code reformatter.
The
PL/I source code reformatter
for Windows (formpli3.exe,
~800k self extracting file) created by Peter Ostermann of Germany
and made available by the IBM Team PL/I members,
can help make jumbled code more readable by putting statements
on separate lines and pointing out the nesting levels by indention.
The reformatter is a standalone product, is easy to use, and
does the job in a few seconds. It requires just one megabyte
of disk space, so give it a try.
Send suggestions or comments to: Peter.Ostermann@nwn.de .
More information and download
on Peter's personal web page.
-
REXX PARSE MACRO.--
This PL/I package from Eberhard Sturm implements the REXX
parse macro
on the mainframe and the workstation.
-
C to PL/I CONVERTER.--In preparation is a C to PL/I converter.
Covering a subset of C
only. This is only an advice. For some details, see
C to PL/I project.
If you are interested in influencing what facilities are implemented,
please contact the author.
Best would be to submit a segment of your typical C code that
could be used as a trial run.
-
FORTRAN to PL/I CONVERTER.--A FORTRAN to PL/I converter is
available. It translates FORTRAN IV
to PL/I. Download the source.
-
Some PL/I codes are available for downloading at:
Stratus .
Also, some Multics-related codes are available at
Stratus ,
which includes an implementation of D. Knuth's
MIX emulator.
-
PENTOMINOES.--Why not give
pentominoes by Manny Juan a try?
-
CHESS.--Like to play chess? It's Dean Menezes'
chess program that I converted to PL/I.
-
CHESS.--Try J. R. Manning's chess program:
White to move and mate in n moves.
-
MORE.--Look in the PL/I Software Repository .
Contributions are always welcome. Send them to me at the email
address at the bottom of this document.
Editors:
The excellent live parsing editor LPEX is available for PL/I
on OS/2. It's part of IBM's PL/I Toolkit, aka
Visual PL/I You can order it direct from IBM.
LPEX is also available as part of IBM's Windows
and AIX VisualAge PL/I compiler package.
See below under "help" for notes for setting up LPEX.
Books on PL/I
- R.A. Barnes, PL/I for Programmers, North-Holland, 1979.
- J.K. Hughes, PL/I Structured Programming, 3rd Ed., Wiley, 1986.
- G.F. Groner, PL/I Programming in Technological Applications,
Books on Demand, Ann Arbor, MI, 1971.
- M.E. Anderson, PL/I for Programmers, Prentice-Hall, 1973.
- D.R. Stoutemyer, PL/I Programming for Engineering & Science,
Prentice-Hall, 1971.
- R. Reddy & C. Ziegler, PL/I: Structured Programming and
Problem Solving, West, 1986, ISBN 0-314-93915-6.
Check out the
Table of Contents .
- E. Sturm, The New PL/I ... for PC, Workstation and Mainframe
Vieweg-Teubner, Wiesbaden, Germany, 2009.
ISBN: 978-3-8348-0726-7.
- E. Sturm, Das neue PL/I (fur PC, Workstations und Mainframe)
(in German language), 7th Ed.,
Vieweg-Verlag (2008)
ISBN: 3-528-44792-3
See the
Contents .
- R. A. Vowels,
Introduction to PL/I, Algorithms, and
Structured Programming , 3rd Ed.,
ISBN 0-9596384-9-0.
Comes with a disc containing all the programs,
procedures, and functions from the book. Look at
a list of the
main algorithms.
The disc
includes the source for almost all of the 97 new
built-in procedures of PL/I on the workstation.
The disc, first published in October 1996, also
contains some additional and improved algorithms.
The latest version of the disc is packed when
the book is shipped.
Like to try out PL/I?
Why not try out the
demo copy,
There's also the original
Digital Research PL/I for DOS.
It's the G-level subset of PL/I, of course, because it had to fit
in 64K originally (I think).
The compiler is free for non-commercial use.
The URL contains the compiler, linker, samples, and
replacement runtime.
Download the
PL/I Programmers Manual,
PL/I Reference Manual .
This URL gives all
Digital research files on site, alphabetical.
Other old sites may give some information:
Digital Research PL/I for DOS.
Digital Research PL/I for DOS.
It's a subset of PL/I, of course, because it had to fit
in 64K originally (I think).
If that site is down, you can link to a
mirror site
See also DR DOS information.
Find the PCDOS section, and then check out DOWNLOADS.
Be sure to download the utilities (including the linker)
as well as the compiler and sample codes.
You'll also need the
compiler options (flags)
to use it.
It you want Digital Research's CP/M-86 PL/I compiler, go to the
same site
as mentioned above, and go to the PCDOS section, check out
DOWNLOADS, and the CP/M-86 section.
If you haven't a copy of Digital Research's PL/I Reference Manual,
check out the appendixes in Joan Hughes's book
PL/I Structured Programming for a summary of its features.
IBM Reference Manuals in PDF format may be downloaded by visiting the
online library.
Patches
To update IBM's PL/I VisualAge compiler for OS/2, visit:
OS/2 PL/I patch
There is a readme file and a ZIP file. Note that the main ZIP file is
large (v. 2.1.4 is 23Mb), so be prepared to spend some time downloading it.
The windows fixpack is there too. Just go up one level, and then select
the WINDOWS directory.
For the latest
Windows Enterprise PL/I fixpak:
Click on VisualAge PL/I for Windows (in the lower middle of the page).
Then click on "support" on the left of the page.
Then click on "all support downloads" in the middle of the page.
PL/I Jobs
Looking for PL/I jobs?
Then try the usual sources, for example, newspapers, and:
newsgroups:
us.jobs.offered
misc.jobs.offered
misc.jobs.contract
Your neighborhood area, which has the pro-forma --
aol.neighborhood.*.*.jobs
for example--
aol.neighborhood.tx.el-paso.jobs
If all else fails, search in http://www.dejanews.com, using the
keyword "PL/1".
View recent job advertisements.
PL/I Courses
This list will be updated from time to time. This list was started on
6 Dec. 1998. If you hear of any other courses, please email the
webmaster at the bottom of this page.
- SHORT COURSES:
- TERM COURSES:
Other PL/I sites:
If you're using PL/I for OS/2, and want to set up OS/2 for internet connection,
see Installing Internet Access on Warp.
Help
For setting up the editor LPEX on Windows, see
setting up LPEX.
Tutorial
A very brief tutorial of a procedure outlines
the main keywords of the language. Click on the keywords to obtain a brief
explanation. Another is a linked lists procedure.
For further information, or feedback, please email me at
r|o|b|i|n|5|1 at dodo dot com dot au
Updated: 16th April 2006, 29 March 2007, 7 June 2008, 2 January 2009.
30 October 2009, 10 July 2010.