Loading...
Select Version
&pagelevel(3)&pagelevel
In diesem Abschnitt sind folgende Quellprogramme enthalten:
- Nicht-ILCS-Assemblerprogramm CALLINTF
- ILCS-Assemblerprogramm ILCSINTF
- ILCS-C-Programm CUPRO
- ILCS-COBOL-Programm COBUPRO
Nicht-ILCS-Assemblerprogramm CALLINTF
CALLINTF CSECT
TITLE 'CALL TO ILCSINTF'
CALLINTF AMODE ANY
CALLINTF RMODE ANY
R15 EQU 15
R14 EQU 14
R12 EQU 12
R13 EQU 13
R3 EQU 3
R4 EQU 4
R0 EQU 0
PRINT NOGEN
BALR R3,0
USING *,R3
* Aufruf von IT0INITS
* Register 0 muss den Wert 0 enthalten (keine Parameter)
XR R0,R0
L R15,INIADDR
BASR R14,R15
* Abspeichern der PCD-Adresse in die Save Area
ST R0,ILCVPCD
* Laden der Save Area Adresse
LA R13,ILCVAI
* Aufruf von ILCSINTF, um die C- und COBOL-Module zu binden
* (mit dem BIND-Makro) und das erste Mal auszuführen
L R15,INTFADDR
BASR R14,R15
TERM
* Definition der Adresse von IT0INITS
INIADDR DC V(IT0INITS)
* Definition der Adresse von ILCSINTF
INTFADDR DC V(ILCSINTF)
PRINT GEN
* Definition der Save Area
IT0VSA ILC
DROP R3
END
ILCS-Assemblerprogramm ILCSINTF
ILCSINTF START
PRINT GEN
ILCSINTF @ENTR TYP=E,AMODE=ANY,RMODE=ANY,VERS=000,AUTHOR=LEROY, X
FUNCT='ILCSINTF',TITLE=YES,ILCS=YES
* Test, ob die Module bereits eingebunden sind
L R15,CMODADDR
@IF ZE
LTR R15,R15
@THEN
****
* Pro Sprache und Modul wird ein eigenes BIND-Makro abgesetzt
****
* Laden des C-Moduls
BIND SYMBOL=PRNT,SYMBLAD=CMODADDR,ALTLIB=YES,MSG=ERROR
* Laden des COBOL-Moduls
BIND SYMBOL=COBUPRO,ALTLIB=YES,MSG=ERROR
* Inititialisieren der C- und COBOL-Sprachumgebung durch Aufruf
* der ILCS-Routine IT0ININ mit dem Strukturmakro @ININ
@ININ
@BEND
* Aufruf des C-Moduls
@PASS ADDR=CMODADDR
@EXIT
* Definition der Adresse des C-Moduls
CMODADDR DS F
@END LTORG=YES,DROP=()
END
ILCS-C-Programm CUPRO
#include <stdio.h>
extern void cobupro(void);
void prnt()
{
printf("CUPRO before\n");
cobupro();
printf("CUPRO after1\n");
cobupro();
printf("CUPRO after2\n");
}
ILCS-COBOL-Programm COBUPRO
IDENTIFICATION DIVISION.
PROGRAM-ID. COBUPRO.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
TERMINAL IS T.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
DIALOG SECTION.
DIAL.
DISPLAY "COBUPRO WAS HERE" UPON T.
BYEBYE.
EXIT PROGRAM.