我学习 COBOL 只是为了好玩,现在想从我的 COBOL 源代码中调用 C 函数(使用 GnuCOBOL)。
我可以很好地调用 C 函数,但是我的一个函数有一个小问题,如下所示:(它只是用相同的参数包装另一个函数,现在)
int getSensors( char * protocol, int protocolLen,
char * model, int modelLen,
int * id, int * dataTypes ) {
return tdSensor(protocol, protocolLen, model, modelLen, id, dataTypes );
}
我的问题是 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).
我的电话看起来像这样:
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.
我是 COBOL 的新手,我的 C 技能相当生疏,因为我通常使用 Java 工作。我的代码中是否有明显的新手错误?