Thomas R Wyant_III wrote:

"Craig A. Berry" <[EMAIL PROTECTED]> wrote on 08/25/2004 11:13:57 PM:


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."


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.

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.



Reply via email to