You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GNU COBOL中获取C函数返回的64位整数值?

在GNU COBOL中直接处理返回64位整数的C函数调用

GNU COBOL默认将C函数返回值按32位BINARY-LONG处理,但无需编写C包装器,直接在COBOL代码内通过显式声明返回值类型就能解决问题,具体实现如下:

1. 显式指定返回值类型

在COBOL的CALL语句中,通过RETURNING子句明确指定返回值为BINARY-DOUBLE(对应C的64位整数类型,如int64_t或long long),覆盖默认的类型映射。示例代码:

IDENTIFICATION DIVISION.
PROGRAM-ID. CALL-C-64BIT-FUNC.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  RETURNED-VALUE  PIC S9(18) BINARY-DOUBLE.  *> 对应C的有符号64位整数

PROCEDURE DIVISION.
    CALL "my_c_64bit_function" RETURNING RETURNED-VALUE
        ON EXCEPTION
            DISPLAY "函数调用失败"
        NOT ON EXCEPTION
            DISPLAY "返回的64位整数: " RETURNED-VALUE
    END-CALL.
    STOP RUN.

若C函数返回无符号64位整数,只需将PIC S9(18)改为PIC 9(18),保持BINARY-DOUBLE类型不变。

2. 编译与验证注意事项

  • 确保GNU COBOL编译器(cobc)与C编译器均为64位版本,避免跨位数的类型不匹配问题。
  • 测试边界值(如INT64_MAX或INT64_MIN),验证返回值是否被正确接收,无截断或溢出。

内容的提问来源于stack exchange,提问作者ContronThePanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:03:23