CRE Programmer's Guide

Compiling and Binding Programs for the TNS CRE
Common Run-Time Environment (CRE) Programmer’s Guide528146-004
3-9
Bind-Time Validation for Mixed-Language Programs
°
Word address
°
Extended address
°
Two-byte procedure parameter
°
Four-byte procedure parameter
Only C supports the passing of structured parameters by value. Such parameters
cannot match parameters passed from any other language.
Return types (values returned on the stack) for both interlanguage and
intralanguage calls must belong to the same class. The classes of return values
are:
°
Two-byte integer scalar
°
Four-byte integer scalar
°
Four-byte real scalar
°
Eight-byte integer scalar
°
Eight-byte real scalar
°
No return type
Language Consistency Checking
Binder provides language consistency checking by making sure that callers specify the
correct language for called routines. If a caller explicitly states that the language of a
called routine is unspecified, Binder does not perform this check.
If one caller specifies one language, and a subsequent caller specifies a different
language, and neither of them has been resolved, Binder issues the message:
**** WARNING 149 **** Referencing procedures do not agree on the
language of procedure procedure-name.
After it issues the message, Binder must determine which language to use for
subsequent checking. If either caller is written in the same language as the called
routine, Binder uses that language. If both callers specify languages other than that of
the called routine, Binder selects the language of one of the caller routines. Binder
makes this selection in the following order:
TNS COBOL
FORTRAN
TAL
TNS C
For example, if one caller specifies C and another caller specifies COBOL, Binder
selects COBOL for the called routine.
Once Binder has determined the language of a called routine, and a caller specifies a
different language, Binder issues the message:
**** WARNING 148 **** Referencing procedures claim that
procedure procedure-name is written in a different language.
If Binder issues these messages during a bind session, examine calls to the named
procedure in your source code to make sure they specify the correct language. Note