2

是否可以获取 Fortran 90(OpenVMS 操作系统)上的系统环境信息?我使用编译器 VSI Fortran V8.3-104957-50Q83。我不会意识到 Fortran 上的下一个 C 代码

char *bind_addr= getenv("MYSQL_TEST_BINDADDR");
4

1 回答 1

3

本主题是一系列问题中的一个,这些问题似乎是在 OpenVMS 上将“C”应用程序移植到 Fortran。为了提供最好的答案,了解更多背景可能会有所帮助 - 为什么会发生这种努力,源平台是什么?

也就是说,我们大多数人都知道的环境变量在 OpenVMS 上并不存在。OpenVMS DCL SYMBOLS 和用户/组/系统逻辑名称可以并且将被支持库(例如通过 C-RTL、Perl 和 Python 提供)视为环境变量。

要定义它们,需要一个外壳 (DCL) 操作来选择符号或逻辑名称作为载体。知道要移植的应用程序的机制可能只想调用本机 OpenVMS 函数来获取或设置值(SYS$TRNLNM、LIB$GET_SYMBOL、LIB$SET_SYMBOL)。

如果您可以访问 C 编译器,则编写自己的“my_getenv”包装器来调用 C-RTL 提供的 getenv 可能是一个很好的解决方案。

另一种解决方法可能是逆向工程并调用实际的 C 支持函数(可能称为 DECC$GETENV - 未验证!)这可能需要首先调用一些初始化(同样,未验证)

当然还有更多关于这方面的文章。谷歌?有关符号和逻辑的一些背景知识,文档和常见问题解答应该会有所帮助。例如 - http://www.hoffmanlabs.org/vmsfaq/vmsfaq_012.html

祝你好运,海因。

于 2020-10-08T14:29:32.620 回答