HP OpenVMS DCL Dictionary
 
 
 
ASSIGN
 
Creates a logical name and assigns an equivalence string, or a list of 
strings, to the specified logical name. If you specify an existing 
logical name, the new equivalence name replaces the existing 
equivalence name.
 
 
Format
ASSIGN equivalence-name[,...] logical-name[:]
  
 
Parameters
equivalence-name[,...]
Specifies a character string of 1 to 255 characters. Defines the 
equivalence name, usually a file specification, device name, or other 
logical name, to be associated with the logical name in the specified 
logical name table. If the string contains other than uppercase 
alphanumeric, dollar sign ($), or underscore (_) characters, enclose it 
in quotation marks (" "). Use two sets of quotation marks 
("" "") to denote an actual quotation mark within 
the string. Specifying more than one equivalence name for a logical 
name creates a search list. A logical name can have a maximum of 128 
equivalence names.
When you specify an equivalence name that will be used as a file 
specification, you must include the punctuation marks (colons (:), 
brackets ([]), and periods (.)) that would be required if the 
equivalence name were used directly as a file specification. Therefore, 
if you specify a device name as an equivalence name, terminate the 
device name with a colon.
 
The ASSIGN command allows you to assign the same logical name to more 
than one equivalence name. When you specify more than one equivalence 
name for a logical name, you create a search list. For more information 
on search lists, see the OpenVMS User's Manual.
 logical-name[:]
Specifies the logical name string, which is a character string 
containing up to 255 characters. You choose a logical name to represent 
the equivalence name in the specified logical name table.
If the string contains other than uppercase alphanumeric, dollar sign, 
or underscore characters, enclose it in quotation marks. Use two sets 
of quotation marks to denote an actual quotation mark. If you terminate 
the logical-name parameter with a colon, the system removes the colon 
before placing the name in a logical name table. (This differs from the 
DEFINE command, which saves the colon.) If the logical name is to be 
entered into the process directory (LNM$PROCESS_DIRECTORY) or system 
directory (LNM$SYSTEM_DIRECTORY) logical name tables, the name can have 
only 1 to 31 alphanumeric characters (including the dollar sign and 
underscore). If the logical name being entered into the process or 
system directory translates to a logical name table name, any 
alphabetic characters in the name should all be uppercase. By default, 
the logical name is placed in the process logical name table.
 
If the logical name contains any characters other than alphanumeric 
characters, the dollar sign, or the underscore, enclose the name in 
quotation marks. If the logical name contains quotation marks, enclose 
the name in quotation marks and use two sets of quotation marks in the 
places where you want one set of quotation marks to occur. Note that if 
you enclose a name in quotation marks, the case of alphabetic 
characters is preserved.
  
 
Description
The ASSIGN command creates an entry in a logical name table by defining 
a logical name to stand for one or more equivalence names. An 
equivalence name can be a device name, another logical name, a file 
specification, or any other string.
To specify the logical name table where you want to enter a logical 
name, use the /PROCESS, /JOB, /GROUP, /SYSTEM, or /TABLE qualifier. If 
you enter more than one of these qualifiers, only the last one entered 
is accepted. If you do not specify a table, the default is 
/TABLE=LNM$PROCESS (or /PROCESS).
 
To specify the access mode of the logical name you are creating, use 
the /USER_MODE, /SUPERVISOR_MODE, or /EXECUTIVE_MODE qualifier. If you 
enter more than one of these qualifiers, only the last one entered is 
accepted. If you do not specify an access mode, then a supervisor-mode 
name is created. You can create a logical name in the same mode as the 
table in which you are placing the name or in an outer mode. (User mode 
is the outermost mode; executive mode is the innermost mode.)
 
You can enter more than one logical name with the same name in the same 
logical name table, as long as each name has a different access mode. 
(However, if an existing logical name within a table has the NO_ALIAS 
attribute, you cannot use the same name to create a logical name in an 
outer mode in this table.)
 
If you create a logical name with the same name, in the same table, and 
in the same mode as an existing name, the new logical name assignment 
replaces the existing assignment.
 
You can also use the DEFINE command to create logical names. To delete 
a logical name from a table, use the DEASSIGN command.
 
 
  Note 
Avoid assigning a logical name that matches the file name of an 
executable image in SYS$SYSTEM:. Such an assignment will prohibit you 
from invoking that image. 
     | 
   
 
For additional information on creating and using logical names, see the 
OpenVMS User's Manual.
  
 
Qualifiers
/CLUSTER_SYSTEM
You must be signed in to the SYSTEM account or have SYSNAM 
(system logical name) or SYSPRV (system) privilege to use this 
qualifier.
Assigns a clusterwide logical name in the LNM$SYSCLUSTER table.
 /EXECUTIVE_MODE
Requires SYSNAM (system logical name) privilege.
Creates an executive-mode logical name. If you specify executive mode, 
but do not have SYSNAM privilege, a supervisor-mode logical name is 
created. The mode of the logical name must be the same as or external 
to (less privileged than) the mode of the table in which you are 
placing the name.
 /GROUP
Requires SYSPRV (system privilege) or GRPNAM (group logical 
name) privilege.
Places the logical name in the group logical name table. Other users 
who have the same group number in their user identification codes 
(UICs) can access the logical name. The /GROUP qualifier is synonymous 
with the /TABLE=LNM$GROUP qualifier.
 /JOB
Places the logical name in the jobwide logical name table. All 
processes within the same job tree as the process creating the logical 
name can access the logical name. The /JOB qualifier is synonymous with 
the /TABLE=LNM$JOB qualifier.
/LOG (default)
/NOLOG
Displays a message when a new logical name supersedes an existing name.
/NAME_ATTRIBUTES[=(keyword[,...])]
Specifies the attributes for a logical name. By default, no attributes 
are set. You can specify the following keywords for attributes:
  
    | 
      CONFINE
     | 
    
      Does not copy the logical name into a spawned subprocess; this keyword 
      is relevant only for logical names in a private table.
     | 
   
  
    | 
      NO_ALIAS
     | 
    
      Prohibits creation of logical names with the same name in an outer 
      (less privileged) access mode within the specified table. If another 
      logical name with the same name and an outer access mode already exists 
      in this table, the name is deleted.
     | 
   
 
If you specify only one keyword, you can omit the parentheses. Only the 
attributes you specify are set.
 /PROCESS (default)
Places the logical name in the process logical name table. The /PROCESS 
qualifier is synonymous with the /TABLE=LNM$PROCESS qualifier.
/SUPERVISOR_MODE (default)
Creates a supervisor-mode logical name in the specified table.
/SYSTEM
Requires SYSNAM (system logical name) or SYSPRV (system 
privilege) privilege.
Places the logical name in the system logical name table. All system 
users can access the logical name. The /SYSTEM qualifier is synonymous 
with the /TABLE=LNM$SYSTEM qualifier.
 
 /TABLE=name
Requires write (W) access to the table if the table is 
shareable. 
Specifies the logical name table in which the logical name is to be 
entered. You can use the /TABLE qualifier to specify a user-defined 
logical name table (created with the CREATE/NAME_TABLE command); to 
specify the process, job, group, or system logical name tables; or to 
specify the process or system logical name directory tables.
 
If you specify the table name using a logical name that has more than 
one translation, the logical name is placed in the first table found. 
For example, if you specify ASSIGN/TABLE=LNM$FILE_DEV and LNM$FILE_DEV 
is equated to LNM$PROCESS, LNM$JOB, LNM$GROUP, and LNM$SYSTEM, then the 
logical name is placed in LNM$PROCESS.
 
If you do not explicitly specify the /TABLE qualifier, the default is 
the /TABLE=LNM$PROCESS qualifier.
 /TRANSLATION_ATTRIBUTES[=(keyword[,...])]
Equivalence-name qualifier. 
Specifies attributes of the equivalence-name parameter. Possible 
keywords are as follows:
 
  
    | 
      CONCEALED
     | 
    
      Indicates that the equivalence string is the name of a concealed device.
       When a concealed device name is defined, the system displays the 
      logical name, rather than the equivalence string, in messages that 
      refer to the device. If you specified the CONCEALED attribute, then the 
      equivalence string must be a physical device name.
      | 
   
  
    | 
      TERMINAL
     | 
    
      Indicates that the equivalence string should not be translated 
      iteratively; logical name translation should terminate with the current 
      equivalence string.
     | 
   
 
If you specify only one keyword, you can omit the parentheses. Only the 
attributes you specify are set.
 
Note that different equivalence strings of the same logical name can 
have different translation attributes specified.
 /USER_MODE
Creates a user-mode logical name in the specified table.
If you specify a user-mode logical name in the process logical name 
table, that logical name is used for the execution of a single image 
only; user-mode entries are deleted from the logical name table when 
any image executing in the process exits; that is, after any DCL 
command that executes an image or user program completes execution. 
Also, user-mode logical names are automatically deleted when invoking 
and exiting a command procedure.
  
 
Examples
 
  
    | #1 | 
   
    
       
      
$ ASSIGN $DISK1:[CREMERS.MEMOS] MEMOSD
      
      
     | 
   
 
The ASSIGN command in this example equates the partial file 
specification $DISK1:[CREMERS.MEMOS] to the logical name MEMOSD.
  
  
    | #2 | 
   
    
       
      
$ ASSIGN/USER_MODE $DISK1:[FODDY.MEMOS]WATER.TXT TM1
      
      
     | 
   
 
The ASSIGN command in this example equates the logical name TM1 to a 
file specification. After the next image runs, the logical name is 
deassigned automatically.
  
  
    | #3 | 
   
    
       
      
$ ASSIGN XXX1:[HEROLD]  ED
$ PRINT  ED:TEST.DAT
Job 274 entered on queue SYS$PRINT
 
      
      
     | 
   
 
The ASSIGN command in this example associates the logical name ED with 
the directory name [HEROLD] on the disk XXX1. Subsequent references to 
the logical name ED result in the correspondence between the logical 
name ED and the disk and directory specified. The PRINT command queues 
a copy of the file XXX1:[HEROLD]TEST.DAT to the system printer.
  
  
    | #4 | 
   
    
       
      
$ ASSIGN YYY2:  TEMP:
$ SHOW LOGICAL TEMP
   "TEMP" = "YYY2:" (LNM$PROCESS_TABLE)
$ DEASSIGN TEMP
 
      
      
     | 
   
 
The ASSIGN command in this example equates the logical name TEMP to the 
device YYY2. TEMP is created in supervisor mode and placed in the 
process logical name table. The SHOW LOGICAL command verifies that the 
logical name assignment was made. Note that the logical name TEMP was 
terminated with a colon in the ASSIGN command, but that the command 
interpreter deleted the colon before placing the name in the logical 
name table. Thus, you can specify TEMP without a colon in the 
subsequent DEASSIGN command. You should omit the colon in the SHOW 
LOGICAL command (for example, SHOW LOGICAL TEMP).
  
  
    | #5 | 
   
    
       
      
$ MOUNT TTT1: MASTER TAPE
$ ASSIGN TAPE:NAMES.DAT PAYROLL
$ RUN PAYROLL
   .
   .
   .
 
      
      
     | 
   
 
The MOUNT command in this example establishes the logical name TAPE for 
the device TTT1, which has the volume labeled MASTER mounted on it. The 
ASSIGN command equates the logical name PAYROLL with the file named 
NAMES.DAT on the logical device TAPE. Thus, an OPEN request in a 
program referring to the logical name PAYROLL results in the 
correspondence between the logical name PAYROLL and the file NAMES.DAT 
on the tape whose volume label is MASTER.
  
  
    | #6 | 
   
    
       
      
$ CREATE/NAME_TABLE TABLE1
$ ASSIGN/TABLE=LNM$PROCESS_DIRECTORY TABLE1,-
_$ LNM$PROCESS,LNM$JOB,LNM$GROUP,LNM$SYSTEM LNM$FILE_DEV
$ ASSIGN/TABLE=TABLE1 -
_$ /TRANSLATION_ATTRIBUTES=CONCEALED  DKA1:  WORK_DISK
 
      
      
     | 
   
 
The CREATE/NAME_TABLE command in this example creates the process 
private logical name table TABLE1.
 
The first ASSIGN command ensures that TABLE1 is searched first in any 
logical name translation of a file specification or device name 
(because TABLE1 is the first item in the equivalence string for the 
logical name LNM$FILE_DEV, which determines the default search sequence 
of logical name tables whenever a device or file specification is 
translated).
 
The second ASSIGN command assigns the logical name WORK_DISK to the 
physical device DKA1, and places the name in TABLE1. The logical name 
has the concealed attribute. Therefore, the logical name WORK_DISK will 
be displayed in system messages.
  
  
    | #7 | 
   
    
       
      
$ ASSIGN/TABLE=LNM$PROCESS/TABLE=LNM$GROUP  DKA0:  SYSFILES
$ SHOW LOGICAL  SYSFILES
  "SYSFILES" = "DKA0:" (LNM$GROUP_000240)
 
      
      
     | 
   
 
The ASSIGN command in this example contains conflicting qualifiers. 
When you specify conflicting qualifiers, the ASSIGN command uses the 
last qualifier specified. The response from the SHOW LOGICAL command 
indicates that the name was placed in the group logical name table.
  
  
    | #8 | 
   
    
       
      
$ ASSIGN/TABLE=LNM$GROUP 'F$TRNLNM("SYS$COMMAND")' TERMINAL
%DCL-I-SUPERSEDE, previous value of TERMINAL has been superseded
 
      
      
     | 
   
 
The ASSIGN command in this example uses the lexical function F$TRNLNM 
to translate the logical name SYS$COMMAND and use the result as the 
equivalence name for the logical name TERMINAL. The message from the 
ASSIGN command indicates that an entry for the logical name TERMINAL 
already existed in the group logical name table, and that the new entry 
has replaced the previous one.
 
If this command is used in a LOGIN.COM file, the entry for TERMINAL 
will be redefined at the beginning of each terminal session. The 
current process and any subprocesses it creates can execute images that 
use the logical name TERMINAL to write messages to the current terminal 
device.
  
  
    | #9 | 
   
    
       
      
$ ASSIGN DALLAS::DMA1:  DATA
      
      
     | 
   
 
The ASSIGN command in this example associates the logical name DATA 
with the device specification DMA1 on remote node DALLAS. Subsequent 
references to the logical name DATA result in references to the disk on 
the remote node.
  
  
    | #10 | 
   
    
       
      
$ CREATE AVERAGE.COM
$ ASSIGN/USER_MODE SYS$COMMAND:  SYS$INPUT
$ EDIT/EDT AVERAGE.FOR
$ FORTRAN AVERAGE
$ LINK AVERAGE
$ RUN AVERAGE
87
80
90
9999
$ EXIT
[Ctrl/Z]
$ @AVERAGE.COM
 
      
      
     | 
   
 
The CREATE command in this example creates the command procedure 
AVERAGE.COM. Then the command procedure is executed.
 
The command procedure uses the ASSIGN command with the /USER_MODE 
qualifier to change temporarily the value of SYS$INPUT. When the EDT 
editor is invoked, it accepts input from the terminal. This allows you 
to create or modify the program AVERAGE.FOR interactively.
 
When you exit from EDT, SYS$INPUT is reassigned to its original value 
(the input stream provided by the command procedure). Thus, when the 
program AVERAGE.FOR is ready to accept input, it looks for that input 
in the command procedure.
  
  
 |