gpt4 book ai didi

c - 从 C 库返回到 GNU COBOL 的不可打印整数指针

转载 作者:太空狗 更新时间:2023-10-29 16:40:47 26 4
gpt4 key购买 nike

我学习 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 );
}

我的问题是 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 工作。我的代码中是否存在明显的新手错误?

最佳答案

如果返回 int,您可以直接检查 RETURN-CODE 变量,根本不需要使用 RETURNING 子句。

如果你想使用它:一个 int 映射到 retvar USAGE BINARY-LONG

关于c - 从 C 库返回到 GNU COBOL 的不可打印整数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com