z/OS Language Environment Writing Interlanguage Communication Applications
Previous topic |
Next topic
|
Contents
|
Contact z/OS
|
Library
|
PDF
Contents (exploded view)
z/OS Language Environment Writing Interlanguage Communication Applications
SA38-0684-00
Abstract for Language Environment Writing Interlanguage Communication Applications
z/OS Version 2 Release 1 summary of changes
Getting started with Language Environment ILC
The benefits of ILC under Language Environment
Writing ILC applications
Communicating with XPLINK applications
XPLINK compatibility support
ILC calls between XPLINK and non-XPLINK routines
ILC between XPLINK and non-XPLINK C
ILC between XPLINK and non-XPLINK C++
ILC between XPLINK and COBOL
ILC between XPLINK and PL/I
ILC between XPLINK and Assembler
ILC between XPLINK and Fortran
PIPI XPLINK considerations
Communicating between C and C++
General facts about C to C++ ILC
Preparing for ILC
Language Environment ILC support
Determining the main routine
Declaring C to C++ ILC
Declaration for C calling C++
Declaration for C++ calling C
Building a reentrant C to C++ application
Calling between C and C++
Passing data between C and C++
Passing data by value between C and C++
Passing data by reference between C and C++
Passing C++ objects
Supported data types passed between C and C++
Using aggregates
Data equivalents
Equivalent data types for C to C++
Signed one-byte character data
32-bit unsigned binary integer
Structures and typedefs
Function pointers
Equivalent data types for C++ to C
16-bit signed binary integer
Short floating-point number
Pointer to character
Function pointers
Name scope and name space
Enhancing performance with packed structures and unions
Example of packed structures
Calling packed structures and unions
Using storage functions in C to C++ ILC
Directing output in ILC applications
C to C++ condition handling
Sample C to C++ applications
Communicating between C and COBOL
General facts about C to COBOL ILC
Preparing for ILC
Language Environment ILC support
Migrating ILC applications
Relinking
Recompiling
Compiling and linking considerations
Compiling
Linking
Determining the main routine
Declaring C to COBOL ILC
Declaring C to COBOL ILC without #pragma linkage
Declaration for C calling COBOL
Declaration for COBOL calling C
Declaring C to COBOL ILC with #pragma linkage
Declaration for C calling COBOL
Declaration for COBOL calling C
Calling between C and COBOL
Types of calls permitted
Performance considerations
Dynamic call/fetch considerations - non-DLL modules
C fetching C with COBOL statically linked
C fetching COBOL
COBOL dynamically calling COBOL with C statically linked
COBOL dynamically calling non-Language Environment conforming assembler with C statically linked
Cancel considerations
COBOL dynamically calling C
Dynamic call/fetch considerations - DLL modules
Passing data between C and COBOL
Passing data between C and COBOL without #pragma
Passing data by value between C and COBOL
Passing by value (direct)
Passing by value (indirect)
Passing data by reference (indirect) between C and COBOL
Supported data types passed by value (direct) between C and COBOL
Supported data types passed between C and COBOL by reference (indirect) and from COBOL to C either by value (indirect) or by reference (indirect)
Handling function returns between C and COBOL
Declaration for C calling COBOL
Declaration for COBOL calling C
Passing data between C and COBOL with #pragma
Passing data by value (indirect) between C and COBOL
Supported data types passed by value (indirect) between C and COBOL
Passing data by reference (indirect) between C and COBOL
Supported data types passed by reference (indirect) between C and COBOL
Passing strings between C and COBOL
Using aggregates
Data equivalents
Equivalent data types for C to COBOL
One-byte character data without #pragma
One-byte character data with #pragma
16-bit signed binary Integer without #pragma
16-bit signed binary integer with #pragma
32-bit signed binary integer without #pragma
32-bit signed binary integer with #pragma
Long floating-point number without #pragma
Long floating-point number with #pragma
Structure with #pragma
Array with #pragma
Fixed-length decimal data with #pragma
Equivalent data types for COBOL to C
32-bit signed binary integer without #pragma
32-bit signed binary integer with #pragma
Long floating-point number without #pragma
Long floating-point number with #pragma
Structure without #pragma
Structure with #pragma
Fixed-length decimal data without #pragma
Fixed-length decimal data with #pragma
Name scope of external data
DLL considerations
Name scope of external data in a C application
Name scope of external data in a COBOL run unit
Name space of external data
Directing output in ILC applications
Interspersing output when C is the main routine
Interspersing output when COBOL is the main routine
C POSIX multithreading
C to COBOL condition handling
Enclave-terminating language constructs
Exception occurs in C
Exception occurs in COBOL
CEEMRCR and COBOL
Sample ILC applications
Communicating between C++ and COBOL
General facts about C++ to COBOL ILC
Preparing for ILC
Language Environment ILC support
Compiling considerations
Determining the main routine
Declaring C++ to COBOL ILC
Declarations for extern "C" linkage
Declaration for C++ calling COBOL (extern "C")
Declaration for COBOL calling C++ (extern "C")
Declarations for extern "COBOL" linkage
Declaration for C++ calling COBOL (extern "COBOL")
Declaration for COBOL calling C++ (extern "COBOL")
Building a reentrant C++ to COBOL application
Calling between C++ and COBOL
Passing data between C++ and COBOL
Passing data between C++ and COBOL with extern "C"
Passing data by value between C++ and COBOL
Passing data by reference (indirect) between C++ and COBOL
Handling function returns between C++ and COBOL
Declaration for COBOL calling C++
Declaration for C++ calling COBOL
Supported data types passed by value (direct) between C++ and COBOL
Supported data types passed by value (indirect) or by reference (indirect) between C++ and COBOL
Passing data between C++ and COBOL with extern "COBOL"
Passing data by value (indirect) between C++ and COBOL
Supported data types passed by value (indirect) between C++ and COBOL
Passing data by reference (indirect) between C++ and COBOL
Supported data types passed by reference (indirect) between C++and COBOL
Passing strings between C++ and COBOL
Using aggregates
Data equivalents
Equivalent data types for C++ to COBOL
Signed one-byte character data with extern "C"
Signed one-byte character data with extern "COBOL"
16-bit signed binary integer with extern "C"
16-bit signed binary integer with extern "COBOL"
32-bit signed binary integer with extern "C"
32-bit signed binary integer with extern "COBOL"
Long floating-point number with extern "C"
Long floating-point with extern "COBOL"
Structure with extern "COBOL"
Array with extern "COBOL"
Equivalent data types for COBOL to C++
32-bit signed binary integer with extern "C"
32-bit signed binary integer with extern "COBOL"
Long floating-point number with extern "C"
Long floating-point number with extern "COBOL"
Structure with extern "C"
Structure with extern "COBOL"
Name scope of external data
DLL considerations
Name space of external data
Directing output in ILC applications
Interspersing output when C++ Is the main routine
Interspersing output when COBOL Is the main program
C++ to COBOL condition handling
Enclave-terminating language constructs
C language constructs available under C++
COBOL language constructs
Exception occurs in C++
Exception occurs in COBOL
CEEMRCR and COBOL
Sample ILC applications
Communicating between C and Fortran
General facts about C to Fortran ILC
Preparing for ILC
Language Environment ILC support
Migrating ILC applications
Determining the main routine
Declaring C to Fortran ILC
Example of declaration for C calling Fortran
Example of declaration for Fortran calling C
Calling between C and Fortran
Types of calls permitted
Dynamic call/fetch considerations
C fetching Fortran
Restriction
Fortran dynamically calling C
Invoking functions with returned values
Calling Fortran library routines
Passing data between C and Fortran
Supported data types between C and Fortran
Supported data types for passing by value
Supported data types for passing function return values
Passing an alternate return code from Fortran to C
Passing character data
Mapping arrays between C and Fortran
Data equivalents
Equivalent data types for C to Fortran
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Signed one-byte character data
Unsigned one-byte character data
Fixed-length character data
Array
Address of an integer
Address of an array
Equivalent data types for Fortran to C
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Signed one-byte character data
Unsigned one-byte character data
Fixed-length character data
Array
Address of an integer
Address of an array
External data
Directing output in ILC applications
C to Fortran condition handling
Enclave-terminating language constructs
C
Fortran
Exception occurs in C
Exception occurs in Fortran
Sample ILC applications
Communicating between C++ and Fortran
General facts about C++ to Fortran ILC
Preparing for ILC
Language Environment ILC support
Determining the main routine
Declaring C++ to Fortran ILC
Example of declaration for C++ calling Fortran
Example of declaration for Fortran calling C++
Calling between C++ and Fortran
Types of calls permitted
Dynamic call/fetch considerations
Fortran dynamically calling C++
Invoking functions with returned values
Calling Fortran library routines
Passing data between C++ and Fortran
Supported data types between C++ and Fortran
Supported data types for passing by value
Supported data types for passing function return values
Passing an alternate return code from Fortran to C++
Passing character data
Mapping arrays between C++ and Fortran
Data equivalents
Equivalent data types for C++ to Fortran
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Signed one-byte character data
Unsigned one-byte character data
Fixed-length character data
Array
Address of an integer
Address of an array
Equivalent data types for Fortran to C++
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Signed one-byte character data
Unsigned one-byte character data
Fixed-length character data
Array
Address of an integer
Address of an array
External data
Directing output in ILC applications
C++ to Fortran condition handling
Enclave-terminating language constructs
C language constructs available under C++
Fortran
Exception occurs in C++
Exception occurs in Fortran
Sample ILC applications
Communicating between C and PL/I
General facts about C to PL/I ILC
Preparing for C to PL/I ILC
Language Environment ILC support
Migrating C to PL/I ILC applications
Determining the main routine
Declaring C to PL/I ILC
Declaration for C calling PL/I
Declaration for PL/I calling C
Building a reentrant C to PL/I application
Calling between C and PL/I
Types of calls permitted
Dynamic call/fetch considerations
C fetching PL/I
PL/I fetching C
Passing data between C and PL/I
Passing pointers from C to PL/I
Passing pointers from PL/I to C
Receiving value parameters in C
Receiving reference parameters in C
Data types passed using C pointers (by reference)
Data types passed by value
Passing strings between C and PL/I
Using aggregates
Data equivalents
Equivalent data types for C to PL/I
16-bit signed binary integer
32-bit signed binary integer
Long floating-point number
Extended floating-point number
Pointer to an Integer
Pointer to an array
Pointer to a structure
Fixed-length decimal data
Equivalent data types for PL/I to C
32-bit signed binary integer
Long floating-point number
Extended floating-point number
Pointer to an integer
Pointer to an array
Pointer to a structure
Fixed-length decimal data
Name scope of external data
DLL considerations
Name space of external data
Using storage functions in C to PL/I ILC
Directing output in ILC applications
Using SYSPRINT as the default stream output file
Directing user-specified output to destination of MSGFILE
C POSIX multithreading
C to PL/I condition handling
Enclave-terminating language constructs
C
PL/I
Exception occurs in C
Exception occurs in PL/I
Fixed-point overflow
Sample C to PL/I ILC applications
Communicating between C++ and PL/I
General facts about C++ to PL/I ILC
Preparing for ILC
Language Environment ILC support
Determining the main routine
Declaring C++ to PL/I ILC
Declaration for C++ calling PL/I
Declaration for PL/I calling C++
Building a reentrant C++ to PL/I application
Calling between C++ and PL/I
Passing data between C++ and PL/I
Passing pointers from C++ to PL/I
Passing pointers from PL/I to C++
Receiving value parameters in C++
Receiving reference parameters in C++
Supported data types passed using C++ pointers (by reference)
Supported data types passed by value
Passing strings between C++ and PL/I
Using aggregates
Data equivalents
Equivalent data types for C++ to PL/I
16-bit signed binary integer
32-bit signed binary integer
Long floating-point number
Extended floating-point number
Pointer to an integer
Pointer to an array
Pointer to a structure
Equivalent data types for PL/I to C++
32-bit signed binary integer
Long floating-point number
Extended floating-point number
Pointer to an integer
Pointer to an array
Pointer to a structure
Name scope of external data
DLL considerations
Name space of external data
Using storage functions in C++ to PL/I ILC
Directing output in ILC applications
Using SYSPRINT as the default stream output file
Directing user-specified output to destination of MSGFILE
C++ to PL/I condition handling
Enclave-terminating language constructs
C language constructs available under C++
PL/I
Exception occurs in C++
Exception occurs in PL/I
Fixed-point overflow
Sample C++ to PL/I ILC applications
Communicating between COBOL and Fortran
General facts about COBOL to Fortran ILC
Preparing for ILC
Language Environment ILC support
Migrating ILC applications
Determining the main routine
Declaring COBOL to Fortran ILC
Calling between COBOL and Fortran
Types of calls permitted
Dynamic call/fetch considerations
COBOL dynamically calling Fortran
Restriction
Fortran dynamically calling COBOL
Calling functions
Passing data between COBOL and Fortran
Passing character data
Mapping arrays
Data equivalents
Equivalent data types for COBOL to Fortran
16-bit signed binary integer
32-bit signed binary integer
64-bit signed binary integer
Short floating-point number
Long floating-point number
Fixed-length character data
Array
Address of an array
Equivalent data types for Fortran to COBOL
16-bit signed binary integer
32-bit signed binary integer
64-bit signed binary integer
Short floating-point number
Long floating-point number
Fixed-length character data
Array
Address of an array
External data
Directing output in ILC applications
COBOL to Fortran condition handling
Enclave-terminating language constructs
COBOL
Fortran
Exception occurs in COBOL
Exception occurs in Fortran
GOTO out-of-block and move resume cursor
Sample ILC applications
Communicating between COBOL and PL/I
General facts about COBOL to PL/I ILC
Preparing for ILC
Language Environment ILC support
Migrating ILC applications
Determining the main routine
Multitasking with PL/I and COBOL
Declaring COBOL to PL/I ILC
Building a reentrant COBOL to PL/I application
PL/I and COBOL reentrancy
PL/I reentrancy
Reentrancy for PL/I multitasking applications
Calling between COBOL and PL/I
Types of calls permitted
Dynamic call/fetch considerations
COBOL dynamically calling PL/I
PL/I fetching COBOL
Passing data between COBOL and PL/I
Supported data types between COBOL and PL/I
Using aggregates
COBOL and PL/I alignment requirements
COBOL alignment
PL/I alignment
Examples of alignment
Mapping aggregates
Data equivalents
Equivalent data types for COBOL to PL/I
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Equivalent data types for PL/I to COBOL
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Fixed-length character data
Data type equivalents when TRUNC(BIN) is specified
Name scope of external data
Name space of external data
External data in multitasking applications
Sharing data
Sharing files between COBOL and PL/I
File sharing under PL/I multitasking
Directing output in ILC applications
COBOL to PL/I condition handling
Multitasking ILC consideration
Enclave-terminating language constructs
COBOL
PL/I
Exception occurs in COBOL
Exception occurs in PL/I
GOTO out-of-block and move resume cursor
Sample PL/I to COBOL applications
Communicating between Fortran and PL/I
General facts about Fortran to PL/I ILC
Preparing for ILC
Language Environment ILC support
Migrating ILC applications
Determining the main routine
Declaring Fortran to PL/I ILC
Invoking functions
Building a reentrant Fortran to PL/I application
Calling between Fortran and PL/I
Types of calls permitted
Dynamic call/fetch considerations
Fortran Dynamically calling PL/I
PL/I Dynamically calling Fortran
Restriction
Passing data between Fortran and PL/I
Supported data types between Fortran and PL/I
Passing character data
Using aggregates
Data equivalents
Equivalent data types for Fortran to PL/I
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Complex: two adjacent short floating-point numbers
Complex: two adjacent long floating-point numbers
Complex: two adjacent extended floating-point numbers
Fixed-length character data
Array
Address of an array
Equivalent data types for PL/I to Fortran
16-bit signed binary integer
32-bit signed binary integer
Short floating-point number
Long floating-point number
Extended floating-point number
Complex: two adjacent short floating-point numbers
Complex: two adjacent long floating-point numbers
Complex: two adjacent extended floating-point numbers
Fixed-length character data
Array
Address of an array
External data
Directing output from ILC applications
Running Fortran routines in the PL/I multitasking facility
Reentrancy in a multitasking application
Common blocks in a PL/I multitasking application
Data-in-virtual data objects in PL/I multitasking applications
Files and print units in a multitasking application
Fortran to PL/I condition handling
PL/I Multitasking ILC considerations
Enclave-terminating language constructs
Fortran
PL/I
Exception occurs in Fortran
Exception occurs in PL/I
Sample ILC applications
Communicating between multiple HLLs
Supported data types across HLLs
External data
Thread management
Condition handling
Enclave-terminating constructs
C, COBOL, and PL/I scenario: exception occurs in C
Sample N-Way ILC applications
Communicating between assembler and HLLs
Calling between assembler and an HLL
Using the CEEFETCH macro
Using the CEERELES macro
Using the CEELOAD macro
Passing arguments between HLL and assembler routines
POSIX
C and C++
COBOL
PL/I
Fortran
Canceling or releasing assembler
Calling COBOL from assembler
AMODE considerations
Canceling COBOL programs
Non-Language Environment-conforming assembler invoking an HLL main routine
Language Environment-conforming assembler invoking an HLL main routine
Assembler main routine calling HLL subroutines for better performance
ILC under CICS
Language pairs supported in ILC under CICS
Enclaves
Enclave boundary
Program mask conventions
C/C++ and COBOL
z/OS XL C/C++ and PL/I
COBOL and PL/I
Assembler
COBOL considerations
PL/I considerations
Link-editing ILC applications under CICS
CICS ILC application
Condition-handling responses
Using nested enclaves
Understanding the basics
COBOL considerations
PL/I considerations
Determining the behavior of child enclaves
Creating child enclaves using EXEC CICS LINK or EXEC CICS XCTL
How runtime options affect child enclaves
How conditions arising in child enclaves are handled
Creating child enclaves by calling a second main without an RB crossing
How runtime options affect child enclaves
How conditions arising in child enclaves are handled
Creating child enclaves using SVC LINK or CMSCALL
How runtime options affect child enclaves
Child enclave has a C, C++, Fortran, PL/I, or Language Environment-conforming assembler main routine
Child enclave has a COBOL main routine
How conditions arising in child enclaves are handled
Child enclave has a C, C++, or Language Environment-conforming assembler main routine
Child enclave has a COBOL main routine
Child enclave has a Fortran or PL/I main routine
Creating child enclaves using the C system() function
z/OS UNIX considerations
How conditions arising in child enclaves are handled
TRAP(ON | OFF) effects for enclaves created by system()
Creating child enclaves that contain a PL/I fetchable main
How runtime options affect child enclaves
How conditions arising in child enclaves are handled
Special fetch and call considerations
Other nested enclave considerations
What the enclave returns from CEE3PRM
Finding the return and reason code from the enclave
Assembler user exit
Message file
AMODE considerations
Copyright IBM Corporation 1990, 2014