Natural-Subprogramme können von einem Programmierobjekt aufgerufen
werden, das in einer Programmiersprache der dritten Generation (3GL)
geschrieben ist. Das aufrufende Programm kann in einer beliebigen
Programmiersprache geschrieben sein, die ein
Standard-CALL
-Interface unterstützt.
Aus diesem Grund stellt Natural das Interface
ncxr_callnat
zur Verfügung. Das 3GL-Programm ruft dieses
Interface auf, indem es den Namen des gewünschten Subprogramms
spezifiziert.
Anmerkung:
Natural muss vorher aktiviert worden sein; d.h. das aufrufende
3GL-Programm muss wiederum von einem Natural-Objekt mit einem
CALL
-Statements
aufgerufen worden sein.
Das Subprogramm wird so ausgeführt als wäre es von einem anderen
Natural-Objekt mit einem CALLNAT
-Statements aufgerufen
worden.
Wenn die Verarbeitung des Subprogrammes stoppt (entweder mit dem
END
-Statement oder mit
einem ESCAPE
ROUTINE
-Statement), wird die Kontrolle an das 3GL-Programm
zurückgegeben.
Dieses Dokument behandelt folgende Themen:
Parameter können vom aufrufenden 3GL-Programm an das Natural-Subprogramm
übergeben werden. Für die Übergabe der Parameter gelten dieselben Regeln wie
für die Übergabe mit einem CALL
-Statement.
Das 3GL-Programm ruft das Natural-Interface
ncxr_callnat
mit vier Parametern auf:
Der erste Parameter ist der Name des Natural-Subprogramms, das aufgerufen werden soll.
Der zweite Parameter enthält die Anzahl der Parameter, die an das Subprogramm übergeben werden sollen.
Der dritte Parameter enthält die Adresse der Tabelle, die die Adressen der Parameter enthält, die an das Subprogramm übergeben werden sollen.
Der vierte Parameter enthält die Adresse der Tabelle, die die Format-/Längenangaben der Parameter enthält, die an das Subprogramm übegeben werden sollen.
Reihenfolge, Format und Länge der Parameter im aufrufenden Programm
müssen exakt übereinstimmen mit Reihenfolge, Format und Länge der Felder im
DEFINE DATA
PARAMETER
-Statement des Subprogramms. Die Namen der Felder
können im aufrufenden Programm und im aufgerufenen Subprogramm unterschiedlich
sein.
Die folgenden Beispiele im samples\sysexuex-Unterzeichnis des Natural-Verzeichnisses zeigen, wie Sie ein Natural-Subprogramm von einem 3GL-Programm aufrufen können:
MY3GL.NSP (für das Hauptprogramm),
MY3GLSUB.NSN (für das Subprogramm),
MYC3GL.C (für die "C"-Function).