HP OpenVMS Systems

ask the wizard
Content starts here

DCL to pack file version numbers?

» close window

The Question is:

 
I know that file version numbers range from 1 to 32767. What I would like to
be able to do, is take a filename that has many version, remove those not
required (either by purge or delete) and then re number the remaining files
from version 1 upwards.
Preferably in a DCL command procedure.
If you have heard of such a procedure please either email it to me or tell
me where it could be obtianed from.
Thanks in advance. Donald
 
 


The Answer is :

 
  Using a temporary directory or a temporary name, you can accomplish
  what you desire through the use of a wildcard RENAME to a specific
  -- yet wild-carded -- target specification.  (In the following example
  commands, the use of the ";" delimiter is critical!)
 
    $ RENAME shuffle.dat;* [.TMP];  	! From high to low, into 1 to oldest
    $ RENAME [.TMP]shuffle.dat;* [];	! From 1 to old, into 1 to latest
 
  Alternatively, if you can use PURGE/KEEP=n, you can use a command sequence
  similar to the following:
 
    $ PURGE/KEEP=3 *.*
    $ RENAME *.*;-2 *.*;1
    $ RENAME *.*;-1 *.*;2
    $ RENAME *.*;0  *.*;3
 
  Note that the RENAME command can fail if there are less than the required
  number of versions, thus the use of SET NOON or similar is recommended
  or (better) the use of a conditional using f$search() to select when the
  RENAME should be performed:
 
    $ IF F$SEARCH("*.*;-2",1) .NES. "" then RENAME *.*;-2 *.*;1
 

answer written or last revised on ( 21-JUN-1999 )

» close window