Sprachverknüpfung mit C++
In C++ werden externe Namen für den Binder codiert.
Sollen Funktionen und Daten in C++ und in anderen ILCS-Sprachen gemeinsam benutzt werden, muss die Codierung der externen Namen unterdrückt werden. Das C++-Sprachmittel hierfür lautet:
extern "C"
Deklaration;
bzw.
extern "C" {
Deklarationen
}
Im C++-Programm sind extern "C"
-Deklarationen erforderlich sowohl für die in C++ definierten als auch für die in der anderen ILCS-Sprache definierten Daten und Funktionen.
Gemeinsame Dateiverarbeitung
Gemeinsam bearbeitete Dateien müssen sowohl im C/C++-Teil als auch im anderssprachigen Teil eröffnet werden. Ihre Verarbeitung ist intern über verschiedene FCBs realisiert.
Da die Verarbeitung einer gemeinsamen Datei über getrennte FCBs erfolgt, ist ein verzahntes Einlesen nicht möglich. Sämtliche Zeichen der Datei werden dem C-Teil und dem anderssprachigen Teil geliefert.
Aufruf der main-Funktion
Der Aufruf einer main
-Funktion ist möglich. Als Einsprungadresse ist dann MAIN zu verwenden.
Wenn mehrere Module mit main
-Funktionen in einer Bibliothek stehen, muss die Auswahl der gewünschten main
-Funktion durch explizites Einbinden des entsprechenden Moduls sichergestellt werden (INCLUDE- statt RESOLVE-Anweisung).
Die Umlenkung der Standard-Ein-/Ausgabe-Dateien sowie Parameterübergaben an die main
-Funktion sind nicht möglich.
Gemeinsame STXIT-Ereignisbehandlung
ILCS unterscheidet zwischen einer impliziten sprachspezifischen Ereignisbehandlung und einer explizit an- und abmeldbaren Ereignisbehandlung.
Die implizite sprachspezifische Ereignisbehandlung ist nur für die STXIT-Ereignisse ERROR und PROCHK möglich, die explizite An- und Abmeldung für alle STXIT-Ereignisse.
Die durch verschiedene Sprachen explizit angemeldeten STXIT-Routinen werden parallel verwaltet, d.h. bei Auftritt eines Ereignisses werden die angemeldeten Routinen aller beteiligten Sprachen aufgerufen (in der Reihenfolge der Anmeldung).
Die implizite Ereignisbehandlung wird durch eine explizite Anmeldung außer Kraft gesetzt.
C/C++ hat keine implizite sprachspezifische Ereignisbehandlung. Eine explizite An- und Abmeldung ist mit den C-Bibliotheksfunktionen signal
und cstxit
möglich.
Die Anmeldung von Ereignisbehandlungsroutinen für die STXIT-Ereignisklassen ERROR und PROCHK setzt die implizite Ereignisbehandlung anderer Sprachen außer Kraft. Bei Verlassen der C/C++-Sprachumgebung sollten daher die Ereignisbehandlungsroutinen für ERROR und PROCHK explizit abgemeldet werden, um die implizite Ereignisbehandlung anderer Sprachen wieder wirksam werden zu lassen.
Die Abmeldung erfolgt bei der C-Bibliotheksfunktion signal
durch Zuordnung von SIG_DFL.