调用包含 _DecimalT 类模板的另一个程序

您可以进行跨语言调用,并将 _DecimalT- 类参数传递给 ILE RPG、ILE COBOL 和 ILE C 程序。

下图提供了一个 ILE COBOL 示例。

图 1。 从 ILE C++ 程序调用 ILE COBOL 程序并传递 _DecimalT 类模板的示例

C++ 程序为:

// 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;
}
ILE COBOL 程序是
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.
输出为:
**** BCD OBJECT RECEIVED IS: 12.1234567
The COBOL program was called and passed a bcd object