Previous | Contents | Index |
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 Kednos PL/I. It also outlines the differences between Kednos PL/I for OpenVMS VAX and Kednos PL/I for OpenVMS Alpha.
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
Table D-1 lists keywords used in other implementations of PL/I but not in Kednos PL/I. The table does not include ENVIRONMENT keywords or implementation-specific language extensions.
Keyword | Abbreviation | Use |
---|---|---|
AFTER | Built-in function | |
ALL | Built-in function | |
ANY | Built-in function | |
ATTENTION | ATTN | Condition |
BACKWARDS | Attribute, Option of OPEN statement | |
BEFORE | Built-in function | |
BUFFERED | BUF | Attribute, Option of OPEN statement |
BY NAME | Option of assignment statement | |
C | Format item | |
CALL | Option of INITIAL attribute | |
CASE | Option of DO statement | |
CHECK | Statement, Condition, Condition prefix | |
COMPLETION | CPLN | Built-in function, Pseudovariable |
COMPLEX | CPLX | Attribute, Built-in function, Pseudovariable |
CONJG | Built-in function | |
CONNECTED | CONN | Attribute |
CONSTANT | Attribute | |
CONVERSION | CONV | Condition prefix |
COPY | Option of GET statement | |
COUNT | Built-in function | |
CURRENTSTORAGE | CSTG | Built-in function |
DATA | Stream I/O transmission mode | |
DATAFIELD | Built-in function | |
DECAT | Built-in function | |
DEFAULT | DFT | Statement |
DELAY | Statement | |
DESCRIPTORS | Option of DEFAULT statement | |
DISPLAY | Statement | |
DOT | Built-in function | |
ERF | Built-in function | |
ERFC | Built-in function | |
EVENT | Attribute, Option of several statements | |
EXCLUSIVE | EXCL | Attribute |
EXIT | Statement | |
FETCH | Statement | |
FORMAT | Attribute | |
GENERIC | Attribute | |
HALT | Statement | |
IGNORE | Option of READ statement | |
IMAG | Built-in function, pseudovariable | |
IRREDUCIBLE | IRRED | Attribute |
LIST | Option of OPEN statement | |
LOCAL | Attribute | |
LOCATE | Statement | |
NAME | Condition | |
NOCHECK | Statement, Condition prefix | |
NOCONVERSION | NOCONV | Condition prefix |
NOFIXEDOVERFLOW | NOFOFL | Condition prefix |
NOLOCK | Option of READ statement | |
NONE | Option of DEFAULT statement | |
NOOVERFLOW | Condition prefix | |
NOSIZE | Condition prefix | |
NOSTRINGRANGE | NOSTRG | Condition prefix |
NOSTRINGSIZE | NOSTRZ | Condition prefix |
NOSUBSCRIPTRANGE | NOSUBRG | Condition prefix |
NOZERODIVIDE | NOZDIV | Condition prefix |
ONCOUNT | Built-in function | |
ONFIELD | Built-in function | |
ONLOC | Built-in function | |
ORDER | Option of BEGIN and PROCEDURE statements | |
OVERFLOW | OFL | Condition prefix |
PENDING | Condition | |
POLY | Built-in function | |
PRIORITY | Option of CALL statement, Built-in function, Pseudovariable | |
RANGE | Option of DEFAULT statement | |
REAL | Attribute, Built-in function, Pseudovariable | |
RECORD | Condition | |
REDUCIBLE | RED | Attribute |
REENTRANT | Option of OPTIONS option | |
RELEASE | Statement | |
REORDER | Option of BEGIN and PROCEDURE statements | |
REPEAT | Built-in function | |
REPLY | Option of DISPLAY statement | |
SAMEKEY | Built-in function | |
SIZE | Condition, Condition prefix | |
SNAP | Option of PUT statement | |
STATUS | Built-in function, Pseudovariable | |
STORAGE | STG | Built-in function |
STRINGRANGE | STRG | Condition prefix |
STRINGSIZE | STRZ | Condition, Condition prefix |
SUB | Dummy variable of DEFINED attribute | |
SUBSCRIPTRANGE | SUBRG | Condition prefix |
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 | |
TRANSMIT | Condition | |
UNBUFFERED | UNBUF | Attribute, Option of OPEN statement |
UNLOCK | Statement | |
WAIT | Statement |
This section lists the differences between Kednos PL/I for OpenVMS VAX, Kednos PL/I for OpenVMS Alpha, and other PL/I compilers that require you to modify your source files to avoid compilation errors. In some cases, differences require reprogramming.
%PLIG-F-TEXT, Compiler abort - virtual memory limits exceeded. %SYSTEM-F-ABORT, abort %LIB-F-INSVIRMEM, insufficient virtual memory |
program: proc options(main); program: proc options(main); dcl (ent2) entry variable; dcl fnc entry returns(entry) variable; dcl evar char (25) var init(' '); fnc=entry6; ent2=fnc(); call destroy_stack(); call ent2; put skip list('Evar is =>',evar); entry6: proc returns (entry); return(entry6a); entry6a: proc; evar=evar||'entry6a*'; return; end entry6a; end entry6; destroy_stack: proc; /* Declare enough space to destroy previous * stack values before this call. */ dcl temp_space char(1000); temp_space = 'hello'; end; end program; |
Correct Declaration of an External Variable Initialization
/* A CORRECT declaration of an external * variable initialization. */ program: proc options(main); dcl test fixed external initial(5); p:proc; dcl test external initial(5); /* The value of this variable should be 5. */ put skip list ('The value of test is =>',test); end; end; |
Incorrect Declaration of an External Variable Initialization
/* INCORRECT declarations of external * variable initialization. */ program: proc options(main); /* The initialization MUST be the same * for all declarations of the external * variable. */ dcl test fixed external initial(5); dcl test1 fixed external initial(5); dcl test2 fixed external; p:proc; /* The initialization MUST be the same * for all declarations of the external * variable. */ dcl test external initial(6); dcl test1 external; dcl test2 external initial(6); /* The value of these variables is unpredictable. */ put skip list ('The value of test is =>',test); put skip list ('The value of test1 is =>',test1); put skip list ('The value of test2 is =>',test2); end; end; |
As no guarantee exists as to which occurrence of the external variable the Kednos PL/I for OpenVMS Alpha compiler processes first, each occurrence of the variable must contain the same initial value. |
X67: PROC options(main); A: ; /* Null statement. */ B: ; /* Null statement. */ C: ; /* Null statement. */ IF A=C THEN PUT LIST('NULL STATEMENT LABELS COMPARE EQUAL FOR Kednos PL/I for OpenVMS Alpha'); ELSE PUT LIST('NULL STATEMENT LABELS COMPARE NOT EQUAL FOR Kednos PL/I for OpenVMS VAX'); D: IF C=D THEN PUT LIST('ERROR THESE LABELS SHOULD NEVER COMPARE EQUAL'); END; |
program: procedure options(main); dcl i fixed binary(31,0); begin; i = 2; goto part(i) otherwise; put skip list('At continue !!'); end; part(1): end program; |
nested_proc : proc returns (fixed); begin; begin; begin; begin; begin; return (5); end; put skip list ('shouldnt be here 1'); end; put skip list ('shouldnt be here 2'); end; put skip list ('shouldnt be here 3'); end; put skip list ('shouldnt be here 4'); end; put skip list ('shouldnt be here 5'); end; nested_proc2 : proc returns (float); begin; begin; begin; begin; begin; return (5.1); end; put skip list ('shouldnt be here 1'); end; put skip list ('shouldnt be here 2'); end; put skip list ('shouldnt be here 3'); end; put skip list ('shouldnt be here 4'); end; put skip list ('shouldnt be here 5'); end; program: proc options(main); dcl result1 fixed; dcl result2 float; result1 = nested_proc(); result2 = nested_proc2(); put skip list (result1); put skip list (result2); end; |
Previous | Next | Contents | Index |