The Question is:
I'm sure I've seen the answer to this question on your site before, but I can't
for the life of me find it. On the other hand, I may have imagined it, which
is happening with frightening regularity at the moment.
Anyway, I want to call the SET PASSWORD command from a captive command
procedure (DCL menu). When I run the DCL, it just gives me the prompt back
without appearing to do anything.
What's up? Is there a way to do this?
The Answer is :
It appears SYS$INPUT was not redirected to the terminal.
For I/O redirection and related information, please see topics
including (1569), (1696), (2335), (3160), (4520), (5753), (6534),
(7356), (7826), (8749), (8967) and likely other topics. Also
please see the OpenVMS User's Guide and available books on DCL
To execute any command within a command procedure and have the
input read from the interactive user and not from the next record
in the input file, you must redirect SYS$INPUT to SYS$COMMAND.
$ DEFINE/USER SYS$INPUT SYS$COMMAND
$ SET PASSWORD
The /USER means the logical name definition is temporary and will
remain only until the next image exit occurs.
You could also provide your own tool to reset the password using the
sys$getuai, sys$hash_password and sys$setuai calls, or -- since the
user is captive -- you could also use AUTHORIZE commands directly.
Related topics include (1461), (1475), (1645), (2751), (2938),
(3233), (3883), (5258), (5508), (5782), (6328), (8753), (9034),
and others. General password discussions are included in various
topics, including particularly (4612).