[comp.os.vms] System login command files - minor correction

LEICHTER-JERRY@YALE.ARPA (04/21/87)

    Many weeks back I posted a query about how people used the SYS$SYLOGIN
    logical name and the LGICMD qualifier in AUTHORIZE in conjunction with
    users' LOGIN.COM files.  I received quite a few interesting replies....
    
    First, though, this exercise revealed two erroneous (or at least misleading)
    points in the VMS documentation (System Manager's Reference Manual v4.4,
    page 5-7):
    
     1) Under the heading "User-specified command file", it says "If
        individual [i.e. LGICMD] or system [i.e. SYS$SYLOGIN] login command
        procedures are not implemented, the system looks for a command file
        called LOGIN in the user's login directory....The file name must
        be LOGIN."
    
        Aside from the fact that everyone I know calls such a file LOGIN.COM 
        instead of LOGIN., 

The documentation is correct - "file name" has a specific meaning in VMS:  In
the (partial) file SPECIFICATION "LOGIN.COM", the file NAME is "LOGIN"; ".COM"
is the file TYPE.  (Compare this to the "item" argument to F$PARSE().)  The
specification of the user's login file is produced by a parse analogous to:

		F$PARSE(<lgicmd>,"SYS$LOGIN:LOGIN.<type>;")

<type> is USUALLY "COM", but actually depends on the process's default CLI:
DCL uses "COM", VAX RSX "CMD", and DEC Shell the null type.

BTW, I'm not certain but I suspect similar parsing is done for SYS$SYLOGIN -
something like:

		F$PARSE("SYS$SYLOGIN",".<type>;")

On systems where users may have default CLI's other than DCL, trying to
execute a DCL SYS$SYLOGIN file would not work very well.  This way, if you
define SYS$SYLOGIN to be "SYS$SYSTEM:SYLOGIN" and provide, say, BOTH an
"SYLOGIN.COM" and an "SYLOGIN.CMD", both DCL and RSX users would be able
to execute a correct system-wide login file.

			   the condition is incorrectly stated.  A user's
        LOGIN.COM is executed even if SYS$SYLOGIN is defined (in which case
        the file defined by SYS$SYLOGIN is executed first, and the user's
        LOGIN.COM second).  On the other hand, defining the LGICMD qualifier
        within AUTHORIZE does indeed turn off automatic execution of the user's
        LOGIN.COM.

I suspect the language referring to "system login command procedures" is a
hold-over from pre-V4 systems, and was originally meant to refer not to
SYS$SYLOGIN, which didn't exist at the time, but to a system-wide login file
specified by the LGICMD parameter.
    
        One result of this is that if you want to have the system-wide login
        command file invoke the user's, you probably don't want to use the
        SYS$SYLOGIN mechanism to invoke the system-wide file:  the user's
        LOGIN.COM will be executed twice if you do.  Also note that if you
        invoke the user's file explicity from SYLOGIN, it will be executed
        *before* any file you specify with LGICMD.

If you really and truely want to execute the user's LOGIN.COM from within
SYS$SYLOGIN, simply set LGICMD to _NL:.
							-- Jerry
-------