我正在学习COBOL只是为了它的乐趣,现在想从我的COBOL源(使用GnuCOBOL)调用C函数.
我可以很好地调用C函数,但是我的函数有一个小问题,看起来像这样:(它只包含另一个具有相同参数的函数,现在)
int getSensors( char * protocol, int protocolLen,
char * model, int modelLen,
int * id, int * dataTypes ) {
return tdSensor(protocol, protocolLen, model, modelLen, id, dataTypes );
}
Run Code Online (Sandbox Code Playgroud)
我的问题是id变量中返回的值以后在COBOL中不可打印(下面的TSI-ID).例如,返回的值可以是67,如果我在COBOL中打印变量,我得到ascii字符'C'而不是预期值0067.
COBOL记录如下所示:
01 TELLSTICK-SENSOR-ITER.
05 TSI-PROTOCOL PIC X(50).
05 TSI-MODEL PIC X(50).
05 TSI-ID PIC 9(4).
05 TSI-DATATYPES PIC 9(4).
05 TSI-RETURN PIC S9(4).
Run Code Online (Sandbox Code Playgroud)
我的电话看起来像这样:
CALL "getSensors" USING
BY REFERENCE TSI-PROTOCOL BY VALUE 50
BY REFERENCE TSI-MODEL BY VALUE 50
BY REFERENCE TSI-ID
BY REFERENCE TSI-DATATYPES
RETURNING TSI-RETURN.
Run Code Online (Sandbox Code Playgroud)
我是COBOL的新手,我的C技能非常生疏,因为我通常在Java工作.我的代码中是否有明显的新手错误?