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