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.
The C++ program is:
// This program calls an ILE COBOL program
// and passes a bcd object.
#include <iostream.h>
#include <bcd.h>
extern "OS" void CBLPGM(_DecimalT<9,7>);
int main(void)
{
_DecimalT<9,7> arg=__D("12.1234567");
// Call an ILE COBOL 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-I.
OBJECT-COMPUTER. IBM-I.
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