Sample ILC applications
Figure 1. Fortran routine
that calls a PL/I routine
@PROCESS LIST
PROGRAM FOR2PLI
* Module/File Name: AFHPLFOR */
****************************************************
* Illustration of Interlanguage Communication *
* between Fortran and PL/I. *
****************************************************
*
INTEGER*2 INT_2 / 2 /
INTEGER*4 INT_4 / 4 /
REAL*8 PI / 3.14159265358979312D0 /
CHARACTER*23 CHAR_23 / ' ' /
PRINT *, 'FOR2PLI STARTED'
CALL PLIFFOR (INT_2, INT_4, PI, CHAR_23)
IF (CHAR_23 /= 'PASSED CHARACTER STRING') THEN
PRINT *, 'CHAR_23 NOT SET PROPERLY'
ENDIF
PRINT *, 'FOR2PLI ENDED'
END
Figure 2. PL/I routine
called by Fortran
PLIFFOR: PROCEDURE (INT_2, INT_4, REAL_8, CHAR_STRING)
OPTIONS(FORTRAN);
/* Module/File Name: IBMPLFOR */
DCL ABS BUILTIN;
DCL INT_2 FIXED BIN(15,0);
DCL INT_4 FIXED BIN(31,0);
DCL REAL_8 FLOAT BIN(53);
DCL CHAR_STRING CHAR(23);
DCL PI FLOAT BIN(53)
INIT (3.141592653589793E0);
PUT SKIP LIST ('PLIFFOR STARTED');
IF (INT_2 ¬= 2) THEN
PUT SKIP LIST ('INT_2 NOT 2');
IF (INT_4 ¬= 4) THEN
PUT SKIP LIST ('INT_4 NOT 4');
IF (ABS(REAL_8 - PI) > 1.0E13) THEN
PUT SKIP LIST ('REAL_8 NOT PI');
CHAR_STRING = 'PASSED CHARACTER STRING';
PUT SKIP LIST ('PLIFFOR ENDED');
END PLIFFOR;