从C ++调用RPG过程

时间:2015-10-08 14:40:22

标签: c++ rpgle

我正忙于IBM i上的C ++项目,并且正在尝试调用服务程序中的RPG程序,但我不知道该怎么做。

我只在互联网上找到示例,documentation显示如何调用RPG程序(* PGM)对象,方法如下:

extern "OS"
{
    void RPGPROGRAM(void);
}

int main()
{
    RPGPROGRAM();
    return 0;
}

文档说他们正在调用RPG"程序"但是如果你看一下实际的源代码,它只是一个RPG程序(* PGM)对象,他们使用#pragma map在C ++中调用。

假设我有以下RPG服务程序(让我们命名为RPGSP),其中定义了一个名为rpg_doSomething的程序:

ctl-opt nomain;

dcl-proc rpg_doSomething export;
  dcl-pi *n int(10);
    dcl-parm p_test char(20);
  end-pi;

  p_test = "It Works!!";

  return 1;

end-proc;      

我应如何在C ++程序中声明并调用上述过程?

我已尝试在extern块中声明它,但它最终在运行时查找rpg_doSomething对象,但无法找到它。我还尝试在编译时将服务程序绑定到C ++程序,但这也不起作用。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先使用哪个C ++编译器?

原生ILE一个?那应该很容易。很确定你只需要: 关于函数声明的extern "RPG"

或PASE中的AIX?然后看看Calling ILE procedures

有一点需要注意,RPGLE不区分大小写,默认情况下,大写名称。虽然C / C ++区分大小写。您的C ++程序需要调用RPG_DOSOMETHING,或者您需要使用EXTPROC('rpg_DoSomething')

将区分大小写的名称应用于RPG过程