2013-02-27 16 views
0

我想從VMS上的C++程序傳遞值。Openvms C++ - 如何將值傳遞到環境

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

它應該工作嗎?如果不是,我該如何糾正它?

如何檢查返回值?

如何檢查環境是否成功?

如果有效,它可靠嗎? (不取決於權限等)。

回答

2

號檢查出$描述符是如何定義的,在descrip.h: #define $DESCRIPTOR(name,string) struct dsc$descriptor_s name = { sizeof( string)-1, DSC$K_DTYPE_T, DSC$K_CLASS_S, string }

在您的例子L-NAME和左值都將包含3的第一要素,從(字符*)的大小得出,然而,期望的是字符串的長度,從字符數組的大小派生而來。

+0

看來你是對的。 – user1987442 2013-02-27 17:05:21

1

C中lib$set_symbollib$set_logical的工作示例,包括如何正確描述符和標準化錯誤檢查。您無需執行這些功能的權限,所以是的,它是「可靠的」。

要查看程序的結果,你會類型(我的例子):

$ SHOW SYMBOL/GLOBAL LIB_SET_SYMBOL_TEST 

和:

$ SHOW LOGICAL LIB_SET_LOGICAL_TEST 
相關問題