Thomas R Wyant_III wrote:
"Craig A. Berry" <[EMAIL PROTECTED]> wrote on 08/25/2004 11:13:57 PM:There are a few standard cures for this type of situation. The first would be to define a symbol to invoke the command or at least to make sure that the base command will be invoked with no options. DCL does not translate symbols iteratively so '$ DIRECTORY = "DIRECTORY"' would make sure that no extra options are being picked up by an external symbol definition.
I finally did the "test_verbose=1". What happened was that I had defined global symbol "D*IRECTORY == "DIRECTORY/DATE/SIZE=ALL". VMS::FindFile's test works by comparing its results to those of a spawned "DIRECTORY/NOHEAD/NOTRAIL/COLUMNS=1", so it failed when run under my username. The login.com for the system account does not mess with the "dir" command, so the test doesn't fail there. To badly misquote Mae West: "Privilige had nothin' to do with it."
Another option is to take advantage of the fact that DCL only looks at the first four characters of a verb when parsing. You could use the first four characters followed by an underscore to make sure the unmodified command is executed. Something like '$ DIRE_/NOHEAD/NOTRAIL/COLUMNS=1'.
The other way I know to work around this is to define a blank symbol to use as a prefix for all commands. Something like this:
$ REALLY = "" $ REALLY DIRECTORY/NOHEAD/NOTRAIL/COLUMNS=1
You can also play games with SET SCOPE.
open IN, "directory/nohead/notrail/column=1 []*.*; |" || die "Couldn't open pipe\n";
The easiest way to fix this would probably be the second option above.