HP OpenVMS Systemsask the wizard |
The Question is: Is there a list of FTP status messages and their meanings? I'm putting FTP commands in DCL procedures and a successful "dir" (some time ago) returned %X10128402 in $STATUS. I cannot duplicate that hex value. Now, a successful "dir" returns %X180180E9. I'd like to know what each means and/or where to go to find out. No changes have been made in our FTP environment: UCX OpenVMS Alpha Version V4.2 - ECO 1 connecting to Microsoft FTP Service (Version 4.0) The Answer is :
FTP does not necessarily return the condition status -- the OpenVMS
Wizard will assume the use of COPY/FTP, as well.
The condition value %X10128402 translates as %SMG-E-EOF, end-of-file.
%X180180E9 doesn't have a valid translation, but the low digit (9) is
odd, and this indicates a successful status.
The simplest way to translate most (OpenVMS) status codes is using the
DCL command HELP/MESSAGE. The attached example establishes the condition
using the EXIT command, and then issues the HELP/MESSAGE to display the
code. (HELP/MESSAGE/STATUS=code would also work.)
$ exit %X10128402
$ help/message
EOF, end-of-file
Facility: SMG, Screen Management Facility
Explanation: The end-of-file condition is detected on input.
User Action: If necessary, modify your program to recognize this condition
and respond to it.
Some codes may not be known to HELP/MESSAGE, but they may be present in
one of the system message files. The following command procedure will
search all message files in SYS$MESSAGE, looking for a match with the
specified condition code.
$! Searches system message files for a match with a status code
$!
$! format: @MSGTXT code [filespec] [log]
$!
$! code is assumed to be hexidecimal
$! filespec is the file name(s) to be searched in SYS$MESSAGE (default=*)
$! log will list files being searched if non null
$!
$!
$ IF p1.EQS."" THEN INQUIRE p1 "Message ID"
$ IF F$LOCATE("%X",p1).GE.F$LENGTH(p1) THEN p1="%X"+p1
$ IF p2.EQS."" THEN p2="*"
$ txt=F$MESSAGE(p1)
$ IF F$LOCATE("NOMSG",txt).LT.F$LENGTH(txt) THEN GOTO DoSearch
$ WRITE SYS$OUTPUT "Message found in system messages"
$ WRITE SYS$OUTPUT txt
$ EXIT
$ DoSearch:
$ Oldmsg=F$ENVIRONMENT("MESSAGE")
$ ON CONTROL_Y THEN GOTO NotFound
$ SET MESSAGE/NOFACILITY/NOSEVERITY/NOIDENT/NOTEXT ! Avoid warnings for non
$ ! message files
$loop: file=F$SEARCH("SYS$MESSAGE:''p2'.EXE")
$ IF file.EQS."" THEN GOTO NotFound
$ IF p3.NES."" THEN WRITE SYS$OUTPUT "''file'"
$ ON WARNING THEN GOTO loop
$ SET MESSAGE 'file'
$ txt=F$MESSAGE(p1)
$ IF F$LOCATE("NOMSG",txt).GE.F$LENGTH(txt) THEN GOTO found
$ GOTO loop
$ found:
$ a=F$SEARCH(F$ENVIRONMENT("PROCEDURE")) ! Cancel search
$ WRITE SYS$OUTPUT "Message found in ''file'"
$ WRITE SYS$OUTPUT txt
$ SET MESSAGE'Oldmsg'
$ EXIT
$ NotFound:
$ WRITE SYS$OUTPUT "Message ''p1' not found"
$ SET MESSAGE'Oldmsg' SYS$MESSAGE:SYSMSG
$ EXIT
|