MCGEE@NUACC.ACNS.NWU.EDU (Randy McGee) (05/26/88)
I received the following query privately and thought that it might be of general interest to the list. > Date: Wed, 18 May 88 19:46 PDT > From: SUE@UWAV1.ACS.WASHINGTON.EDU > Subject: HELP MR. WIZARD.... > To: MCGEE@nuacc.acns.nwu.edu > > DEAR MR. (VAX) WIZARD: > > SINCE YOU WERE SO GOOD IN ELUCIDATING THE DIFFERENCE BETWEEN THE > ASSIGN AND DEFINE DCL COMMANDS, I THOUGHT YOU SURELY WOULD BE THE ONE TO > ANSWER MY DCL QUESTION. > > I HAVE USED USED ASSIGN/DEFINE/USER_MODE WITHIN COM FILES IN THE PAST > TO CAPTURE OUTPUT OF DCL COMMAND AND ERROR MESSAGES, AND THEY HAVE NEVER > FAILED ME BEFORE. > RECENTLY, I DISCOVERED TO MY SUPRISE THAT RE-DEFINING SYS$OUTPUT BY THIS > METHOD WILL NOT WORK FOR "SHOW SYMBOL" AND "SHOW TIME". > I FINALLY MANAGED TO MAKE IT WORK BY USING ASSIGN/DEFINE WITHOUT > THE "USER_MODE" QUALIFIER. (OF COURSE, THEN I HAD TO EXPLICITLY DEASSIGN > SYS$OUTPUT BEFORE THE COM FILE EXITED, UNLIKE THE USER_MODE OPTION.) > > MY QUESTION IS WHY??? HOW COME I CAN NOT USE THE "USER_MODE" QUALIFIER > IN "ASSIGN/DEFINE SYS$OUTPUT" TO CAPTURE TO FILE THE OUTPUT OF "SHOW SYMBOL" > AND "SHOW TIME", WHEN IT WORKS JUST FINE FOR ALL OTHER DCL COMMANDS???? > > HOW COME "ASSIGN/DEFINE" BY ITSELF WORKS WHEN ASSIGN/DEFINE/USER FAILS??? > > THANX, MR. WIZARD The reason is that some commands are executed internaly by DCL and as such do not invoke an image. As a result, only images defined at the supervisor mode level or higher are seen by DCL. DEC could probably fix this if they wanted, but then they'd have to delete the user mode logical name by hand since there is no image run down to do this. The best place I've seen this documented is on page 3-10 of the V4.0 "Guide to Using DCL and Command Procedures on VAX/VMS" (order no AA-Y501A-TE) (the DCL dictionary and the DCL concepts manual barely even mention it): "You cannot use the DEFINE/USER_MODE command to redirect output from DCL commands that are executed within the command interpreter. However, you can redirect output from these commands by using the DEFINE command to redefine SYS$OUTPUT, and then using the DEASSIGN command to delete the definition when you are through with it. For example: $ DEFINE SYS$OUTPUT TIME.DAT $ SHOW TIME $ DEASSIGN SYS$OUTPUT After you deassign SYS$OUTPUT, its default value is restored. Table 3-1 lists the commands that are executed within the command interpreter. Table 3-1 Commands performed Within the Command Interpreter = ALLOCATE ASSIGN ATTACH CANCEL CLOSE CONNECT CONTINUE CREATE/LOGICAL_NAME_TABLE DEALLOCATE DEASSIGN DEBUG DECK DEFINE DEFINE/KEY DELETE/KEY DELETE/SYMBOL DEPOSIT DISCONNECT EOD EXAMINE EXIT GOTO IF INQUIRE ON OPEN READ RECALL SET CONTROL SET DEFAULT SET KEY SET ON SET OUTPUT_RATE SET PROMPT SET PROTECTION/DEFAULT SET UIC SET VERIFY SHOW DEFAULT SHOW KEY SHOW QUOTA SHOW PROTECTION SHOW STATUS SHOW SYMBOL SHOW TIME SHOW TRANSLATION SPAWN STOP WAIT WRITE" Hope this helps, V(AX/VMS W)izard Randy McGee (MAGOO) <mcgee@nuacc.acns.nwu.edu> Phone: (312) 491 4079 Academic Computing and Network Services USPost: 2129 Sheridan Road Northwestern University Evanston, IL 60208 P.S. I ask that you not send personal queries to me as I do not always have time to answer them. Please send them to INFO-VAX instead. You may even get a quicker or better answer from someone else before I can get to it.
MCGEE%NUACC.ACNS.NWU.EDU%ACCuVAX.NWU.EDU%KL.SRI.COM%lbl%sfsu1.hepnet@LBL.GOV (05/28/88)
Received: from KL.SRI.COM by LBL.Gov with INTERNET ;
Fri, 27 May 88 02:54:17 PDT
Received: from eecs.nwu.edu by KL.SRI.COM with TCP; Wed 25 May 88 12:40:32-PDT
Received: from accuvax.nwu.edu by gamma.eecs.nwu.edu id aa01673;
25 May 88 12:18 CDT
Received: from nuacc.acns.nwu.edu by accuvax.NWU.Edu id aa00192;
25 May 88 12:14 CDT
Date: Wed, 25 May 88 12:15 CDT
From: Randy McGee <MCGEE@NUACC.ACNS.NWU.Edu>
Subject: Why DEFINE/USER_MODE SYS$OUTPUT... doesn't always work
To: INFO-VAX@kl.sri.com, SUE@toby.acs.washington.edu
X-VMS-To: INFO-VAX,IN%"SUE@UWAV1.ACS.WASHINGTON.EDU"
Message-ID: <8805251214.aa00192@accuvax.NWU.Edu>
I received the following query privately and thought that it might be of
general interest to the list.
> Date: Wed, 18 May 88 19:46 PDT
> From: SUE@UWAV1.ACS.WASHINGTON.EDU
> Subject: HELP MR. WIZARD....
> To: MCGEE@nuacc.acns.nwu.edu
>
> DEAR MR. (VAX) WIZARD:
>
> SINCE YOU WERE SO GOOD IN ELUCIDATING THE DIFFERENCE BETWEEN THE
> ASSIGN AND DEFINE DCL COMMANDS, I THOUGHT YOU SURELY WOULD BE THE ONE TO
> ANSWER MY DCL QUESTION.
>
> I HAVE USED USED ASSIGN/DEFINE/USER_MODE WITHIN COM FILES IN THE PAST
> TO CAPTURE OUTPUT OF DCL COMMAND AND ERROR MESSAGES, AND THEY HAVE NEVER
> FAILED ME BEFORE.
> RECENTLY, I DISCOVERED TO MY SUPRISE THAT RE-DEFINING SYS$OUTPUT BY THIS
> METHOD WILL NOT WORK FOR "SHOW SYMBOL" AND "SHOW TIME".
> I FINALLY MANAGED TO MAKE IT WORK BY USING ASSIGN/DEFINE WITHOUT
> THE "USER_MODE" QUALIFIER. (OF COURSE, THEN I HAD TO EXPLICITLY DEASSIGN
> SYS$OUTPUT BEFORE THE COM FILE EXITED, UNLIKE THE USER_MODE OPTION.)
>
> MY QUESTION IS WHY??? HOW COME I CAN NOT USE THE "USER_MODE" QUALIFIER
> IN "ASSIGN/DEFINE SYS$OUTPUT" TO CAPTURE TO FILE THE OUTPUT OF "SHOW SYMBOL"
> AND "SHOW TIME", WHEN IT WORKS JUST FINE FOR ALL OTHER DCL COMMANDS????
>
> HOW COME "ASSIGN/DEFINE" BY ITSELF WORKS WHEN ASSIGN/DEFINE/USER FAILS???
>
> THANX, MR. WIZARD
The reason is that some commands are executed internaly by DCL and as such do
not invoke an image. As a result, only images defined at the supervisor mode
level or higher are seen by DCL. DEC could probably fix this if they wanted,
but then they'd have to delete the user mode logical name by hand since there
is no image run down to do this.
The best place I've seen this documented is on page 3-10 of the V4.0 "Guide to
Using DCL and Command Procedures on VAX/VMS" (order no AA-Y501A-TE) (the DCL
dictionary and the DCL concepts manual barely even mention it):
"You cannot use the DEFINE/USER_MODE command to redirect output from DCL
commands that are executed within the command interpreter. However, you
can redirect output from these commands by using the DEFINE command to
redefine SYS$OUTPUT, and then using the DEASSIGN command to delete the
definition when you are through with it. For example:
$ DEFINE SYS$OUTPUT TIME.DAT
$ SHOW TIME
$ DEASSIGN SYS$OUTPUT
After you deassign SYS$OUTPUT, its default value is restored. Table 3-1
lists the commands that are executed within the command interpreter.
Table 3-1 Commands performed Within the Command Interpreter
= ALLOCATE
ASSIGN ATTACH
CANCEL CLOSE
CONNECT CONTINUE
CREATE/LOGICAL_NAME_TABLE DEALLOCATE
DEASSIGN DEBUG
DECK DEFINE
DEFINE/KEY DELETE/KEY
DELETE/SYMBOL DEPOSIT
DISCONNECT EOD
EXAMINE EXIT
GOTO IF
INQUIRE ON
OPEN READ
RECALL SET CONTROL
SET DEFAULT SET KEY
SET ON SET OUTPUT_RATE
SET PROMPT SET PROTECTION/DEFAULT
SET UIC SET VERIFY
SHOW DEFAULT SHOW KEY
SHOW QUOTA SHOW PROTECTION
SHOW STATUS SHOW SYMBOL
SHOW TIME SHOW TRANSLATION
SPAWN STOP
WAIT WRITE"
Hope this helps,
V(AX/VMS W)izard
Randy McGee (MAGOO) <mcgee@nuacc.acns.nwu.edu> Phone: (312) 491 4079
Academic Computing and Network Services USPost: 2129 Sheridan Road
Northwestern University Evanston, IL 60208
P.S. I ask that you not send personal queries to me as I do not always have
time to answer them. Please send them to INFO-VAX instead. You may
even get a quicker or better answer from someone else before I can get
to it.