- THE PL/I NEWSLETTER -
|- THE PL/I NEWSLETTER -|
- THE PL/I NEWSLETTER -
The ninth issue may be downloaded from:
The PL/I Newsletter, No. 9, April 2006.
The eighth issue may be downloaded from: The PL/I Newsletter, No. 8, January 2005.
The seventh issue may be downloaded from: The PL/I Newsletter, No. 7, December 2004.
The sixth issue may be downloaded from: The PL/I Newsletter, No. 6, December 2003.
The fifth issue may be downloaded from: The PL/I Newsletter, No. 5, August 2002.
The fourth issue may be downloaded from: The PL/I Newsletter, No. 4, November 2001.
The third issue may be downloaded from: The PL/I Newsletter, No. 3, June 2001.
The second issue may be downloaded from: The PL/I Newsletter, No. 2, September 2000.
The first issue may be downloaded from: The PL/I Newsletter, No. 1, July 2000.
The popular board game of chess has been added to our repertoire of games. You may care to try that and any of the others.
It is sometimes convenient to process long strings - those longer than 32767 characters - particularly with the high speed XML parser that is part of the IBM compilers.
The string search built-in functions that return integer values return FIXED BINARY (31) values. As well, the STRING and SUBSTR functions handle strings longer than 32767 characters.
Put them together and strings longer than 32767 can be searched using the INDEX, VERIFY, SEARCH, VERIFYR, SEARCHR functions. Substrings can be taken of long strings.
The only requirement is that the variable used to hold the long strings be an array of single characters.
Consider the statements:
Assignments of an ordinary string can be made to a long string. Assignments of another array of characters can be made to a long string. This is done with the help of the STRING pseudo-variable. Thus, given
Substring operations using the built-in function are performed in the usual way. It's necessary only to add STRING, thus:
Note: Always remember to declare integer variables that hold lengths and positions as FIXED BINARY (31).
The spring 2000 edition of the
COBOL and PL/I newsletter
has some topics about PL/I. The specific PL/I
topics may be viewed separately, or the entire newsletter in PDF
format may be downloaded.
Of particular interest is the use of PL/I as a programming language for the Common Gateway Interface (CGI).
The PL/I Connection newsletter.
The PL/I Connection Newsletter No. 11 , December 1997.
The PL/I Connection Newsletter No. 10 , April 1997.
VisualAge PL/I Enterprise Edition Version 2.1 combines the two separate offerings from the previous release of VisualAge PL/I (Standard and Professional) into a single offering available on both the OS/2 and Windows NT platforms. By doing so, it provides these productivity features:
Also included as an extra bonus offering is VisualAge CICS® Enterprise Application Development, which enables CICS host application development on the workstation.
An HTML version of "The Multics PL/1 Compiler" by Bob Freiburghouse from the 1969 FJCC has been added to the Multics website at http://www.multicians.org/pl1-raf.html with Bob's permission.
This paper describes the Multics version 1 PL/I compiler's implementation.
Built-in functions are generic, and typically operate on any data type and
for an array of any number of dimensions (up to the maximum permitted
by the compiler).
If a user attempts to write a generic function, it is necessary to provide the procedures to perform the desired operation on each of the data types that he wants.
As well, if the argument(s) can be arrays, the user must also provide procedures to perform the desired operation on arrays of any number of dimensions. Each procedure dealing with an array must also be duplicated to deal with each of the different types that the user wants.
Thus, if there are four data types (integer, decimal, float, float (16)), and the compiler supports arrays having 10 dimensions, then 40 procedures must be provided.
It would be better to have a new attribute GENERIC_ALL which specifies that any procedure in the family is assumed to apply to scalars and arrays of any dimension. e.g.,