1 FILE FILE is a utility for modifying file attributes. FILE DOES NOT convert a file. FILE changes characteristics of the file, and thus VMS' view of the file. FILE can be used simply to view the current characteristics of a file, or it can be used to change any of the modifiable characteristics. This utility can be VERY dangerous, and should only be used if you have a good understanding of RMS. Care should be taken when using this utility. While it doesn't actually change the file itself, you might consider using a backup copy of the file. The first thing you should do is to use FILE/OUTPUT=output to generate a listing of the current characteristics of the file. In this way, you will be able to return the file to its original state. 2 Examples One common use of FILE, is to 'coerce' a file into being a Fixed 512 byte file, to upload/download the file via kermit. For example, given a saveset A.SAV, you could do the following: $ FILE/OUTPUT=A.FIX A.SAV/RECORD_SIZE=512/TYPE=FIXED You could then transfer the two files A.FIX and A.SAV using Kermit (it would take two transfers, A.FIX with 'set file type text', and A.SAV using 'set file type fixed') To turn the file back into its original useable self, you could then do: @A.FIX This would cause the originally saved characteristics to be put back on the file. Another common use is to set the Fortran carriage control attribute so that a file can be printed with fortran carriage control, this can be done as follows: $ FILE/OUTPUT=OLD.TMP NETMONTH.* - _$ /ATTRIBUTES=(FORTRANCC,NOIMPLIEDCC,NOPRINTCC) 2 parameters FILE takes one parameter, a filename, or list of filenames. The filenames can be wildcarded. 2 qualifiers Most of the qualifiers are "positional". That means that you can either place the qualifier at the beginning of the command line, or you can place it after each filespec given. If you place it after a filespec, the qualifier only affects that specific file (or files, if you use wildcards). For example, to "enter" multiple files into a directory, you could use: $ FILE X.X/FID=(xxx,yy,zz),Z.Z/FID=(xxx.yy.zz) /OUTPUT /OUTPUT[=filename] This qualifier causes the characteristics of the file to be displayed. Note that if you are also changing characteristics the displayed characteristics are the original characteristics. You can have the output placed in a file, by specifying a file name in the OUTPUT clause. This is usefull for restoring a file to its original state. Note that the only characteristic not displayed is the OWNER field. /EXACT /[NO]EXACT When used with /OUTPUT, this qualifier determines wether a complete file spec is displayed (/EXACT) or wether only the filename and filetype will be displayed (/NOEXACT). The default is /NOEXACT. /FID You may use this qualifier to specify the file id of a file to enter, with the name passed on the command line. For instance: $ FILE GARBAGE.SPOOLED/FID=(1234,56,0) This will enter the file specified by the file id (1234,56,0) into your current directory with a name of GARBAGE.SPOOLED. You may at this point do other things to the file (such as make a backup copy). The original intent behind this was to be able to recover temporary spool files (which don't get created in any directory, and are created "delete on close", thus having the "marked_for_delete" flag set). /ATTRIBUTES This qualifier determines the record attributes. You may enter a list of (negatable) attributes: [NO]FORTRANCC - Fortran carriage control [NO]IMPLIEDCC - implied carriage control [NO]PRINTCC - print file carriage control [NO]SPAN - records can span blocks /CHARACTERISTICS This qualifier determines the file characteristics. You may enter a list of (negatable) items: [NO]ACL_CORRUPT - File's ACL is corrupt [NO]BACKUP - File is to be backed up [NO]BEST_TRY_CONTIGUOUS - Keep file as contiguous as possible [NO]CHARGE - File space is charged against owner [NO]CONTIGUOUS - File is contiguous [NO]DIRECTORY - File is a directory [NO]ERASE_ON_DELETE - Erase contents of file before deletion [NO]FILE_CORRUPT - File contains bad blocks [NO]LOCKED - File is deaccess-locked [NO]MARKED_FOR_DELETE - File is marked for deletion [NO]READ_VERIFY - Verify all read operations [NO]SPOOL - File is an intermediate spool file [NO]WRITE_BACK - File may be write-back cached [NO]WRITE_VERIFY - Verify all write operations Note that not all of these items are really changeable. They are merely included for completeness sake. For instance, you can not set the CONTIGUOUS flag, nor clear the MARKED_FOR_DELETE flag apparently. /PROTECTION This qualifier determines the protection of the file. A protection is specified in the same manner as the DCL command SET FILE/PROTECTION. /OWNER This qualifier determines the owner of the file. Any valid UIC format will be accepted. There is no support for /OWNER=PARENT however. This requires privilege. Note that no output is produced for the OWNER field when you use /OUTPUT. I felt that this would be a hindrance to the general usage of /OUTPUT. /ORGANIZATION This qualifier determines the file organization. You must enter one of: DIRECT INDEXED RELATIVE SEQUENTIAL /TYPE This qualifier determines the record type. You must enter one of: FIXED - fixed record type VARIABLE - variable record type VFC - variable + fixed control STREAM - RMS-11 (DEC traditional) stream format LFSTREAM - LF-terminated stream format CRSTREAM - CR-terminated stream format UNDEFINED - undefined record type /BUCKET_SIZE This qualifier determines the bucket size. /DEFAULT_EXTEND_QUANTITY This qualifier determines the default extend quantity. /END_OF_FILE_BLOCK This qualifier determines the end of file block. /FIRST_FREE_BYTE This qualifier determines the first free byte in the end of file block. /HIGHEST_ALLOCATED_BLOCK This qualifier determines the highest allocated block. /GLOBAL_BUFFER_COUNT This qualifier determines the global buffer count. /JOURNAL This qulifier determines the type of journaling enabled on the file. you must enter one of: [NO]JOURNAL - this is a journal file [NO]AIJNL - enable after image journal [NO]ATJNL - enable audit trail journal [NO]BIJNL - enable before image journal [NO]RUJNL - enable recovery unit journal [NO]NEVER_RU - file is never accessible in recovery unit [NO]ONLY_RU - file is only accessible in recovery unit /MAXIMUM_RECORD_SIZE This qualifier determines the maximum record size. /RECORD_SIZE This qualifier determines the record size. /DIRECTORY_VERSION_LIMIT This qualifier allows you to set the default number of allowable versions of file. This is applicable only to directories. Note that 32767 is equivalent to 0, which is equivalent to "unlimited". This is equivalent to the command: $ SET DIRECTORY/VERSION=n. /VERSION_LIMIT This qualifier allows you to set the number of allowable versions of a file. Note that 32767 is equivalent to 0, or No Limit, so to say. This is equivalent to the command: $ SET FILE/VERSION=n. /VFC_SIZE This qualifier allows you to set the vcf size. /CREATION_DATE /[NO]CREATION_DATE This qualifier allows you to set (or clear) the creation date. /REVISION_DATE /[NO]REVISION_DATE This qualifier allows you to set (or clear) the revision date. /EXPIRATION_DATE /[NO]EXPIRATION_DATE This qualifier allows you to set (or clear) the expiration date. /BACKUP_DATE /[NO]BACKUP_DATE This qualifier allows you to set (or clear) the backup date. /NUMBER_OF_REVISIONS This qualifier allows you to set the number of revisions.