Openvms C++ - как передать значения в среду

Я пытаюсь передать значения из программы C++ на VMS.

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

Должно ли это работать? Если нет, то как мне это исправить?

Как я могу проверить возвращаемые значения?

Как я могу проверить в среде, если это удалось?

Если работает, то надежно? (Не в зависимости от разрешений и т.д.).


person user1987442    schedule 27.02.2013    source источник


Ответы (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 *), однако ожидается, что длина строки будет получена из размера массива символов.

person user2116290    schedule 27.02.2013

Рабочие примеры на C для lib$set_symbol и lib$set_logical, в том числе о том, как правильно создавать дескрипторы и стандартизированные ошибки проверка. Вам не нужны привилегии для выполнения этих функций, так что да, это «надежно».

Чтобы увидеть результаты программ, вы должны ввести (для моих примеров):

$ SHOW SYMBOL/GLOBAL LIB_SET_SYMBOL_TEST

а также:

$ SHOW LOGICAL LIB_SET_LOGICAL_TEST
person Jim    schedule 27.09.2013