Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Reproduction of the source programs

&pagelevel(3)&pagelevel

This section contains the following source programs:

Non-ILCS Assembler program 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
 * Call of IT0INITS
 * Register 0 must contain the value 0 (no parameters)
          XR    R0,R0
          L     R15,INIADDR
          BASR  R14,R15
 * Store the PCD address in the save area
          ST    R0,ILCVPCD
 * Load the save area address
          LA    R13,ILCVAI
 * Call ILCSINTF in order to link the C and COBOL modules
 * (with the BIND macro) and to execute them for the first time
          L     R15,INTFADDR
          BASR  R14,R15
          TERM
 * Definition of the address of IT0INITS
 INIADDR  DC    V(IT0INITS)
 * Definition of the address of ILCSINTF
 INTFADDR DC    V(ILCSINTF)
          PRINT GEN
 * Definition of the save area
          IT0VSA ILC
          DROP  R3
          END

ILCS Assembler program 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 whether the modules have already been linked in
          L     R15,CMODADDR
          @IF   ZE
          LTR   R15,R15
          @THEN
 ****
 * A separate BIND macro is issued for each language and module
 ****
 * Load the C module
          BIND  SYMBOL=PRNT,SYMBLAD=CMODADDR,ALTLIB=YES,MSG=ERROR
 * Load the COBOL module
          BIND  SYMBOL=COBUPRO,ALTLIB=YES,MSG=ERROR
 * Initialize the C and COBOL language environment by calling
 * the ILCS routine IT0ININ with the structure macro @ININ
          @ININ
          @BEND
 * Call the C module
          @PASS ADDR=CMODADDR
          @EXIT
 * Definition of the address of the C module
 CMODADDR DS    F
          @END  LTORG=YES,DROP=()
          END

ILCS-C program 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 program 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.