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

いいえ。descrip.hで$DESCRIPTORがどのように定義されているかを確認してください。 #define $DESCRIPTOR(name,string) struct dsc$descriptor_s name = { sizeof( string)-1, DSC$K_DTYPE_T, DSC$K_CLASS_S, string }

この例では、lnameとlvalueの最初の要素の両方に(char *)のサイズから派生した3が含まれますが、文字配列のサイズから派生した文字列の長さが予想されます。

于 2013-02-27T16:47:24.403 に答える
1

記述子を正しく実行する方法や標準化されたエラーチェックなど、 lib $set_symbolおよびlib$ set_logicalのCでの作業例。これらの機能を実行するために特権は必要ないので、そうです、それは「信頼できる」です。

プログラムの結果を確認するには、次のように入力します(私の例では)。

$ SHOW SYMBOL/GLOBAL LIB_SET_SYMBOL_TEST

と:

$ SHOW LOGICAL LIB_SET_LOGICAL_TEST
于 2013-09-27T04:03:54.073 に答える