0

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

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

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

如何检查返回值?

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

如果有效,是否可靠?(不取决于权限等)。

4

2 回答 2

2

不。查看 $DESCRIPTOR 是如何定义的,在 descrip.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*) 的大小派生,但预期是字符串的长度,从字符数组的大小派生。

于 2013-02-27T16:47:24.403 回答
1

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

要查看程序的结果,您可以输入(对于我的示例):

$ SHOW SYMBOL/GLOBAL LIB_SET_SYMBOL_TEST

和:

$ SHOW LOGICAL LIB_SET_LOGICAL_TEST
于 2013-09-27T04:03:54.073 回答