It alters a file's revision date + time (RDT) to the
same value of its creation date + time (CDT).
Wildcards are possible. Files, however, must not be in use.
Error checks are minimal - it's just a demo ...
#$% RMS_CDT2RDT.PY
# -----
import pyvms, sys
import vms_lib, vms_sys
def cdt2rdt (filespec):
print "F:", filespec
fab = vmsobj_fab() # create RMS objects
xabdat = pyvms.vmsobj_xabdat()
xabrdt = pyvms.vmsobj_xabrdt()
fab.FNA = filespec # filename
fab.M_UPD = 1 # FAB$M_UPD in FAB$B_FAC
fab.XAB = xabdat # link XABDAT to FAB
xabdat.NXT = xabrdt # next XAB in chain
status = vms_sys.open (fab)
if ((status & 1) != 1):
print "O:", vms_sys.getmsg (status) [0]
return
xabrdt.Q_RDT = xabdat.Q_CDT # update RDT
status = vms_sys.close (fab)
if ((status & 1) != 1):
print "C:", vms_sys.getmsg (status) [0]
return
# -def cdt2rdt (filespec):
# -----
if (len (sys.argv) != 2):
print "? parameter 1 must be filespec"
sys.exit(1)
context = 0
while (1):
status, status_value, context, resultant_filespec = \
vms_lib.find_file (sys.argv[1], context, None, None, 0)
if (resultant_filespec != None):
cdt2rdt (resultant_filespec)
else:
if (status != 99018): # RMS$_NMF - no more files found
print status, status_value, context, resultant_filespec
break # abort while() loop
# -----
#%$
Example run:
$! create a test directory
$ set DEFAULT PYTHON_VMS:
$ set DEFAULT [.TMP]
$ create /directory [.CDT2RDT_TEST]
$ copy NLA0: [.CDT2RDT_TEST]TEST_1.DAT
$ copy NLA0: [.CDT2RDT_TEST]TEST_2.DAT
$ copy NLA0: [.CDT2RDT_TEST]TEST_3.DAT
$ wait 00:00:30
$!
$ set FILE /BACKUP [.CDT2RDT_TEST]TEST_%.DAT ! update RDT
$!
$ directory /date=(created,modified) [.CDT2RDT_TEST]*.DAT
Directory PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]
TEST_1.DAT;1 8-JUL-1999 09:56:32.18 8-JUL-1999 09:57:04.37
TEST_2.DAT;1 8-JUL-1999 09:56:32.85 8-JUL-1999 09:57:04.71
TEST_3.DAT;1 8-JUL-1999 09:56:33.49 8-JUL-1999 09:57:04.76
Total of 3 files.
$!
$! lock a file
$ open /read /write F [.CDT2RDT_TEST]TEST_2.DAT
$!
$ python CDT2RDT.PY [.CDT2RDT_TEST]*.DAT
F: PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]TEST_1.DAT;1
F: PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]TEST_2.DAT;1
O: %RMS-E-FLK, file currently locked by another user
F: PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]TEST_3.DAT;1
$!
$ close F
$!
$ directory /date=(created,modified) [.CDT2RDT_TEST]*.DAT
Directory PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]
TEST_1.DAT;1 8-JUL-1999 09:56:32.18 8-JUL-1999 09:56:32.18
TEST_2.DAT;1 8-JUL-1999 09:56:32.85 8-JUL-1999 09:57:41.59
TEST_3.DAT;1 8-JUL-1999 09:56:33.49 8-JUL-1999 09:56:33.49
Total of 3 files.
$!
$!
$ python CDT2RDT.PY [.CDT2RDT_TEST]TEST_2.DAT
F: PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]TEST_2.DAT;1
$ directory /date=(created,modified) [.CDT2RDT_TEST]*.DAT
Directory PYTHON_DISK:[PYTHON.PYTHON-1_5_2.VMS.TMP.CDT2RDT_TEST]
TEST_1.DAT;1 8-JUL-1999 09:56:32.18 8-JUL-1999 09:56:32.18
TEST_2.DAT;1 8-JUL-1999 09:56:32.85 8-JUL-1999 09:56:32.85
TEST_3.DAT;1 8-JUL-1999 09:56:33.49 8-JUL-1999 09:56:33.49
Total of 3 files.
$!
$!
$ set PROTECTION=(O:RWED) [.CDT2RDT_TEST]*.DAT;*, []CDT2RDT_TEST.DIR;*
$ delete [.CDT2RDT_TEST]*.DAT;*, []CDT2RDT_TEST.DIR;*
$!