RDT2CDT.TXT						08-JUL-1999 ZE.

This example demonstrates the use of several RMS blocks.

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 ...

# ----- ----- RDT2CDT.PY
import pyvms, sys, vms_lib, vms_sys

def cdt2rdt (filespec):
  print 'F:', filespec
  fab    = pyvms.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

# ----- ----- RDT2CDT.PY

Example run:

$! create a test directory
$ create /directory [.RDT2CDT_TEST]
$ copy NLA0: [.RDT2CDT_TEST]TEST_1.DAT
$ copy NLA0: [.RDT2CDT_TEST]TEST_2.DAT
$ copy NLA0: [.RDT2CDT_TEST]TEST_3.DAT
$ wait 00:00:30
$!
$ set FILE /BACKUP [.RDT2CDT_TEST]TEST_%.DAT	! update RDT
$!
$ directory /date=(created,modified) [.RDT2CDT_TEST]*.DAT

Directory DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_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 [.RDT2CDT_TEST]TEST_2.DAT
$!
$ python RDT2CDT.PY [.RDT2CDT_TEST]*.DAT
F: DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_TEST]TEST_1.DAT;1
F: DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_TEST]TEST_2.DAT;1
O: %RMS-E-FLK, file currently locked by another user
F: DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_TEST]TEST_3.DAT;1
$!
$ close F
$!
$ directory /date=(created,modified) [.RDT2CDT_TEST]*.DAT

Directory DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_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  RDT2CDT.PY  [.RDT2CDT_TEST]TEST_2.DAT
F: DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_TEST]TEST_2.DAT;1
$ directory /date=(created,modified) [.RDT2CDT_TEST]*.DAT

Directory DKA100:[PYTHON.PYTHON-1_5_2.VMS.DEMO.RMS.RDT2CDT_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) [.RDT2CDT_TEST]*.DAT;*, []RDT2CDT_TEST.DIR;*
$ delete [.RDT2CDT_TEST]*.DAT;*, []RDT2CDT_TEST.DIR;*
$!
