从我的 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/