从 COBOL 调用 C : trouble with stderr

标签 c cobol hp-nonstop tandem

从我的 COBOL 程序中,我正在调用我的 C 模块,该模块本身会调用专有库。该库坚持写入 stderr,尽管由于主程序是用 COBOL 编写的,所以没有可用的 stderr。因此,程序将中止并显示以下消息:

cannnot open stderr


惠普的支持人员建议我发布

PARAM SAVE-ENVIRONMENT ON

在运行程序之前在 TACL 中。这确实解决了我的问题。但是,我的程序将由多个脚本中的多个人使用,我不想强​​迫他们在运行程序之前发出 PARAM SAVE-ENVIRONMENT ON

是否有一些 COBOL85 指令可以让我在不手动更改任何参数的情况下正确运行程序?类似的东西

?PARAM SAVE-ENVIRONMENT ON

那就太好了...

编辑:

由于我能够修改 C 模块(而不是库),因此我对基于 C 的解决方案完全满意。但是,在调用库之前简单地打开 stderr 并不能解决我的问题。

最佳答案

如果您可以从 Cobol 执行 TACL 命令,那就可以了。

您可以在 Cobol 中打开分配给 stderr 的文件吗?也许准确地了解 PARAM SAVE-ENVIRONMENT ON 的作用也可能有所帮助。

大多数 C 贡献者不会了解 HP/Tandem 上的操作系统,这将影响答案的值(value)。我不知道您是否可以从 C 程序中“退出”以发出 TACL 命令或运行 TACL 脚本。

对 HP/Tandem 的 Cobol、TACL 和 C 手册进行一些研究可能会找到答案,也许还需要一两个 google。

在脚本中包含该语句有什么问题吗?如果他们希望该程序正常运行?

关于从 COBOL 调用 C : trouble with stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14559666/

相关文章:

rest - HP NonStop 休息服务部署

c# - IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 常数值

c - 如何将 uint8_t 数组更改为数字

c - 通过强制转换访问无效内存?

file - 如何检查文件是否已在 COBOL 中打开?

c++ - "hello"和 {"hello"} 有什么区别?

java - 寻找一种在 Java 中用 Swift 转换抄写本的优雅方法

cobol - 用cobol计算变量的长度字符串

ssl - 在 HP Nonstop 上为 MQ 队列管理器启用 SSL