DocumentationEndless PL/I for POSIX SystemsReference Manual  ·  ESS-PFURM-001

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.

Table D.1. PL/I Keywords Not Supported
KeywordAbbreviationUse
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
COMPLETIONCPLNBuilt-in function(IBM ), Pseudovariable (IBM )
COMPLEXCPLXAttribute, Built-in function (IBM ), Pseudovariable (IBM )
CONJG

Built-in function (IBM )
CONNECTEDCONNAttribute
CONSTANT

Attribute
CONVERSIONCONVCondition 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
DEFAULTDFTStatement
DELAY

Statement (IBM )
DESCRIPTORDESCAttribute, 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 )
EXCLUSIVEEXCLAttribute (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 )
IRREDUCIBLEIRREDAttribute
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
OTHERWISEOTHERKeyword 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
REDUCIBLEREDAttribute
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)
UNDERFLOWUFLCondition name, PROCEDURE OPTIONS option
VALID

Built-in function
VALUE

Built-in function
WAIT

Statement

Table D.2. Summary of Unsupported IBM I/O Features
Type of KeywordKeywordAction
File AttributesBACKWARDSError

EXCLUSIVEError

TRANSIENTError
Environment OptionsADDBUFFAccepted but ignored

ASCIIError

BUFOFFError

BUFFERSAccepted but ignored

COBOLError

CTLASA | CTL360Error

D, DB record formatsError

F, FB, FS, FBS record formatsAll map to fixed length, no support for blocked

GENKEYError

GRAPHICError

KEYLENGTHError

KEYLOCKError

INDEXAREAAccepted but ignored

INDEXEDError

LEAVEError

NCPError

NOWRITEAccepted but ignored

REGIONALError

REREADError

TOTALAccepted but ignored

TPError

TRKOFLAccepted but ignored

V, VB, VS, VBS record formatsAll 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 OptionsEVENT (option to READ, WRITE, REWRITE, and DELETE)Error
StatementsUNLOCKAccepted but ignored
Stream I/O OptionsALLAccepted but ignored

COPYError

DATAError

FLOWAccepted but ignored

SNAPAccepted 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.

Table D.3. Digital Default Values for Data Type Attribute
Attributes SpecifiedDefaults in Digital' PL/I
BINARYFIXED (31)
BINARY FIXED(31)
BINARY FLOAT(24)
DECIMALFIXED (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