Openvms c++ -如何向环境传递值

Openvms C++ - how to pass values to the environment

本文关键字:环境 c++ Openvms      更新时间:2023-10-16

我正在尝试在VMS上传递c++程序的值。

$DESCRIPTOR( lname, (char*) "A" );
$DESCRIPTOR( lvalue, (char *) "Hello World" );
lib$set_logical( &lname, &lvalue );
lib$set_symbol (&lname,&lvalue);

它应该工作吗?如果不是,我如何纠正它?

如何检查返回值?

如果检查成功,如何检查环境?

如果它能工作,它可靠吗?(不取决于权限等)

No。看看$DESCRIPTOR是如何定义的,在description .h中:#define $DESCRIPTOR(name,string) struct dsc$descriptor_s name = { sizeof( string)-1, DSC$K_DTYPE_T, DSC$K_CLASS_S, string }

在您的示例中,lname和lvalue的第一个元素都包含3,从(char*)的大小派生,然而期望的是字符串的长度,从字符数组的大小派生。

lib$set_symbol和lib$set_logical的C语言工作示例,包括如何正确执行描述符和标准化错误检查。您不需要特权来执行这些功能,所以,是的,它是"可靠的"。

要查看程序的结果,您可以输入(对于我的示例):
$ SHOW SYMBOL/GLOBAL LIB_SET_SYMBOL_TEST

:

$ SHOW LOGICAL LIB_SET_LOGICAL_TEST