![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: My application logs tell me that a sys$alloc function returns a code of 36, but the reference manuals only refer to SS$_NORMAL or other symbols. How do I match the symbol to the number on my system? The Answer is : OpenVMS uses symbolic constants for its status codes, and the explicit coding of the associated binary values is generally discouraged. Explicit use of the condition value format is generally encouraged, such as testing the low bit of the value. When this bit is set, the operation succeeded. C on OpenVMS provides the $VMS_STATUS_SUCCESS() macro in the sysdef.h definition module for this purpose: // signal on failure if (!$VMS_STATUS_SUCCESS( RetStat )) lib$signal( RetStat ); You can translate the numeric values to symbolic constants using the $putmsg and $getmsg calls, as well as with the EXAMINE/CONDITION command in the debugger, as well as searching of the language-specific symbol definition files, and via DCL command sequences such as the following: $ msg = f$message(36) $ sho sym msg X = "%SYSTEM-F-NOPRIV, insufficient privilege or object protection violation" $ exit 36 %SYSTEM-F-NOPRIV, insufficient privilege or object protection violation The OpenVMS Wizard strongly recommends skimming the OpenVMS Programming Concepts manual and the language-specific documentation. The former manual and various language-specific documentation sets are available at the OpenVMS website.
|