1 Scope
This Technical Report is based on experience gained in the standardization of two
major areas in information processing. One area covers programming languages. The
other area is composed of the services necessary to an application program to achieve
its goal. The services are divided into coherent groups, each referred to as a SYSTEM
FACILITY, that are accessed through a FUNCTIONAL INTERFACE. The specification of a
system facility, referred to as a FUNCTIONAL SPECIFICATION, defines a collection of
SYSTEM FUNCTIONS, each of which carries out some well-defined service.
Since in principle there is no reason why a particular system facility should not
be used by a program, regardless of the language in which it is written, it is the
practice of system facility specifiers to define an ‘abstract’ functional interface
that is language independent. In this way, the concepts in a particular system facility
may be refined by experts in that area without regard for language peculiarities.
An internally coherent view of a particular system facility is defined, relating the
system functions to each other in a consistent way and relating the system functions
to other layers within the system facility, including protocols for communication
with other objects in the total system.
However, if these two areas are standardized independently, it is not possible to
guarantee that programs from one operating environment can be moved to another, even
if the programs are written in a standard programming language and use only standard
system facilities. A language binding of a system facility to a programming language
provides language syntax that maps the system facility’s functional interface. This
allows a program written in the language to access the system functions constituting
the system facility in a standard way. The purpose of a language binding is to achieve
portability of a program that uses particular facilities in a particular language.
Examples of system facilities that have had language bindings developed for them are
GKS, NDL, and SQL (see Bibliography). It is anticipated that further language binding
development will be required. Some system facilities currently being standardized
have no language bindings and additional system facilities will be standardized. There
is a possibility of n × m language bindings, where n is the number of languages and
m the number of system facilities.
The scope of this Technical Report is to classify language binding methods, reporting
on particular instances in detail, and to produce suggested guidelines for future
language binding standards.
Note that the language bindings and the abstract facility interfaces shall have a
compatible run time representation, but the abstract facility does not necessarily
have to be written in the host language. For example, if the application program is
using a Pascal language binding and the corresponding facility is written in FORTRAN,
there shall be a compatible run time representation in that operating environment.
How this compatibility is achieved is outside the scope of these guidelines. This
is generally a property of the operating environment defined by the implementor, and
is reviewed briefly in this Technical Report.