The macro STATUS_NATIVE_SET on VMS is currently setting any VMS warning
status to a PL_statusvalue of 256, which is translated to $! of "invalid
file number".
VMS status & 1 = success
VMS ((status & 7) == 0) = Warning
VMS ((status & 7) == 2) = Error
VMS ((status & 7) == 6) = Fatal Error.
Determining what $! text to generate correctly will require a more
complex algorithm unless you want to just let VMS translate it.
Also if the program is in one of two UNIX compatibility modes, the VMS
status may already be in UNIX format where the bit patterns are
incorrect for VMS, or need a special POSIX translation,
This is affecting the tests that are checking the return values from
system() calls in perl.
-John
[EMAIL PROTECTED]
Personal Opinion Only