Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Verknüpfung von ILCS-Programmen mit Nicht-ILCS-Programmen gleicher Sprache

&pagelevel(4)&pagelevel

Die Verknüpfung von ILCS- mit gleichsprachigen Nicht-ILCS-Programmen (= Programme, die nicht von einem ILCS-fähigen Compiler erzeugt wurden) sind je nach Sprache (Compiler und zugehöriges Laufzeitsystem) unterschiedlich geregelt. Im folgenden werden nur für die CRTE-Sprachen COBOL und C sowie für Assembler die Regelungen aufgeführt, die bei der Verknüpfung von Nicht-ILCS- mit ILCS-Programmen zu beachten sind. Die Regelungen für die anderen Sprachen (z.B. Fortran, Pascal) sind in den entsprechenden Benutzerhandbüchern beschrieben.

COBOL85

Die Verknüpfung von Nicht-ILCS-Programmen (d.h. mit COBOL85 V1.0 erzeugte Programme) mit ILCS-Programmen ist grundsätzlich möglich. Die Programmkommunikation über ILCS ist aber nur gewährleistet, wenn das Hauptprogramm ein ILCS-Programm ist. Wenn das Hauptprogramm ein Nicht-ILCS-Programm ist, gelten auch alle aufgerufenen ILCS-Unterprogramme als Nicht-ILCS-Programme.

COBOL2000

Die Verknüpfung von Nicht-ILCS-Programmen (d.h. mit COBOL85 V1.0 erzeugte Programme) mit ILCS-Programmen ist grundsätzlich möglich.
Da COBOL2000 intern in jedem Fall die ILCS-Infrastruktur nutzt, wird beim Aufruf von COBOL2000-Modulen ILCS initialisiert, auch wenn das Hauptprogramm ein Nicht-ILCS-Programm ist.

Bei Verwendung von COBOL-Programmen mit USE-Prozeduren ist eine gültige Rückwärtsverkettung in der Save-Area erforderlich. X'FFFFFFFF' bzw. X'00000000' werden als Ende der Rückwärtsverkettung interpretiert.

C und C++

Nicht-ILCS-Programme (d.h. mit C V1.0 erzeugte Programme) und ILCS-Programme in C können problemlos miteinander verknüpft werden. Falls das aufrufende Hauptprogramm ein C-V1.0-Programm ist, wird vom C-Laufzeitsystem die ILCS-Umgebung automatisch nachinitialsiert. Die Verknüpfung ist bis zur C-Version 2.0 ohne jegliche Vorkehrung möglich, ab der C- bzw C++-Version 2.1A nur unter folgenden Voraussetzungen: Bei der Übersetzung muss in der COMPILER-ACTION-Option die Voreinstellung INLINE-OPTIMAL des LINKAGE-Parameters auf OUT-OF-LINE oder V1-COMPATIBLE-INLINE geändert werden.
Die Übersetzung eines C-Programms mit dem C++-Compiler muss im KR- oder ANSI-Modus erfolgen. Programme, die im CPLUSPLUS-Modus übersetzt werden, sind generell nicht mit C-V1.0-Objekten verknüpfbar.

Assembler

Der Aufruf eines ILCS-Programms durch ein Nicht-ILCS-Programm verlangt die Anpassung des Sicherstellungsbereichs (Save Area) des Nicht-ILCS-Programms an die ILCS-Konvention. Diese Anpassung kann der Benutzer durch folgende Maßnahmen vollziehen:

  • Der Sicherstellungsbereich des Nicht-ILCS-Objekts muss mit dem Makro IT0VSA erzeugt werden.

  • Vor dem Aufruf des ILCS-Objekts muss das Feld &P.VPCD mit der Adresse des aktuellen IT0PCD-Moduls versorgt werden. Diese Adresse lässt sich mit der Adresskonstanten A(IT0PCD) bestimmen.

Ein Beispiel hierzu finden Sie im Anhang.

Java

Für die Verknüpfung von C/C++-Programmen und Java-Programmen gibt es verschiedene Techniken, z.B. die Verknüpfung über das Java Native Interface (JNI). Nähere Informationen hierzu finden Sie in der Dokumentation zu Java.