Appendix D
Migration Notes
This appendix contains notes and comments about migration issues. It lists and describes keywords and functions of the PL/I language that are available in other implementations of PL/I but are not included in Endless PL/I for POSIX Systems. It also outlines the differences between Endless PL/I for POSIX Systems and Digital's implementations of PL/I.
The information in this appendix is not intended to represent either a complete or a formal description of migration issues. The information is presented informally and has not been subjected to extensive testing and verification.
D.1. Keywords Not Supported
The following two tables summarize keywords not supported in this version of Endless PL/I for POSIX Systems.
Table D.1, “PL/I Keywords Not Supported” lists keywords used in other implementations of PL/I but not in Endless PL/I for POSIX Systems. The table does not include ENVIRONMENT keywords or implementation-specific language extensions. Some keywords are supported in a specific implementation of PL/I. Those keywords are noted with the name of the implementation in parentheses.
Table D.2, “Summary of Unsupported IBM I/O Features” lists I/O keywords supported in the IBM implementation of PL/I but not in Endless PL/I for POSIX Systems.
| Keyword | Abbreviation | Use |
|---|---|---|
| ACTUALCOUNT | Built-in function | |
| ADDREL | Built-in function | |
| AFTER | Built-in function | |
| ASMTDLI | Built-in subroutine (IBM ) | |
| BACKWARDS | Attribute, Option of OPEN statement (IBM) | |
| BEFORE | Built-in function | |
| BY NAME | Option of assignment statement | |
| C | Format item | |
| CALL | Option of INITIAL attribute | |
| CASE | Option of DO statement | |
| COMPLETION | CPLN | Built-in function(IBM ), Pseudovariable (IBM ) |
| COMPLEX | CPLX | Attribute, Built-in function (IBM ), Pseudovariable (IBM ) |
| CONJG | Built-in function (IBM ) | |
| CONNECTED | CONN | Attribute |
| CONSTANT | Attribute | |
| CONVERSION | CONV | Condition prefix (IBM ) |
| COPY | Option of GET statement (IBM ) | |
| COUNT | Built-in function (IBM ) | |
| D | Format item | |
| DATA | Stream I/O transmission mode (IBM ) | |
| DATAFIELD | Built-in function (IBM ) | |
| DECAT | Built-in function | |
| DEFAULT | DFT | Statement |
| DELAY | Statement (IBM ) | |
| DESCRIPTOR | DESC | Attribute, Built-in function |
| DESCRIPTORS | Option of DEFAULT statement | |
| DISPLAY | Statement, Built-in subroutine | |
| DOT | Built-in function | |
| EVENT | Attribute, Option of several I/O statements (IBM ) | |
| EXCLUSIVE | EXCL | Attribute (IBM ) |
| EXIT | Statement | |
| EXTEND | Built-in subroutine | |
| F | Format item | |
| FETCH | Statement (IBM , accepted but ignored in Endless PL/I for POSIX Systems) | |
| FORMAT | Attribute | |
| FREE | Built-in subroutine | |
| G | Format item | |
| GENERIC | Attribute | |
| GRAPHIC | Data type(IBM ), Build-in function (IBM ) | |
| H | Format item | |
| HALT | Statement | |
| IMAG | Built-in function(IBM ), pseudovariable (IBM ) | |
| IRREDUCIBLE | IRRED | Attribute |
| LIST | Option of OPEN statement | |
| LOCAL | Attribute | |
| LTRIM | Preprocessor built-in function, Built-in function | |
| MPSTR | Built-in function(IBM ) | |
| NEXT_VOLUME | Built-in subroutine | |
| NOCHECK | Statement | |
| NOLOCK | Option of READ statement (IBM ) | |
| NONE | Option of DEFAULT statement | |
| OFFSET | Built-in function | |
| ONARGSLIST | Built-in function | |
| ONCOUNT | Built-in function (IBM ) | |
| ONFIELD | Built-in function | |
| ORDER | Option of BEGIN and PROCEDURE statements | |
| OTHERWISE | OTHER | Keyword of the SELECT statement |
| PENDING | Condition | |
| PLICANC | Built-in subroutine (IBM ) | |
| PLICKPT | Built-in subroutine (IBM ) | |
| PLIDTLI | Built-in subroutine (IBM ) | |
| PLIDUMP | Built-in subroutine (IBM ) | |
| PLIREST | Built-in subroutine (IBM ) | |
| PLITEST | Built-in subroutine (IBM ) | |
| POINTERADD | Built-in subroutine (IBM ) | |
| POINTERVALUE | Built-in subroutine (IBM ) | |
| POLY | Built-in function | |
| PRESENT | Built-in function | |
| PRIORITY | Option of CALL statement, Built-in function, Pseudovariable | |
| RANGE | Option of DEFAULT statement | |
| REAL | Attribute, Built-in function, Pseudovariable | |
| REDUCIBLE | RED | Attribute |
| REENTRANT | Option of OPTIONS option | |
| REFERENCE | Built-in function | |
| RELEASE | Statement, Built-in Subroutine | |
| REORDER | Option of BEGIN and PROCEDURE statements | |
| REPLY | Option of DISPLAY statement | |
| RTRIM | Preprocessor built-in function, Built-in function | |
| SAMEKEY | Built-in function (IBM ) | |
| SNAP | ON statement option | |
| SPACEBLOCK | Built-in subroutine | |
| STATUS | Built-in function (IBM ), Pseudovariable (IBM ) | |
| SUB | Dummy variable of DEFINED attribute | |
| SYSTEM | Option of DECLARE statement | |
| TAB | Option of OPEN statement | |
| TASK | Attribute, Option of OPTIONS option, Option of CALL statement | |
| TRANSIENT | Attribute, option of OPEN statement(IBM) | |
| UNDERFLOW | UFL | Condition name, PROCEDURE OPTIONS option |
| VALID | Built-in function | |
| VALUE | Built-in function | |
| WAIT | Statement |
| Type of Keyword | Keyword | Action |
|---|---|---|
| File Attributes | BACKWARDS | Error |
| EXCLUSIVE | Error | |
| TRANSIENT | Error | |
| Environment Options | ADDBUFF | Accepted but ignored |
| ASCII | Error | |
| BUFOFF | Error | |
| BUFFERS | Accepted but ignored | |
| COBOL | Error | |
| CTLASA | CTL360 | Error | |
| D, DB record formats | Error | |
| F, FB, FS, FBS record formats | All map to fixed length, no support for blocked | |
| GENKEY | Error | |
| GRAPHIC | Error | |
| KEYLENGTH | Error | |
| KEYLOCK | Error | |
| INDEXAREA | Accepted but ignored | |
| INDEXED | Error | |
| LEAVE | Error | |
| NCP | Error | |
| NOWRITE | Accepted but ignored | |
| REGIONAL | Error | |
| REREAD | Error | |
| TOTAL | Accepted but ignored | |
| TP | Error | |
| TRKOFL | Accepted but ignored | |
| V, VB, VS, VBS record formats | All map to varying length, no support for blocked | |
| VSAM and all VSAM-only options (BKWD, BUFND, BUFNI, BUFSP, PASSWORD, REUSE, SIS, SKIP) | Error[a] | |
| Statement Options | EVENT (option to READ, WRITE, REWRITE, and DELETE) | Error |
| Statements | UNLOCK | Accepted but ignored |
| Stream I/O Options | ALL | Accepted but ignored |
| COPY | Error | |
| DATA | Error | |
| FLOW | Accepted but ignored | |
| SNAP | Accepted but ignored | |
[a] Your program may work on POSIX systems on supported non-VSAM media, without the VSAM options, as VSAM is a function of the media not the code. | ||
D.2. Differences Between Endless PL/I for POSIX Systems Digital's PL/I and Other Digital-Compatible Versions of PL/I
The following sections describe differences between this version of PL/I and the other Digital versions of PL/I.
Note
The ibm dialect of Endless PL/I for POSIX Systems supports many features not found in the various Digital versions of PL/I. These are not listed in this section. For closest compatibility with Digital versions of PL/I, use the dec dialect of Endless PL/I for POSIX Systems. See Appendix B, Dialect Differences for more information on the differences between supported dialects.
D.3. Statements
Endless PL/I for POSIX Systems accepts but ignores the unsupported *PROCESS statement, for compatibility with other versions of PL/I.
D.4. Data Type Attributes
Endless PL/I for POSIX Systems does not support the DESCRIPTOR data type attribute, which is in Digital's PL/I implementations.
See Chapter 2, Declarations for more information on supported data type attributes.
D.5. Default Values for Data Type Attributes
Endless PL/I for POSIX Systems supplies different default values for data type attributes depending on the variant
specified as an option to the pl1 command. See Chapter 3, Data Types for more information on the
Endless PL/I for POSIX Systems defaults. Table 2.2, “Default Values for BINARY Attribute” shows the default values
for data type attributes supplied by Digital's PL/I.
| Attributes Specified | Defaults in Digital' PL/I |
|---|---|
| BINARY | FIXED (31) |
| BINARY FIXED | (31) |
| BINARY FLOAT | (24) |
| DECIMAL | FIXED (10,0) |
| DECIMAL FIXED | (10,0) |
| DECIMAL FIXED (n) | (n,0) |
| DECIMAL FLOAT | (7) |
D.6. Floating Point Data Types
OpenVMS versions of PL/I support F, D, G, and H floating point formats, in addition to the IEEE S and T floating point formats. Endless PL/I for POSIX Systems supports the standard IEEE formats only.
D.7. Scale Factors
Endless PL/I for POSIX Systems supports scale factors for fixed-point decimal data. Some other implementations support scale factors for fixed-point binary data. This is unsupported in Endless PL/I for POSIX Systems.
D.8. Procedures and Entries Specified with the Returns Option
If the PROCEDURE statement contains a RETURNS option, every ENTRY statement in the procedure must contain a matching RETURNS options. Likewise, if any entry point in the procedure returns a value, the PROCEDURE statement and all other entry points in the procedure must contain matching RETURNS options. This restriction did not apply in Endless PL/I for OpenVMS.
D.9. Passing Arguments to Non-PL/I Procedures
In Endless PL/I for OpenVMS, you can pass arguments to non-PL/I procedures by descriptor. You could use the DESCRIPTOR built-in function to force passing arguments by descriptor. PL/I would also do this automatically under certain conditions, as described in the reference manual for the OpenVMS PL/I language.
Endless PL/I for POSIX Systems does not support passing arguments by descriptor.
D.10. GOTO Statement
Endless PL/I for OpenVMS supports the OTHERWISE option on the GOTO statement. This option is not supported by Endless PL/I for POSIX Systems.
D.11. Condition Handling
Endless PL/I for POSIX Systems does not support the ON statement SNAP option.
Endless PL/I for POSIX Systems, IBM variant, supports condition prefixes, which are not supported by the OpenVMS versions of PL/I.
Endless PL/I for POSIX Systems, IBM variant, supports the following conditions, which are not in the OpenVMS versions:
ATTENTION, CHECK, NAME, RECORD, SIZE, STRINGSIZE, TRANSMIT
The UNDERFLOW condition is supported in the Open VMS versions of PL/I but not in Endless PL/I for POSIX Systems.
D.12. File Handling
Endless PL/I for POSIX Systems does not support some file organizations or combinations of file organizations and access methods due to limitations of the file system. These are:
Stream access of relative file with fixed or variable length records
Sequential access of stream file with variable length records (supported by VAX PL/I)
Direct access of stream file with variable length records (supported by VAX PL/I)
D.13. Preprocessor
Since POSIX systems do not support the VAX Common Data Dictionary (CDD), Endless PL/I for POSIX Systems does not support CDD features. These include the %DICTIONARY and %[NO]LIST_DICTIONARY statements.
Endless PL/I for POSIX Systems allows but ignores the following other list statements: [NO]LIST, [NO]LISTALL, [NO]LIST_INCLUDE, [NO]LIST_MACHINE, and [NO]LIST_SOURCE. These are functional in PL/I for Open VMS.
The VMS-based preprocessor built-in functions %LTRIM and %RTRIM are unsupported on Endless PL/I for POSIX Systems.
Endless PL/I for POSIX Systems requires each preprocessor statement to be on a new line, with nothing but white space preceding the % sign. OpenVMS and DEC PL/I do not have this requirement.
D.14. Built-in Functions and Subroutines
Due to differences in the operating systems, the built-in functions and subroutines supported by Endless PL/I for POSIX Systems differ from those supported by other versions of PL/I. The following lists show differences between OpenVMS and ULTRIX versions of PL/I and Endless PL/I for POSIX Systems.
The following built-in functions are supported in the OpenVMS versions of PL/I but not in Endless PL/I for POSIX Systems:
String-handling: LTRIM, RTRIM
Storage: ADDREL, OFFSET
Argument-passing: ACTUALCOUNT, DESCRIPTOR, PRESENT, REFERENCE, VALID, VALUE
The following built-in subroutines are available in ULTRIX and OpenVMS PL/I but not Endless PL/I for POSIX Systems:
File-control: DISPLAY, EXTEND, NEXT_VOLUME, SPACE_BLOCK
Record-locking: FREE, RELEASE
Condition-handling: ONARGLIST