问题描述
是否可以在Fortran 90(OpenVMS操作系统)上获取系统环境信息?我使用编译器VSI Fortran V8.3-104957-50Q83。 我不会在Fortran上实现下一个C代码
char *bind_addr= getenv("MysqL_TEST_BINDADDR");
解决方法
该主题是一系列问题中的一个,有关什么似乎是 OpenVMS上Fortran的“ C”应用程序。为了提供最好的答案,可能需要了解更多的背景知识-为什么要付出努力,源平台是什么?
也就是说,我们大多数人都知道环境变量在OpenVMS中并不存在。 OpenVMS DCL SYMBOLS和用户/组/系统逻辑名称可以被支持库(例如通过C-RTL,Perl和Python获得的支持库)视为环境变量。
要定义它们,人们需要一个选择符号或逻辑名称作为载体的shell(DCL)操作。知道要移植的应用程序的机制后,可能只想调用本机OpenVMS函数来获取或设置值(SYS $ TRNLNM,LIB $ GET_SYMBOL,LIB $ SET_SYMBOL)。
如果可以访问C编译器,则编写自己的“ my_getenv”包装程序以调用C-RTL提供的getenv可能是一个不错的解决方案。
另一种解决方法可能是反向工程并调用实际的C支持函数(可能称为DECC $ GETENV-未验证!),这可能需要先进行一些初始化(再次,未经验证)
肯定有更多关于此的文章。谷歌? 对于符号和逻辑的一些背景知识,文档和FAQ应该会有所帮助。 例如-http://www.hoffmanlabs.org/vmsfaq/vmsfaq_012.html
祝你好运, 海因。