The INQUIRE command performs symbol substitution on input, which can be
misused to break the COM-file.
Problem 1:
$ INQUIRE FNM "File"
'F$VERIFY(1)' is equivalent to $ SET VERIFY
Problem 2:
$ INQUIRE FNM "File"
'F$PID(SET)' and
'F$CSID(SET)' and
'F$CONTEXT("PROCESS",SET,"NODENAME","*","EQL")'
are equivalent to $ SET=number
(IF can also be used instead of SET)
Solution:
replace
$ INQUIRE FNM "File"
with
$ READ/PROMPT="File: " SYS$COMMAND FNM
Symbol substitutions as parameters can also be used to gain control.
Problem:
$ READ/PROMPT="File: " SYS$COMMAND FNM
$ TYPE 'FNM'
@TT: + NLA0: + any DCL command will TYPE NLA0: and execute any DCL command
Solution:
replace
$ TYPE 'FNM'
with
$ TYPE &FNM