(PYVMS LOGO) Python on OpenVMS

(go to: table of contents, index, list of pyvms, prev: UAF_GET_USERNAMES, next: CRTL_OPEN)


CRTL_FROM_VMS - call decc$from_vms() routine


Calls the C RTL decc$from_vms() function to translate a file specification from OpenVMS format into Unix style.

Format:

    file_list = pyvms.crtl_from_vms (vms_filespec, action_routine, \
                                     wild_flag)
Returns:
file_list
List of files translated to Unix style. If this is a non-wildcard operation, then the list contains only one filename.
Arguments:
vms_filespec
File specification in OpenVMS format.
action_routine
A Python function that is called for each file processed. See the examples setion below. Return 1 to indicate continuation of wildcard processing; 0 to abort.

If the action routine is omitted, then an internal routine is used that appends the filename it it passed to 'file_list'.

wild_flag
If 0 (the default), then wildcards found in 'vms_filespec' are not expanded.

Examples:

>>> import pyvms

>>> file_list = pyvms.crtl_from_vms ('SYS$SYSTEM:DIRECTORY.EXE')
>>> file_list
['/SYS$SYSTEM/DIRECTORY.EXE']
>>>
>>> # wild_flag is 0 by default
>>> file_list = pyvms.crtl_from_vms ('SYS$SYSTEM:NET*.DAT')
>>> file_list
[]
>>>
>>> # the internal action_routine is used
>>> file_list = pyvms.crtl_from_vms ('SYS$SYSTEM:NET*.DAT', None, 1)
>>> for filespec in file_list:
...     print filespec
...
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_REMOTE.DAT.1
/SYS$SYSROOT/SYSEXE/NETOBJECT.DAT.1
>>>


>>> def action_routine (unix_filespec):
...   print unix_filespec
...   r = unix_filespec+'***'
...   return (1, r)
...
>>> # Note: the output is from the action_routine
>>> file_list = pyvms.crtl_from_vms \
...             ('SYS$SYSTEM:NET*.DAT', action_routine, 1)
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_REMOTE.DAT.1
/SYS$SYSROOT/SYSEXE/NETOBJECT.DAT.1
>>>
>>> # show contents of 'file_list'
>>> for filespec in file_list:
...     print filespec
...
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1***
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1***
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1***
/SYS$SYSROOT/SYSEXE/NETNODE_REMOTE.DAT.1***
/SYS$SYSROOT/SYSEXE/NETOBJECT.DAT.1***
>>>


>>> def action_routine (unix_filespec):
...    import string
...    print unix_filespec
...    r = unix_filespec+'***'
...    try:
...      pos = string.index (unix_filespec, 'LOCAL')
...      return_value = 0        # end loop
...    except ValueError:
...      return_value = 1        # continue
...    return (return_value, r)
...
>>> file_list = pyvms.crtl_from_vms \
...             ('SYS$SYSTEM:NET*.DAT', action_routine, 1)
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1
>>> for filespec in file_list:
...   print filespec
...
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1***
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1***
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1***
>>>


>>> def action_routine (unix_filespec):
...    import string
...    print unix_filespec
...    r = unix_filespec+'***'
...    try:
...      pos = string.index (unix_filespec, 'LOCAL')
...      r = None
...      return_value = 0        # end loop
...    except ValueError:
...      return_value = 1        # continue
...    return (return_value, r)
...
>>> file_list = pyvms.crtl_from_vms \
...             ('SYS$SYSTEM:NET*.DAT', action_routine, 1)
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1
/SYS$SYSROOT/SYSEXE/NETNODE_LOCAL.DAT.1
>>> for filespec in file_list:
...   print filespec
...
/SYS$SYSROOT/SYSEXE/NETCIRC.DAT.1***
/SYS$SYSROOT/SYSEXE/NETCONF.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLINE.DAT.1***
/SYS$SYSROOT/SYSEXE/NETLOGING.DAT.1***
None        < <-- the last item is always returned !
>>>

(go to: table of contents, index, list of pyvms, prev: UAF_GET_USERNAMES, next: CRTL_OPEN)

14-MAR-1999 ZE.