Die CPI-C-COBOL Programmschnittstelle entspricht weitgehend der in Abschnitt „CPI-C-Aufrufe bei UPIC“ beschriebenen C-Schnittstelle. Aus diesem Grund können Sie diese Beschreibung bei der Erstellung von CPI-C-Programmen in COBOL zu Rate ziehen. In diesem Abschnitt sind die Besonderheiten der COBOL-Schnittstelle bei den Datenstrukturen und den CPI-C-Aufrufen zusammengefasst.
COPY-Element CMCOBOL
Für CPI-C-Anwendungen in COBOL wird das COPY-Element CMCOBOL ausgeliefert, das die Bedingungsvariablen und -namen enthält. CMCOBOL finden Sie nach der Installation des Trägersystems UPIC:
auf Windows-Systemen im Dateiverzeichnis upic-dir\
copy-cobol
bzw. upic-dir\netcobol
auf Unix- und Linux-Systemen im Dateiverzeichnis upic-dir
/copy-cobol85
bzw. upic-dir/netcobol
auf BS2000-Systemen in der Bibliothek die von der folgenden SDF-P Funktion zurückgeliefert wird (diese Funktion kann in der Übersetzungsprozedur benutzt werden, um den Bibliotheksnamen zu bekommen):
INSTALLATION-PATH(INSTALLATION-UNIT='UTM-CLIENT',LOGICAL-ID='SYSLIB',DEFAULT-PATH-NAME='*UNKNOWN')
CMCOBOL muss mit der COPY-Anweisung in die WORKING-STORAGE-SECTION kopiert werden. Die Namen der Konstanten werden von den C-Namen abgeleitet: der Unterstrich wird durch den Bindestrich ersetzt, z.B. CM-SEND-RECEIVED
statt CM_SEND_RECEIVED
.
In CMCOBOL wird für die CPI-C-Schnittstelle wegen der CPI-C-Spezifikation der Name TIME-OUT
bzw. TIMEOUT
verwendet. Da diese Worte bei Micro Focus reserviert sind, muss dieser Name z.B. mit der Anweisung
COPY CMCOBOL REPLACING TIME-OUT BY CPIC-TIMEOUT
im Source geändert werden.
CPI-C-Aufrufe in COBOL
Die Funktionsnamen von C und COBOL sind identisch. Für die Parameter der CPI-C-Aufrufe gilt folgendes:
Die Parameter müssen wie bei COBOL üblich per Adresse ("by reference") übergeben werden.
Jede Variable der Parameterliste muss mit der Stufennummer 01 beginnen.
Numerische Daten müssen in dem COMP-Format sein, das auf der jeweiligen Maschine das gleiche Binärformat wie bei C erzeugt.
Bei COBOL-Aufrufen auf Windows-Systemen sind die für eine dynamische Bibliothek (DLL) vorgegebenen Aufruf-Konventionen zu beachten.
... WORKING-STORAGE-SECTION. ************************* COPY CMCOBOL. ... PROCEDURE DIVISION. ************************* ... CALL "CMINIT" USING CONVERSATION-ID,SYM-DEST-NAME,CM-RETCODE.