ILE C/C++ Programmer's Guide


Calling Another Program Containing a _DecimalT Class Template

You can make interlanguage calls and pass _DecimalT-class arguments to ILE RPG, ILE COBOL, and ILE C programs.

The following figure provides an ILE COBOL example.

Figure 314. Example of Calling an ILE COBOL Program from an ILE C++ Program and Passing a _DecimalT Class Template


The C++ program is:

// This program calls an ILE COBOL program
// and passes a bcd object.
 
#include <iostream.h>
#include <bcd.h>
 
extern "COBOL" void CBLPGM(_DecimalT<9,7>);
 
int main(void)
{
 _DecimalT<9,7> arg=__D("12.1234567");
 
//  Call an ILE COBOL/400 program and pass a bcd object
//  to it.
 
 CBLPGM(arg);
 
 cout <<"The COBOL program was called and passed a bcd object"<<endl;
}

The ILE COBOL program is:


IDENTIFICATION DIVISION.
PROGRAM-ID. CBLPGM.
*********************************************************************** * *
* Packed decimals: This is going to be called by a C++ *
* program to pass packed decimal data. *
* *
***********************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.

SOURCE-COMPUTER. IBM-AS400.
OBJECT-COMPUTER. IBM-AS400.

INPUT-OUTPUT SECTION.
FILE-CONTROL.

DATA DIVISION.
FILE SECTION.

WORKING-STORAGE SECTION.
77 PAC-DATA PIC X(30)
VALUE "PROGRAM START".
77 PACK-IN-WS PIC 99.9999999.

LINKAGE SECTION.
01 PACK-DATA PIC 9(2)V9(7) PACKED-DECIMAL.

PROCEDURE DIVISION USING PACK-DATA.

MAIN-LINE SECTION.

MOVE PACK-DATA TO PACK-IN-WS.
DISPLAY "**** BCD OBJECT RECEIVED IS: " PACK-IN-WS.
GOBACK.

The output is:

+--------------------------------------------------------------------------------+

|**** BCD OBJECT RECEIVED IS: 12.1234567 | |
The COBOL program was called and passed a bcd object | +--------------------------------------------------------------------------------+


[ Top of Page | Previous Page | Next Page | Table of Contents ]