(LOGO.JPG) Python for OpenVMS

(go to: table of contents, index, list of vms_sys, prev: TIMCON, next: VERIFY_PROXY)


TRNLNM - Translate Logical Name


Returns information about a logical name.

vms_sys.trnlnm() does _not_ raise an exception when the SYS$TRNLNM routine returns an error. You must check 'status' in the dictionary that is returned.

Format:

    dict = vms_sys.trnlnm ([attr] ,tabnam ,lognam \
                          ,[acmode] ,[itmlst])
Returns:
dict
A dictionary that has the following keys:
'status'
The condition value returned from SYS$TRNLNM.
'LNM$_name'
Any output items that have been specified in the item-list and that are supported by SYS$TRNLNM.

It is only put into the dictionary, when SYS$TRNLNM returns a success status.

Arguments:
attr
Attributes controlling the search for the logical name. See the system services reference manual for details. Bitmask values (LNM_M_name) are available in module 'vms_lnmdef'.
tabnam
Name of the table or name of a list of tables in which to search for the logical name.
lognam
Logical name about which information is to be returned.
acmode
Access mode to used in the translation. If 'None' is specified the outermost name is returned.

itmlst
Item list describing the information to be returned.
Examples:
>>> import vms_sys
>>> import vms_lnmdef


>>> def show_attr (l_attributes):
...   from vms_lnmdef import *
...   if (l_attributes & LNM_M_NO_ALIAS):
...     print 'LNM_M_NO_ALIAS'
...   if (l_attributes & LNM_M_CONFINE):
...     print 'LNM_M_CONFINE'
...   if (l_attributes & LNM_M_CRELOG):
...     print 'LNM_M_CRELOG'
...   if (l_attributes & LNM_M_TABLE):
...     print 'LNM_M_TABLE'
...   if (l_attributes & LNM_M_CONCEALED):
...     print 'LNM_M_CONCEALED'
...   if (l_attributes & LNM_M_TERMINAL):
...     print 'LNM_M_TERMINAL'
...   if (l_attributes & LNM_M_EXISTS):
...     print 'LNM_M_EXISTS'
...   if (l_attributes & LNM_M_SHAREABLE):
...     print 'LNM_M_SHAREABLE'
...   if (l_attributes & LNM_M_CREATE_IF):
...     print 'LNM_M_CREATE_IF'
... # - show_attr()
...
>>>

----------

>>> dict = vms_sys.trnlnm (0, 'LNM$JOB', 'SYS$LOGIN', None,
...                        (('LNM$_TABLE',None)     ,
...                         ('LNM$_STRING',None)    ,
...                         ('LNM$_ATTRIBUTES',None),
...                         ('LNM$_ACMODE',None)
...                        )
...                       )
>>>
>>> for k in dict.keys():
...   print k, dict.get(k)
...
LNM$_TABLE LNM$JOB_814D5680
LNM$_ATTRIBUTES 66560    # see below
LNM$_ACMODE 1            # 1 = PSL$C_EXEC
status 1
LNM$_STRING USER_HERE:[ZESSIN]
>>>
>>> l_attributes = dict.get('LNM$_ATTRIBUTES')
>>> show_attr (l_attributes)
LNM_M_EXISTS
LNM_M_SHAREABLE
>>>

$ show logical /full SYS$LOGIN
   "SYS$LOGIN" [exec] = "USER_HERE:[ZESSIN]" (LNM$JOB_814D5680)
$

----------

$ DEFINE LNM1 V1,V2,V3,V4,V5

>>> dict = vms_sys.trnlnm (0, 'LNM$PROCESS', 'LNM1', None,
...                        (('LNM$_MAX_INDEX',None),
...                        )
...                       )
>>> for k in dict.keys():
...   print k, dict.get(k)
...
LNM$_MAX_INDEX 4
status 1
>>>

>>> max_index = dict.get('LNM$_MAX_INDEX')
>>> for idx in range (max_index+1):
...   dict = vms_sys.trnlnm (0, 'LNM$PROCESS', 'LNM1', None,
...                          (('LNM$_INDEX',idx)  , # input-item !
...                           ('LNM$_STRING',None)  # output-item
...                          )
...                         )
...   status = dict.get('status')
...   if (status == 1): # 1 = SS$_NORMAL
...     print idx, dict.get('LNM$_STRING')
...   else:
...     vms_sys.getmsg (status)
...
0 V1
1 V2
2 V3
3 V4
4 V5
>>>

----------

$ SHOW LOGICAL /TABLE=LNM$SYSTEM_DIRECTORY LNM$FILE_DEV*

(LNM$SYSTEM_DIRECTORY)

  "LNM$FILE_DEV" [super] = "LNM$PROCESS"
        = "LNM$JOB"
        = "LNM$GROUP"
        = "LNM$SYSTEM"
        = "DECW$LOGICAL_NAMES"
  "LNM$FILE_DEV" [exec] = "LNM$SYSTEM"
$

>>> # by default the outermost (regarding processor-mode)
>>> #  logical name is translated
>>> dict = vms_sys.trnlnm (0, 'LNM$SYSTEM_DIRECTORY',
...                        'LNM$FILE_DEV', None,
...                        (('LNM$_TABLE',None)     ,
...                         ('LNM$_STRING',None)    ,
...                         ('LNM$_ATTRIBUTES',None),
...                         ('LNM$_ACMODE',None)    ,
...                         ('LNM$_MAX_INDEX',None)
...                        )
...                       )
>>> for k in dict.keys():
...   print k, dict.get(k)
...
LNM$_TABLE LNM$SYSTEM_DIRECTORY
LNM$_MAX_INDEX 4        # 5 equivalence names (0 to 4)
LNM$_ATTRIBUTES 66560   # see below
LNM$_ACMODE 2           # 2 = PSL$C_SUPER
status 1
LNM$_STRING LNM$PROCESS # at index 0
>>>
>>> l_attributes = dict.get('LNM$_ATTRIBUTES')
>>> show_attr (l_attributes)
LNM_M_EXISTS
LNM_M_SHAREABLE
>>>

-----

>>> # specify an explicit access mode
>>> PSL_C_EXEC = 1
>>> dict = vms_sys.trnlnm (0, 'LNM$SYSTEM_DIRECTORY',
...                        'LNM$FILE_DEV', PSL_C_EXEC,
...                        (('LNM$_TABLE',None)     ,
...                         ('LNM$_STRING',None)    ,
...                         ('LNM$_ATTRIBUTES',None),
...                         ('LNM$_ACMODE',None)    ,
...                         ('LNM$_MAX_INDEX',None)
...                        )
...                       )
>>> for k in dict.keys():
...   print k, dict.get(k)
...
LNM$_TABLE LNM$SYSTEM_DIRECTORY
LNM$_MAX_INDEX 0        # only one equivalence name
LNM$_ATTRIBUTES 66560   # see below
LNM$_ACMODE 1           # 1 = PSL$C_EXEC
status 1
LNM$_STRING LNM$SYSTEM
>>>

--------------------

>>> dict = vms_sys.trnlnm (0, 'LNM$PROCESS',
...                        'BAD_LNM', None,
...                        (('LNM$_STRING',None),
...                        )
...                       )
>>> for k in dict.keys():
...   print k, dict.get(k)
...
status 444
>>>
>>> status = dict.get('status')
>>> vms_sys.getmsg (status)
('%SYSTEM-F-NOLOGNAM, no logical name match', (0, 0, 0, 0))
>>>

@@ more examples for TRNLNM

(go to: table of contents, index, list of vms_sys, prev: TIMCON, next: VERIFY_PROXY)

29-NOV-1998 ZE.