HP OpenVMS Systemsask the wizard |
The Question is: Returning a $STATUS to DCL from a DECC app? With VAXC/VAX we could return a code from the application 'return' statement, so that RETURN 0 --> $STATUS = 0 and RETURN 1 --> $STATUS = 1. With DECC/Alpha, $STATUS is set to 1 in either case (like it's ign oring the argument). Is this fixable with a compile switch or do we need to recode with system calls? The Answer is :
A value of zero is not a defined return status value on OpenVMS, non-zero
even values indicate failures.
The value propogated back to DCL by a C return call in the main routine
is the same as if exit() had been called, and can be a status value of
EXIT_SUCCESS (0), EXIT_FAILURE (1), or a number from 2 to 255:
o A status value of 0 or EXIT_SUCCESS is translated to the OpenVMS
SS$_NORMAL status code to return the OpenVMS success value.
o A status value of 1 or EXIT_FAILURE is translated to an error-level
exit status. The status value is passed to the parent process.
o Any other status value is left the same.
If you wish to return a zero status, you will need to use sys$exit(0).
An ANSI-compliant way to return with unsuccessful status is to use the
EXIT_FAILURE macro value defined in the stdlib.h header.
|