$! ................... Cut between dotted lines and save. ................... $!........................................................................... $! VAX/VMS archive file created by VMS_SHARE V06.10 7-FEB-1989. $! $! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from $! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au). $! $! To unpack, simply save, concatinate all parts into one file and $! execute (@) that file. $! $! This archive was created by user TIHOR (Stephen Tihor, NYU [repackager]) $! on 16-MAY-1989 00:11:45.11. $! $! It contains the following 15 files: $! AAAREADME.TXT $! ATRDEF.H $! C.OPT $! CLD.H $! COMPILE.COM $! FATDEF.H $! FCHDEF.H $! FIBDEF.H $! FILE.MSG $! FJNDEF.H $! IODEF.H $! MAKEFILE. $! MODATT.C $! MODATT.CLD $! MODATT.RNH $! $!============================================================================ $ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL ) $ VERSION = F$GETSYI( "VERSION" ) $ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK $ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", - "VMS_SHARE V06.10 7-FEB-1989 requires VMS V4.4 or higher." $ EXIT 44 ! SS$_ABORT $VERSION_OK: $ GOTO START $! $UNPACK_FILE: $ WRITE SYS$OUTPUT "Creating ''FILE_IS'" $ DEFINE/USER_MODE SYS$OUTPUT NL: $ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION - VMS_SHARE_DUMMY.DUMMY b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) ) ; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE , b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors := 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN & "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION ( BEGINNING_OF( b_part ) ); LOOP EXITIF SEARCH( SPAN( ' ' )@r_trail & LINE_END, FORWARD) = 0; POSITION( r_trail ); ERASE( r_trail ); ENDLOOP ; POSITION( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK ( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 ) ; IF s_x = '+' THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF ; ENDIF; IF s_x = '-' THEN r_skip := SEARCH( pat_end, FORWARD, EXACT ) ; IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip := MARK( NONE ); r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip <> 0 THEN POSITION( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET ) ; MOVE_VERTICAL( 1 ); MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part ) ); ENDIF; ERASE( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF ; IF s_x = 'V' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE ; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1 ; MOVE_VERTICAL( 1 ); ENDIF; IF s_x = 'X' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF ; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> '' THEN i_errors := i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT ( "The following line could not be unpacked properly:" ); SPLIT_LINE ; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL ( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH ( "`", FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER ( 1 ); COPY_TEXT( ASCII( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDLOOP ; IF i_errors = 0 THEN SET( NO_WRITE, b_errors, ON ); ELSE POSITION ( BEGINNING_OF( b_errors ) ); COPY_TEXT( FAO ( "The following !UL errors were detected while unpacking !AS", i_errors , s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors, "SYS$COMMAND" ) ; ENDIF; EXIT; $ DELETE VMS_SHARE_DUMMY.DUMMY;* $ CHECKSUM 'FILE_IS $ WRITE SYS$OUTPUT " CHECKSUM ", - F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!!,passed." ) $ RETURN $! $START: $ FILE_IS = "AAAREADME.TXT" $ CHECKSUM_IS = 1896488417 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X MODATT is a utility for modifying file attributes. X `032 X MODATT DOES NOT convert a file. MODATT changes characteristics of Xthe file, and thus VMS' view of the file. MODATT can be used simply to view Xthe current characteristics of a file, or it can be used to change ANY of Xthe changeable characteristics. This utility can be VERY dangerous, and Xshould only be used if you have a good understanding of RMS. Care should Xbe taken when using this utility. While it doesn't actually change the file Xitself, you might consider using a backup copy of the file. X `032 XTo use: X Either edit MODATT.CLD so that the IMAGE clause points to where Xyou are storing the image, or define a logical name EXE$DIR to point to Xwhere you are storing the image. Then do SET COMMAND MODATT. You will then Xbe able to use the MODATT command. X `032 XFiles in this directory: X C.OPT - used for linking X `032 X ATRDEF.H X CLD.H X FATDEF.H X FCHDEF.H - Header files for MODATT program X FIBDEF.H X FJNDEF.H X IODEF.H X `032 X MODATT.C - source to MODATT program X MODATT.CLD - command definition for MODATT X MODATT.EXE - executable of MODATT program X MODATT.OBJ - Object code for MODATT (compiled /DEBUG) X MODATT.RNH - runoff version of help file, make local modifications X to this file, the use RUNOFF MODATT.RNH, or, if you have X MAKE, you should be able to say MAKE HELP X MAKEFILE. - Makefile for those of you with MAKE (a must have item) $ GOSUB UNPACK_FILE $ FILE_IS = "ATRDEF.H" $ CHECKSUM_IS = 743836665 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define ATR$C_UCHAR 3 X#define ATR$S_UCHAR 4 X#define ATR$C_RECATTR 4 X#define ATR$S_RECATTR 32 X#define ATR$C_FILNAM 5 X#define ATR$S_FILNAM 6 X#define ATR$C_FILTYP 6 X#define ATR$S_FILTYP 2 X#define ATR$C_FILVER 7 X#define ATR$S_FILVER 2 X#define ATR$C_EXPDAT 8 X#define ATR$S_EXPDAT 7 X#define ATR$C_STATBLK 9 X#define ATR$S_STATBLK 32 X#define ATR$C_HEADER 10 X#define ATR$S_HEADER 512 X#define ATR$C_BLOCKSIZE 11 X#define ATR$S_BLOCKSIZE 2 X#define ATR$C_USERLABEL 12 X#define ATR$S_USERLABEL 80 X#define ATR$C_ASCDATES 13 X#define ATR$S_ASCDATES 35 X#define ATR$C_ALCONTROL 14 X#define ATR$S_ALCONTROL 14 X#define ATR$C_ENDLBLAST 15 X#define ATR$S_ENDLBLAST 4 X#define ATR$C_ASCNAME 16 X#define ATR$S_ASCNAME 86 X#define ATR$C_CREDATE 17 X#define ATR$S_CREDATE 8 X#define ATR$C_REVDATE 18 X#define ATR$S_REVDATE 8 X#define ATR$C_EXPDATE 19 X#define ATR$S_EXPDATE 8 X#define ATR$C_BAKDATE 20 X#define ATR$S_BAKDATE 8 X#define ATR$C_UIC 21 X#define ATR$S_UIC 4 X#define ATR$C_FPRO 22 X#define ATR$S_FPRO 2 X#define ATR$C_RPRO 23 X#define ATR$S_RPRO 2 X#define ATR$C_ACLEVEL 24 X#define ATR$S_ACLEVEL 1 X#define ATR$C_SEMASK 25 X#define ATR$S_SEMASK 8 X#define ATR$C_UIC_RO 26 X#define ATR$S_UIC_RO 4 X#define ATR$C_DIRSEQ 27 X#define ATR$S_DIRSEQ 2 X#define ATR$C_BACKLINK 28 X#define ATR$S_BACKLINK 6 X#define ATR$C_JOURNAL 29 X#define ATR$S_JOURNAL 1 X#define ATR$C_HDR1_ACC 30 X#define ATR$S_HDR1_ACC 1 X#define ATR$C_ADDACLENT 31 X#define ATR$S_ADDACLENT 255 X#define ATR$C_DELACLENT 32 X#define ATR$S_DELACLENT 255 X#define ATR$C_MODACLENT 33 X#define ATR$S_MODACLENT 255 X#define ATR$C_FNDACLENT 34 X#define ATR$S_FNDACLENT 255 X#define ATR$C_FNDACLTYP 35 X#define ATR$S_FNDACLTYP 255 X#define ATR$C_FNDACETYP 35 X#define ATR$S_FNDACETYP 255 X#define ATR$C_DELETEACL 36 X#define ATR$S_DELETEACL 255 X#define ATR$C_READACL 37 X#define ATR$S_READACL 512 X#define ATR$C_ACLLENGTH 38 X#define ATR$S_ACLLENGTH 4 X#define ATR$C_READACE 39 X#define ATR$S_READACE 255 X#define ATR$C_RESERVED 40 X#define ATR$S_RESERVED 380 X#define ATR$C_HIGHWATER 41 X#define ATR$S_HIGHWATER 4 X#define ATR$C_DUMMY_0 42 X#define ATR$S_DUMMY_0 4 X#define ATR$C_PRIVS_USED 43 X#define ATR$S_PRIVS_USED 4 X#define ATR$C_MATCHING_ACE 44 X#define ATR$S_MATCHING_ACE 255 X#define ATR$C_ACCESS_MODE 45 X#define ATR$S_ACCESS_MODE 1 X#define ATR$C_FILE_SPEC 46 X#define ATR$S_FILE_SPEC 512 X#define ATR$C_CLASS_MASK 47 X#define ATR$S_CLASS_MASK 20 X#define ATR$C_BUFFER_OFFSET 48 X#define ATR$S_BUFFER_OFFSET 2 X#define ATR$C_RU_ACTIVE 49 X#define ATR$S_RU_ACTIVE 1 X#define ATR$C_MAX_CODE 49 X#define ATR$C_MAX_PLUS1 50 X#define ATR$S_ATRDEF 8 Xstruct ATRDEF X`123 X unsigned short int atr$w_size; X unsigned short int atr$w_type; X unsigned char *atr$l_addr; X`125; $ GOSUB UNPACK_FILE $ FILE_IS = "C.OPT" $ CHECKSUM_IS = 1392527948 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY Xsys$share:vaxcrtl.exe/share $ GOSUB UNPACK_FILE $ FILE_IS = "CLD.H" $ CHECKSUM_IS = 506480543 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X char *t_rtype = "TYPE"; X char *ta_rtype[] = `123 X "UNDEFINED", X "FIXED", X "VARIABLE", X "VFC", X "STREAM", X "LFSTREAM", X "CRSTREAM" X `125; X char *t_fileorg = "ORGANIZATION"; X char *ta_fileorg[] = `123 X "SEQUENTIAL", X "RELATIVE", X "INDEXED", X "DIRECT" X `125; X char *t_attr = "ATTRIBUTES"; X char *t_fortrancc = "FORTRANCC"; X char *t_impliedcc = "IMPLIEDCC"; X char *t_printcc = "PRINTCC"; X char *t_nospan = "SPAN"; X char *t_char = "CHARACTERISTICS"; X char *t_badacl = "ACL_CORRUPT"; X char *t_nobackup = "BACKUP"; X char *t_contigb = "BEST_TRY_CONTIGUOUS"; X char *t_nocharge = "CHARGE"; X char *t_contig = "CONTIGUOUS"; X char *t_directory = "DIRECTORY"; X char *t_erase = "ERASE_ON_DELETE"; X char *t_badblock = "FILE_CORRUPT"; X char *t_locked = "LOCKED"; X char *t_markdel = "MARKED_FOR_DELETE"; X char *t_spool = "SPOOL"; X char *t_readcheck = "READ_VERIFY"; X char *t_writeback = "WRITE_BACK"; X char *t_writcheck = "WRITE_VERIFY"; X char *t_vfcsize = "VFC_SIZE"; X char *t_rsize = "RECORD_SIZE"; X char *t_maxrec = "MAXIMUM_RECORD_SIZE"; X char *t_efblk = "END_OF_FILE_BLOCK"; X char *t_ffbyte = "FIRST_FREE_BYTE"; X char *t_hiblk = "HIGHEST_ALLOCATED_BLOCK"; X char *t_defext = "DEFAULT_EXTEND_QUANTITY"; X char *t_bktsize = "BUCKET_SIZE"; X char *t_gbc = "GLOBAL_BUFFER_COUNT"; X char *t_dirvers = "DIRECTORY_VERSION_LIMIT"; X char *t_versions = "VERSION_LIMIT"; X char *t_journal = "JOURNAL"; X char *t_journal_file = "JOURNAL"; X char *t_aijnl = "AIJNL"; X char *t_atjnl = "ATJNL"; X char *t_bijnl = "BIJNL"; X char *t_rujnl = "RUJNL"; X char *t_never_ru = "NEVER_RU"; X char *t_only_ru = "ONLY_RU"; X char *t_credate = "CREATION_DATE"; X char *t_revdate = "REVISION_DATE"; X char *t_expdate = "EXPIRATION_DATE"; X char *t_bakdate = "BACKUP_DATE"; X char *t_revisions = "NUMBER_OF_REVISIONS"; $ GOSUB UNPACK_FILE $ FILE_IS = "COMPILE.COM" $ CHECKSUM_IS = 490430678 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X$!Last Modified: 4-JUL-1988 14:41:59.32 by WILTS X$ X$! Creating file.exe X$ X$ cc modatt X$ link/notrace/nodebug modatt,c/option $ GOSUB UNPACK_FILE $ FILE_IS = "FATDEF.H" $ CHECKSUM_IS = 607280672 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define FAT$K_LENGTH 32 X#define FAT$C_LENGTH 32 X#define FAT$S_FATDEF 32 X `032 Xstruct FATDEF `123 X variant_union `123 X unsigned char fat$b_rtype; X variant_struct `123 X unsigned fat$v_rtype : 4; X unsigned fat$v_fileorg : 4; X `125 fat$r_rtype_bits; X `125 fat$r_rtype_overlay; X# define FAT$S_RTYPE 4 X# define FAT$V_RTYPE 0 X# define FAT$C_UNDEFINED 0 X# define FAT$C_FIXED 1 X# define FAT$C_VARIABLE 2 X# define FAT$C_VFC 3 X# define FAT$C_STREAM 4 X# define FAT$C_STREAMLF 5 X# define FAT$C_STREAMCR 6 X# define FAT$S_FILEORG 4 X# define FAT$V_FILEORG 4 X# define FAT$C_SEQUENTIAL 0 X# define FAT$C_RELATIVE 1 X# define FAT$C_INDEXED 2 X# define FAT$C_DIRECT 3 X variant_union `123 X unsigned char fat$b_rattrib; X variant_struct `123 X unsigned fat$v_fortrancc : 1; X unsigned fat$v_impliedcc : 1; X unsigned fat$v_printcc : 1; X unsigned fat$v_nospan : 1; X `125 fat$r_rattrib_bits; X `125 fat$r_rattrib_overlay; X# define FAT$V_FORTRANCC 0 X# define FAT$M_FORTRANCC 1 X# define FAT$V_IMPLIEDCC 1 X# define FAT$M_IMPLIEDCC 2 X# define FAT$V_PRINTCC 2 X# define FAT$M_PRINTCC 4 X# define FAT$V_NOSPAN 3 X# define FAT$M_NOSPAN 8 X unsigned short int fat$w_rsize; X variant_union X `123 X unsigned long int fat$l_hiblk; X variant_struct X `123 X unsigned short int fat$w_hiblkh; X unsigned short int fat$w_hiblkl; X `125 FATDEF$DUMMY_0; X `125 FATDEF$DUMMY_1; X variant_union X `123 X unsigned long int fat$l_efblk; X variant_struct X `123 X unsigned short int fat$w_efblkh; X unsigned short int fat$w_efblkl; X `125 FATDEF$DUMMY_2; X `125 FATDEF$DUMMY_3; X unsigned short int fat$w_ffbyte; X unsigned char fat$b_bktsize; X unsigned char fat$b_vfcsize; X unsigned short int fat$w_maxrec; X unsigned short int fat$w_defext; X unsigned short int fat$w_gbc; X char fat$fill[8]; X unsigned short int fat$w_versions; X`125; $ GOSUB UNPACK_FILE $ FILE_IS = "FCHDEF.H" $ CHECKSUM_IS = 1359634843 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FCH$V_BADACL 0x00B X#define FCH$M_BADACL (1 << FCH$V_ACL) X#define FCH$V_BADBLOCK 0x00E X#define FCH$M_BADBLOCK (1 << FCH$V_BADBLOCK) X#define FCH$V_CONTIG 0x007 X#define FCH$M_CONTIG (1 << FCH$V_CONTIG) X#define FCH$V_CONTIGB 0x005 X#define FCH$M_CONTIGB (1 << FCH$V_CONTIGB) X#define FCH$V_DIRECTORY 0x00D X#define FCH$M_DIRECTORY (1 << FCH$V_DIRECTORY) X#define FCH$V_ERASE 0x011 X#define FCH$M_ERASE (1 << FCH$V_ERASE) X#define FCH$V_LOCKED 0x006 X#define FCH$M_LOCKED (1 << FCH$V_LOCKED) X#define FCH$V_MARKDEL 0x00F X#define FCH$M_MARKDEL (1 << FCH$V_MARKDEL) X#define FCH$V_NOBACKUP 0x001 X#define FCH$M_NOBACKUP (1 << FCH$V_NOBACKUP) X#define FCH$V_NOCHARGE 0x010 X#define FCH$M_NOCHARGE (1 << FCH$V_NOCHARGE) X#define FCH$V_READCHECK 0x003 X#define FCH$M_READCHECK (1 << FCH$V_READCHECK) X#define FCH$V_SPOOL 0x00C X#define FCH$M_SPOOL (1 << FCH$V_SPOOL) X#define FCH$V_WRITCHECK 0x004 X#define FCH$M_WRITCHECK (1 << FCH$V_WRITCHECK) X#define FCH$V_WRITEBACK 0x002 X#define FCH$M_WRITEBACK (1 << FCH$V_WRITEBACK) X `032 Xstruct fchdef `123 X unsigned : 1; X unsigned fch$v_nobackup : 1 ; X unsigned fch$v_writeback : 1; X unsigned fch$v_readcheck : 1; X unsigned fch$v_writcheck : 1; X unsigned fch$v_contigb : 1; X unsigned fch$v_locked : 1; X unsigned fch$v_contig : 1; X unsigned : 3; X unsigned fch$v_badacl : 1; X unsigned fch$v_spool : 1; X unsigned fch$v_directory : 1; X unsigned fch$v_badblock : 1; X unsigned fch$v_markdel : 1; X unsigned fch$v_nocharge : 1; X unsigned fch$v_erase : 1; X`125; $ GOSUB UNPACK_FILE $ FILE_IS = "FIBDEF.H" $ CHECKSUM_IS = 185452527 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FIB$M_NOWRITE 1 X#define FIB$M_DLOCK 2 X#define FIB$M_BLK_LOCK 4 X#define FIB$M_SPOOL 16 X#define FIB$M_WRITECK 32 X#define FIB$M_SEQONLY 64 X#define FIB$M_WRITE 256 X#define FIB$M_READCK 512 X#define FIB$M_NOREAD 1024 X#define FIB$M_NOTRUNC 2048 X#define FIB$M_CONTROL 4096 X#define FIB$M_EXECUTE 65536 X#define FIB$M_PRSRV_ATR 131072 X#define FIB$M_RMSLOCK 262144 X#define FIB$M_WRITETHRU 524288 X#define FIB$M_NOLOCK 1048576 X#define FIB$M_NORECORD 2097152 X#define FIB$M_REWIND 8 X#define FIB$M_CURPOS 16 X#define FIB$M_UPDATE 64 X#define FIB$K_ACCDATA 10 X#define FIB$C_ACCDATA 10 X#define FIB$K_DIRDATA 22 X#define FIB$C_DIRDATA 22 X#define FIB$M_ALLVER 8 X#define FIB$M_ALLTYP 16 X#define FIB$M_ALLNAM 32 X#define FIB$M_WILD 256 X#define FIB$M_NEWVER 512 X#define FIB$M_SUPERSEDE 1024 X#define FIB$M_FINDFID 2048 X#define FIB$M_LOWVER 16384 X#define FIB$M_HIGHVER 32768 X#define FIB$M_ALCON 1 X#define FIB$M_ALCONB 2 X#define FIB$M_FILCON 4 X#define FIB$M_ALDEF 8 X#define FIB$M_ALLOCATR 16 X#define FIB$M_EXTEND 128 X#define FIB$M_TRUNC 256 X#define FIB$M_NOHDREXT 512 X#define FIB$M_MARKBAD 1024 X#define FIB$M_NOCHARGE 32768 X#define FIB$K_EXTDATA 32 X#define FIB$C_EXTDATA 32 X#define FIB$M_EXACT 1 X#define FIB$M_ONCYL 2 X#define FIB$C_CYL 1 X#define FIB$C_LBN 2 X#define FIB$C_VBN 3 X#define FIB$C_RFI 4 X#define FIB$K_ALCDATA 44 X#define FIB$C_ALCDATA 44 X#define FIB$M_ALT_REQ 1 X#define FIB$M_ALT_GRANTED 2 X#define FIB$M_DIRACL 4 X#define FIB$M_PROPAGATE 8 X#define FIB$K_LENGTH 64 X#define FIB$C_LENGTH 64 Xstruct fibdef `123 X variant_union `123 X unsigned long int fib$l_acctl; X variant_struct `123 X unsigned fib$v_nowrite : 1; X unsigned fib$v_dlock : 1; X unsigned fib$v_blk_lock : 1; X unsigned fibdef$$_fill_1 : 1; X unsigned fib$v_spool : 1; X unsigned fib$v_writeck : 1; X unsigned fib$v_seqonly : 1; X unsigned fibdef$$_fill_2 : 1; X unsigned fib$v_write : 1; X unsigned fib$v_readck : 1; X unsigned fib$v_noread : 1; X unsigned fib$v_notrunc : 1; X unsigned fib$v_control : 1; X unsigned fibdef$$_fill_3 : 3; X `032 X `032 X unsigned fib$v_execute : 1; X unsigned fib$v_prsrv_atr : 1; X unsigned fib$v_rmslock : 1; X unsigned fib$v_writethru : 1; X unsigned fib$v_nolock : 1; X unsigned fib$v_norecord : 1; X unsigned fibdef$$_fill_4 : 2; X `125 fib$r_acctl_bits0; X variant_struct `123 X unsigned fibdef$$_fill_5 : 3; X unsigned fib$v_rewind : 1; X unsigned fib$v_curpos : 1; X unsigned fibdef$$_fill_6 : 1; X unsigned fib$v_update : 1; X unsigned fib$v_fill_1 : 1; X `125 fib$r_acctl_bits1; X variant_struct `123 X char fibdef$$_fill_13 [3]; X char fib$b_wsize; X `125 fib$r_acctl_fields2; X `125 fib$r_acctl_overlay; X variant_union `123 X unsigned short int fib$w_fid [3]; X variant_struct `123 X unsigned short int fib$w_fid_num; X unsigned short int fib$w_fid_seq; X variant_union `123 X unsigned short int fib$w_fid_rvn; X variant_struct `123 X unsigned char fib$b_fid_rvn; X unsigned char fib$b_fid_nmx; X `125 fib$r_fid_rvn_fields; X `125 fib$r_fid_rvn_overlay; X `125 fib$r_fid_fields; X `125 fib$r_fid_overlay; X variant_union `123 X unsigned short int fib$w_did [3]; X variant_struct `123 X unsigned short int fib$w_did_num; X unsigned short int fib$w_did_seq; X variant_union `123 X unsigned short int fib$w_did_rvn; X variant_struct `123 X unsigned char fib$b_did_rvn; X unsigned char fib$b_did_nmx; X `125 fib$r_did_rvn_fields; X `125 fib$r_did_rvn_overlay; X `125 fib$r_did_fields; X `125 fib$r_did_overlay; X unsigned long int fib$l_wcc; X variant_union `123 X unsigned short int fib$w_nmctl; X variant_struct `123 X unsigned fibdef$$_fill_7 : 3; X unsigned fib$v_allver : 1; X unsigned fib$v_alltyp : 1; X unsigned fib$v_allnam : 1; X unsigned fibdef$$_fill_8 : 2; X unsigned fib$v_wild : 1; X unsigned fib$v_newver : 1; X unsigned fib$v_supersede : 1; X unsigned fib$v_findfid : 1; X unsigned fibdef$$_fill_9 : 2; X unsigned fib$v_lowver : 1; X unsigned fib$v_highver : 1; X `125 fib$r_nmctl_bits; X `125 fib$r_nmctl_overlay; X variant_union `123 X unsigned short int fib$w_exctl; X variant_struct `123 X unsigned fib$v_alcon : 1; X unsigned fib$v_alconb : 1; X unsigned fib$v_filcon : 1; X unsigned fib$v_aldef : 1; X unsigned fib$v_allocatr : 1; X unsigned fibdef$$_fill_10 : 2; X unsigned fib$v_extend : 1; X unsigned fib$v_trunc : 1; X unsigned fib$v_nohdrext : 1; X unsigned fib$v_markbad : 1; X unsigned fibdef$$_fill_11 : 4; X unsigned fib$v_nocharge : 1; X `125 fib$r_exctl_bits; X `125 fib$r_exctl_overlay; X unsigned long int fib$l_exsz; X unsigned long int fib$l_exvbn; X variant_union `123 X unsigned char fib$b_alopts; X variant_struct `123 X unsigned fib$v_exact : 1; X unsigned fib$v_oncyl : 1; X unsigned fib$v_fill_2 : 6; X `125 fib$r_alopts_bits; X `125 fib$r_alopts_overlay; X unsigned char fib$b_alalign; X variant_union `123 X unsigned short int fib$w_alloc [5]; X variant_struct `123 X variant_union `123 X unsigned short int fib$w_loc_fid [3]; X variant_struct `123 X unsigned short int fib$w_loc_num; X unsigned short int fib$w_loc_seq; X variant_union `123 X unsigned short int fib$w_loc_rvn; X variant_struct `123 X unsigned char fib$b_loc_rvn; X unsigned char fib$b_loc_nmx; X `125 fib$r_loc_rvn_fields; X `125 fib$r_loc_rvn_overlay; X `125 fib$r_loc_fid_fields; X `125 fib$r_loc_fid_overlay; X unsigned long int fib$l_loc_addr; X `125 fib$r_alloc_fields; X `125 fib$r_alloc_overlay; X unsigned short int fib$w_verlimit; X unsigned char fib$b_agent_mode; X char fibdef$$_fill_12; X unsigned long int fib$l_aclctx; X unsigned long int fib$l_acl_status; X variant_union `123 X unsigned long int fib$l_status; X variant_struct `123 X unsigned fib$v_alt_req : 1; X unsigned fib$v_alt_granted : 1; X unsigned fib$v_diracl : 1; X unsigned fib$v_propagate : 1; X unsigned fib$v_fill_3 : 4; X `125 fib$r_status_bits; X `125 fib$r_status_overlay; X unsigned long int fib$l_alt_access; X `125 ; X#define FIB$C_REWINDVOL 1 X#define FIB$C_POSEND 2 X#define FIB$C_NEXTVOL 3 X#define FIB$C_SPACE 4 X#define FIB$C_ILLEGAL 5 X#define FIB$C_REWINDFIL 6 X#define FIB$C_LOCK_VOL 7 X#define FIB$C_UNLK_VOL 8 X `032 X#define FIB$C_ENA_QUOTA 9 X#define FIB$C_DSA_QUOTA 10 X#define FIB$C_ADD_QUOTA 11 X#define FIB$C_EXA_QUOTA 12 X#define FIB$C_MOD_QUOTA 13 X#define FIB$C_REM_QUOTA 14 X#define FIB$C_USEREOT 15 X#define FIB$C_REMAP 16 X#define FIB$C_CLSEREXCP 17 X#define FIB$C_FLUSH_CACHE 18 X#define FIB$K_MTALEN 28 X#define FIB$C_MTALEN 28 X `032 X `032 X `032 X#define FIB$C_FID_CACHE 1 X#define FIB$C_EXTENT_CACHE 2 X#define FIB$C_QUOTA_CACHE 3 X `032 X `032 X `032 X#define FIB$M_ALL_MEM 1 X#define FIB$M_ALL_GRP 2 X#define FIB$M_MOD_USE 4 X#define FIB$M_MOD_PERM 8 X#define FIB$M_MOD_OVER 16 Xstruct fibdef1 `123 X char fibdef$$_fill_14 [22]; X unsigned short int fib$w_cntrlfunc; X `032 X `032 X variant_union `123 X unsigned long int fib$l_cntrlval; X variant_struct `123 X unsigned fib$v_all_mem : 1; X unsigned fib$v_all_grp : 1; X unsigned fib$v_mod_use : 1; X unsigned fib$v_mod_perm : 1; X unsigned fib$v_mod_over : 1; X unsigned fib$v_fill_4 : 3; X `125 fib$r_cntrlval_bits; X `125 fib$r_cntrlval_overlay; X `125 ; X `032 $ GOSUB UNPACK_FILE $ FILE_IS = "FILE.MSG" $ CHECKSUM_IS = 1901518454 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY V$!From:`009BITnet%"ewilts%Janus.MRC.AdhocNet.CA@UNCAEDU.BITnet" 17-JAN-1989 2 X1:35 X$!To:`009tihor@nyuacf.bitnet X$!Subj:`009RE: Carriage Contol=NONE X$! X$!Received: From UNCAEDU(MAILER) by NYUACF7 with Jnet id 3774 X$! for TIHOR@NYUACF; Tue, 17 Jan 89 21:35 EST V$!Received: from Janus.MRC.AdhocNet.CA by UcEdu.UNCA.AdhocNet.CA with DECNET X ; X$! Tue, 17 Jan 89 07:59:51 MST X$!Date: Tue, 17 Jan 89 07:57:31 MST V$!From: ewilts%Janus.MRC.AdhocNet.CA@UNCAEDU.BITnet (Ed Wilts - CandianOx Xy) X$!Message-Id: <890117075731.01m@Janus.MRC.AdhocNet.CA> X$!Subject: RE: Carriage Contol=NONE X$!To: tihor@nyuacf.bitnet X$!X-ST-Vmsmail-To: ST%"tihor@nyuacf.BITnet@UcEdu.UNCA.AdhocNet.CA" X$! `032 X$!>If you have a copy of, say, "FILE" I love one as I have not been able to X$!>get anything stable recently. Otherwise see other message... X$! `032 X$!Here it is. I have renamed the program MODATT since I normally use it in X$!command files and "file" was a very common symbol. X$! `032 X$!Just @ the remainder of this file. X$! Enjoy. X$! .../Ed (ewilts%janus.mrc.adhocnet.ca@uncaedu.bitnet) X$! `032 X$!Ed Wilts X$!Sr. Systems Analyst, Canadian Occidental Petroleum Ltd. X$!Calgary, Alberta, Canada (403) 234-1007 X$! `032 X$! `032 X$WRITE SYS$ERROR "Creating AAAREADME.TXT..." X$CREATE AAAREADME.TXT X$DECK/DOLLARS="198901161011160" X MODATT is a utility for modifying file attributes. X `032 X MODATT DOES NOT convert a file. MODATT changes characteristics of Xthe file, and thus VMS' view of the file. MODATT can be used simply to view Xthe current characteristics of a file, or it can be used to change ANY of Xthe changeable characteristics. This utility can be VERY dangerous, and Xshould only be used if you have a good understanding of RMS. Care should Xbe taken when using this utility. While it doesn't actually change the file Xitself, you might consider using a backup copy of the file. X `032 XTo use: X Either edit MODATT.CLD so that the IMAGE clause points to where Xyou are storing the image, or define a logical name EXE$DIR to point to Xwhere you are storing the image. Then do SET COMMAND MODATT. You will then Xbe able to use the MODATT command. X `032 XFiles in this directory: X C.OPT - used for linking X `032 X ATRDEF.H X CLD.H X FATDEF.H X FCHDEF.H - Header files for MODATT program X FIBDEF.H X FJNDEF.H X IODEF.H X `032 X MODATT.C - source to MODATT program X MODATT.CLD - command definition for MODATT X MODATT.EXE - executable of MODATT program X MODATT.OBJ - Object code for MODATT (compiled /DEBUG) X MODATT.RNH - runoff version of help file, make local modifications X to this file, the use RUNOFF MODATT.RNH, or, if you have X MAKE, you should be able to say MAKE HELP X MAKEFILE. - Makefile for those of you with MAKE (a must have item) X198901161011160!End of AAAREADME.TXT X$WRITE SYS$ERROR "Creating ATRDEF.H..." X$CREATE ATRDEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define ATR$C_UCHAR 3 X#define ATR$S_UCHAR 4 X#define ATR$C_RECATTR 4 X#define ATR$S_RECATTR 32 X#define ATR$C_FILNAM 5 X#define ATR$S_FILNAM 6 X#define ATR$C_FILTYP 6 X#define ATR$S_FILTYP 2 X#define ATR$C_FILVER 7 X#define ATR$S_FILVER 2 X#define ATR$C_EXPDAT 8 X#define ATR$S_EXPDAT 7 X#define ATR$C_STATBLK 9 X#define ATR$S_STATBLK 32 X#define ATR$C_HEADER 10 X#define ATR$S_HEADER 512 X#define ATR$C_BLOCKSIZE 11 X#define ATR$S_BLOCKSIZE 2 X#define ATR$C_USERLABEL 12 X#define ATR$S_USERLABEL 80 X#define ATR$C_ASCDATES 13 X#define ATR$S_ASCDATES 35 X#define ATR$C_ALCONTROL 14 X#define ATR$S_ALCONTROL 14 X#define ATR$C_ENDLBLAST 15 X#define ATR$S_ENDLBLAST 4 X#define ATR$C_ASCNAME 16 X#define ATR$S_ASCNAME 86 X#define ATR$C_CREDATE 17 X#define ATR$S_CREDATE 8 X#define ATR$C_REVDATE 18 X#define ATR$S_REVDATE 8 X#define ATR$C_EXPDATE 19 X#define ATR$S_EXPDATE 8 X#define ATR$C_BAKDATE 20 X#define ATR$S_BAKDATE 8 X#define ATR$C_UIC 21 X#define ATR$S_UIC 4 X#define ATR$C_FPRO 22 X#define ATR$S_FPRO 2 X#define ATR$C_RPRO 23 X#define ATR$S_RPRO 2 X#define ATR$C_ACLEVEL 24 X#define ATR$S_ACLEVEL 1 X#define ATR$C_SEMASK 25 X#define ATR$S_SEMASK 8 X#define ATR$C_UIC_RO 26 X#define ATR$S_UIC_RO 4 X#define ATR$C_DIRSEQ 27 X#define ATR$S_DIRSEQ 2 X#define ATR$C_BACKLINK 28 X#define ATR$S_BACKLINK 6 X#define ATR$C_JOURNAL 29 X#define ATR$S_JOURNAL 1 X#define ATR$C_HDR1_ACC 30 X#define ATR$S_HDR1_ACC 1 X#define ATR$C_ADDACLENT 31 X#define ATR$S_ADDACLENT 255 X#define ATR$C_DELACLENT 32 X#define ATR$S_DELACLENT 255 X#define ATR$C_MODACLENT 33 X#define ATR$S_MODACLENT 255 X#define ATR$C_FNDACLENT 34 X#define ATR$S_FNDACLENT 255 X#define ATR$C_FNDACLTYP 35 X#define ATR$S_FNDACLTYP 255 X#define ATR$C_FNDACETYP 35 X#define ATR$S_FNDACETYP 255 X#define ATR$C_DELETEACL 36 X#define ATR$S_DELETEACL 255 X#define ATR$C_READACL 37 X#define ATR$S_READACL 512 X#define ATR$C_ACLLENGTH 38 X#define ATR$S_ACLLENGTH 4 X#define ATR$C_READACE 39 X#define ATR$S_READACE 255 X#define ATR$C_RESERVED 40 X#define ATR$S_RESERVED 380 X#define ATR$C_HIGHWATER 41 X#define ATR$S_HIGHWATER 4 X#define ATR$C_DUMMY_0 42 X#define ATR$S_DUMMY_0 4 X#define ATR$C_PRIVS_USED 43 X#define ATR$S_PRIVS_USED 4 X#define ATR$C_MATCHING_ACE 44 X#define ATR$S_MATCHING_ACE 255 X#define ATR$C_ACCESS_MODE 45 X#define ATR$S_ACCESS_MODE 1 X#define ATR$C_FILE_SPEC 46 X#define ATR$S_FILE_SPEC 512 X#define ATR$C_CLASS_MASK 47 X#define ATR$S_CLASS_MASK 20 X#define ATR$C_BUFFER_OFFSET 48 X#define ATR$S_BUFFER_OFFSET 2 X#define ATR$C_RU_ACTIVE 49 X#define ATR$S_RU_ACTIVE 1 X#define ATR$C_MAX_CODE 49 X#define ATR$C_MAX_PLUS1 50 X#define ATR$S_ATRDEF 8 Xstruct ATRDEF X`123 X unsigned short int atr$w_size; X unsigned short int atr$w_type; X unsigned char *atr$l_addr; X`125; X198901161011160!End of ATRDEF.H X$WRITE SYS$ERROR "Creating C.OPT..." X$CREATE C.OPT X$DECK/DOLLARS="198901161011160" Xsys$share:vaxcrtl.exe/share X198901161011160!End of C.OPT X$WRITE SYS$ERROR "Creating CLD.H..." X$CREATE CLD.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X char *t_rtype = "TYPE"; X char *ta_rtype[] = `123 X "UNDEFINED", X "FIXED", X "VARIABLE", X "VFC", X "STREAM", X "LFSTREAM", X "CRSTREAM" X `125; X char *t_fileorg = "ORGANIZATION"; X char *ta_fileorg[] = `123 X "SEQUENTIAL", X "RELATIVE", X "INDEXED", X "DIRECT" X `125; X char *t_attr = "ATTRIBUTES"; X char *t_fortrancc = "FORTRANCC"; X char *t_impliedcc = "IMPLIEDCC"; X char *t_printcc = "PRINTCC"; X char *t_nospan = "SPAN"; X char *t_char = "CHARACTERISTICS"; X char *t_badacl = "ACL_CORRUPT"; X char *t_nobackup = "BACKUP"; X char *t_contigb = "BEST_TRY_CONTIGUOUS"; X char *t_nocharge = "CHARGE"; X char *t_contig = "CONTIGUOUS"; X char *t_directory = "DIRECTORY"; X char *t_erase = "ERASE_ON_DELETE"; X char *t_badblock = "FILE_CORRUPT"; X char *t_locked = "LOCKED"; X char *t_markdel = "MARKED_FOR_DELETE"; X char *t_spool = "SPOOL"; X char *t_readcheck = "READ_VERIFY"; X char *t_writeback = "WRITE_BACK"; X char *t_writcheck = "WRITE_VERIFY"; X char *t_vfcsize = "VFC_SIZE"; X char *t_rsize = "RECORD_SIZE"; X char *t_maxrec = "MAXIMUM_RECORD_SIZE"; X char *t_efblk = "END_OF_FILE_BLOCK"; X char *t_ffbyte = "FIRST_FREE_BYTE"; X char *t_hiblk = "HIGHEST_ALLOCATED_BLOCK"; X char *t_defext = "DEFAULT_EXTEND_QUANTITY"; X char *t_bktsize = "BUCKET_SIZE"; X char *t_gbc = "GLOBAL_BUFFER_COUNT"; X char *t_dirvers = "DIRECTORY_VERSION_LIMIT"; X char *t_versions = "VERSION_LIMIT"; X char *t_journal = "JOURNAL"; X char *t_journal_file = "JOURNAL"; X char *t_aijnl = "AIJNL"; X char *t_atjnl = "ATJNL"; X char *t_bijnl = "BIJNL"; X char *t_rujnl = "RUJNL"; X char *t_never_ru = "NEVER_RU"; X char *t_only_ru = "ONLY_RU"; X char *t_credate = "CREATION_DATE"; X char *t_revdate = "REVISION_DATE"; X char *t_expdate = "EXPIRATION_DATE"; X char *t_bakdate = "BACKUP_DATE"; X char *t_revisions = "NUMBER_OF_REVISIONS"; X198901161011160!End of CLD.H X$WRITE SYS$ERROR "Creating COMPILE.COM..." X$CREATE COMPILE.COM X$DECK/DOLLARS="198901161011160" X$!Last Modified: 4-JUL-1988 14:41:59.32 by WILTS X$ X$! Creating file.exe X$ X$ cc modatt X$ link/notrace/nodebug modatt,c/option X198901161011160!End of COMPILE.COM X$WRITE SYS$ERROR "Creating FATDEF.H..." X$CREATE FATDEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define FAT$K_LENGTH 32 X#define FAT$C_LENGTH 32 X#define FAT$S_FATDEF 32 X `032 Xstruct FATDEF `123 X variant_union `123 X unsigned char fat$b_rtype; X variant_struct `123 X unsigned fat$v_rtype : 4; X unsigned fat$v_fileorg : 4; X `125 fat$r_rtype_bits; X `125 fat$r_rtype_overlay; X# define FAT$S_RTYPE 4 X# define FAT$V_RTYPE 0 X# define FAT$C_UNDEFINED 0 X# define FAT$C_FIXED 1 X# define FAT$C_VARIABLE 2 X# define FAT$C_VFC 3 X# define FAT$C_STREAM 4 X# define FAT$C_STREAMLF 5 X# define FAT$C_STREAMCR 6 X# define FAT$S_FILEORG 4 X# define FAT$V_FILEORG 4 X# define FAT$C_SEQUENTIAL 0 X# define FAT$C_RELATIVE 1 X# define FAT$C_INDEXED 2 X# define FAT$C_DIRECT 3 X variant_union `123 X unsigned char fat$b_rattrib; X variant_struct `123 X unsigned fat$v_fortrancc : 1; X unsigned fat$v_impliedcc : 1; X unsigned fat$v_printcc : 1; X unsigned fat$v_nospan : 1; X `125 fat$r_rattrib_bits; X `125 fat$r_rattrib_overlay; X# define FAT$V_FORTRANCC 0 X# define FAT$M_FORTRANCC 1 X# define FAT$V_IMPLIEDCC 1 X# define FAT$M_IMPLIEDCC 2 X# define FAT$V_PRINTCC 2 X# define FAT$M_PRINTCC 4 X# define FAT$V_NOSPAN 3 X# define FAT$M_NOSPAN 8 X unsigned short int fat$w_rsize; X variant_union X `123 X unsigned long int fat$l_hiblk; X variant_struct X `123 X unsigned short int fat$w_hiblkh; X unsigned short int fat$w_hiblkl; X `125 FATDEF$DUMMY_0; X `125 FATDEF$DUMMY_1; X variant_union X `123 X unsigned long int fat$l_efblk; X variant_struct X `123 X unsigned short int fat$w_efblkh; X unsigned short int fat$w_efblkl; X `125 FATDEF$DUMMY_2; X `125 FATDEF$DUMMY_3; X unsigned short int fat$w_ffbyte; X unsigned char fat$b_bktsize; X unsigned char fat$b_vfcsize; X unsigned short int fat$w_maxrec; X unsigned short int fat$w_defext; X unsigned short int fat$w_gbc; X char fat$fill[8]; X unsigned short int fat$w_versions; X`125; X198901161011160!End of FATDEF.H X$WRITE SYS$ERROR "Creating FCHDEF.H..." X$CREATE FCHDEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FCH$V_BADACL 0x00B X#define FCH$M_BADACL (1 << FCH$V_ACL) X#define FCH$V_BADBLOCK 0x00E X#define FCH$M_BADBLOCK (1 << FCH$V_BADBLOCK) X#define FCH$V_CONTIG 0x007 X#define FCH$M_CONTIG (1 << FCH$V_CONTIG) X#define FCH$V_CONTIGB 0x005 X#define FCH$M_CONTIGB (1 << FCH$V_CONTIGB) X#define FCH$V_DIRECTORY 0x00D X#define FCH$M_DIRECTORY (1 << FCH$V_DIRECTORY) X#define FCH$V_ERASE 0x011 X#define FCH$M_ERASE (1 << FCH$V_ERASE) X#define FCH$V_LOCKED 0x006 X#define FCH$M_LOCKED (1 << FCH$V_LOCKED) X#define FCH$V_MARKDEL 0x00F X#define FCH$M_MARKDEL (1 << FCH$V_MARKDEL) X#define FCH$V_NOBACKUP 0x001 X#define FCH$M_NOBACKUP (1 << FCH$V_NOBACKUP) X#define FCH$V_NOCHARGE 0x010 X#define FCH$M_NOCHARGE (1 << FCH$V_NOCHARGE) X#define FCH$V_READCHECK 0x003 X#define FCH$M_READCHECK (1 << FCH$V_READCHECK) X#define FCH$V_SPOOL 0x00C X#define FCH$M_SPOOL (1 << FCH$V_SPOOL) X#define FCH$V_WRITCHECK 0x004 X#define FCH$M_WRITCHECK (1 << FCH$V_WRITCHECK) X#define FCH$V_WRITEBACK 0x002 X#define FCH$M_WRITEBACK (1 << FCH$V_WRITEBACK) X `032 Xstruct fchdef `123 X unsigned : 1; X unsigned fch$v_nobackup : 1 ; X unsigned fch$v_writeback : 1; X unsigned fch$v_readcheck : 1; X unsigned fch$v_writcheck : 1; X unsigned fch$v_contigb : 1; X unsigned fch$v_locked : 1; X unsigned fch$v_contig : 1; X unsigned : 3; X unsigned fch$v_badacl : 1; X unsigned fch$v_spool : 1; X unsigned fch$v_directory : 1; X unsigned fch$v_badblock : 1; X unsigned fch$v_markdel : 1; X unsigned fch$v_nocharge : 1; X unsigned fch$v_erase : 1; X`125; X198901161011160!End of FCHDEF.H X$WRITE SYS$ERROR "Creating FIBDEF.H..." X$CREATE FIBDEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FIB$M_NOWRITE 1 X#define FIB$M_DLOCK 2 X#define FIB$M_BLK_LOCK 4 X#define FIB$M_SPOOL 16 X#define FIB$M_WRITECK 32 X#define FIB$M_SEQONLY 64 X#define FIB$M_WRITE 256 X#define FIB$M_READCK 512 X#define FIB$M_NOREAD 1024 X#define FIB$M_NOTRUNC 2048 X#define FIB$M_CONTROL 4096 X#define FIB$M_EXECUTE 65536 X#define FIB$M_PRSRV_ATR 131072 X#define FIB$M_RMSLOCK 262144 X#define FIB$M_WRITETHRU 524288 X#define FIB$M_NOLOCK 1048576 X#define FIB$M_NORECORD 2097152 X#define FIB$M_REWIND 8 X#define FIB$M_CURPOS 16 X#define FIB$M_UPDATE 64 X#define FIB$K_ACCDATA 10 X#define FIB$C_ACCDATA 10 X#define FIB$K_DIRDATA 22 X#define FIB$C_DIRDATA 22 X#define FIB$M_ALLVER 8 X#define FIB$M_ALLTYP 16 X#define FIB$M_ALLNAM 32 X#define FIB$M_WILD 256 X#define FIB$M_NEWVER 512 X#define FIB$M_SUPERSEDE 1024 X#define FIB$M_FINDFID 2048 X#define FIB$M_LOWVER 16384 X#define FIB$M_HIGHVER 32768 X#define FIB$M_ALCON 1 X#define FIB$M_ALCONB 2 X#define FIB$M_FILCON 4 X#define FIB$M_ALDEF 8 X#define FIB$M_ALLOCATR 16 X#define FIB$M_EXTEND 128 X#define FIB$M_TRUNC 256 X#define FIB$M_NOHDREXT 512 X#define FIB$M_MARKBAD 1024 X#define FIB$M_NOCHARGE 32768 X#define FIB$K_EXTDATA 32 X#define FIB$C_EXTDATA 32 X#define FIB$M_EXACT 1 X#define FIB$M_ONCYL 2 X#define FIB$C_CYL 1 X#define FIB$C_LBN 2 X#define FIB$C_VBN 3 X#define FIB$C_RFI 4 X#define FIB$K_ALCDATA 44 X#define FIB$C_ALCDATA 44 X#define FIB$M_ALT_REQ 1 X#define FIB$M_ALT_GRANTED 2 X#define FIB$M_DIRACL 4 X#define FIB$M_PROPAGATE 8 X#define FIB$K_LENGTH 64 X#define FIB$C_LENGTH 64 Xstruct fibdef `123 X variant_union `123 X unsigned long int fib$l_acctl; X variant_struct `123 X unsigned fib$v_nowrite : 1; X unsigned fib$v_dlock : 1; X unsigned fib$v_blk_lock : 1; X unsigned fibdef$$_fill_1 : 1; X unsigned fib$v_spool : 1; X unsigned fib$v_writeck : 1; X unsigned fib$v_seqonly : 1; X unsigned fibdef$$_fill_2 : 1; X unsigned fib$v_write : 1; X unsigned fib$v_readck : 1; X unsigned fib$v_noread : 1; X unsigned fib$v_notrunc : 1; X unsigned fib$v_control : 1; X unsigned fibdef$$_fill_3 : 3; X `032 X `032 X unsigned fib$v_execute : 1; X unsigned fib$v_prsrv_atr : 1; X unsigned fib$v_rmslock : 1; X unsigned fib$v_writethru : 1; X unsigned fib$v_nolock : 1; X unsigned fib$v_norecord : 1; X unsigned fibdef$$_fill_4 : 2; X `125 fib$r_acctl_bits0; X variant_struct `123 X unsigned fibdef$$_fill_5 : 3; X unsigned fib$v_rewind : 1; X unsigned fib$v_curpos : 1; X unsigned fibdef$$_fill_6 : 1; X unsigned fib$v_update : 1; X unsigned fib$v_fill_1 : 1; X `125 fib$r_acctl_bits1; X variant_struct `123 X char fibdef$$_fill_13 [3]; X char fib$b_wsize; X `125 fib$r_acctl_fields2; X `125 fib$r_acctl_overlay; X variant_union `123 X unsigned short int fib$w_fid [3]; X variant_struct `123 X unsigned short int fib$w_fid_num; X unsigned short int fib$w_fid_seq; X variant_union `123 X unsigned short int fib$w_fid_rvn; X variant_struct `123 X unsigned char fib$b_fid_rvn; X unsigned char fib$b_fid_nmx; X `125 fib$r_fid_rvn_fields; X `125 fib$r_fid_rvn_overlay; X `125 fib$r_fid_fields; X `125 fib$r_fid_overlay; X variant_union `123 X unsigned short int fib$w_did [3]; X variant_struct `123 X unsigned short int fib$w_did_num; X unsigned short int fib$w_did_seq; X variant_union `123 X unsigned short int fib$w_did_rvn; X variant_struct `123 X unsigned char fib$b_did_rvn; X unsigned char fib$b_did_nmx; X `125 fib$r_did_rvn_fields; X `125 fib$r_did_rvn_overlay; X `125 fib$r_did_fields; X `125 fib$r_did_overlay; X unsigned long int fib$l_wcc; X variant_union `123 X unsigned short int fib$w_nmctl; X variant_struct `123 X unsigned fibdef$$_fill_7 : 3; X unsigned fib$v_allver : 1; X unsigned fib$v_alltyp : 1; X unsigned fib$v_allnam : 1; X unsigned fibdef$$_fill_8 : 2; X unsigned fib$v_wild : 1; X unsigned fib$v_newver : 1; X unsigned fib$v_supersede : 1; X unsigned fib$v_findfid : 1; X unsigned fibdef$$_fill_9 : 2; X unsigned fib$v_lowver : 1; X unsigned fib$v_highver : 1; X `125 fib$r_nmctl_bits; X `125 fib$r_nmctl_overlay; X variant_union `123 X unsigned short int fib$w_exctl; X variant_struct `123 X unsigned fib$v_alcon : 1; X unsigned fib$v_alconb : 1; X unsigned fib$v_filcon : 1; X unsigned fib$v_aldef : 1; X unsigned fib$v_allocatr : 1; X unsigned fibdef$$_fill_10 : 2; X unsigned fib$v_extend : 1; X unsigned fib$v_trunc : 1; X unsigned fib$v_nohdrext : 1; X unsigned fib$v_markbad : 1; X unsigned fibdef$$_fill_11 : 4; X unsigned fib$v_nocharge : 1; X `125 fib$r_exctl_bits; X `125 fib$r_exctl_overlay; X unsigned long int fib$l_exsz; X unsigned long int fib$l_exvbn; X variant_union `123 X unsigned char fib$b_alopts; X variant_struct `123 X unsigned fib$v_exact : 1; X unsigned fib$v_oncyl : 1; X unsigned fib$v_fill_2 : 6; X `125 fib$r_alopts_bits; X `125 fib$r_alopts_overlay; X unsigned char fib$b_alalign; X variant_union `123 X unsigned short int fib$w_alloc [5]; X variant_struct `123 X variant_union `123 X unsigned short int fib$w_loc_fid [3]; X variant_struct `123 X unsigned short int fib$w_loc_num; X unsigned short int fib$w_loc_seq; X variant_union `123 X unsigned short int fib$w_loc_rvn; X variant_struct `123 X unsigned char fib$b_loc_rvn; X unsigned char fib$b_loc_nmx; X `125 fib$r_loc_rvn_fields; X `125 fib$r_loc_rvn_overlay; X `125 fib$r_loc_fid_fields; X `125 fib$r_loc_fid_overlay; X unsigned long int fib$l_loc_addr; X `125 fib$r_alloc_fields; X `125 fib$r_alloc_overlay; X unsigned short int fib$w_verlimit; X unsigned char fib$b_agent_mode; X char fibdef$$_fill_12; X unsigned long int fib$l_aclctx; X unsigned long int fib$l_acl_status; X variant_union `123 X unsigned long int fib$l_status; X variant_struct `123 X unsigned fib$v_alt_req : 1; X unsigned fib$v_alt_granted : 1; X unsigned fib$v_diracl : 1; X unsigned fib$v_propagate : 1; X unsigned fib$v_fill_3 : 4; X `125 fib$r_status_bits; X `125 fib$r_status_overlay; X unsigned long int fib$l_alt_access; X `125 ; X#define FIB$C_REWINDVOL 1 X#define FIB$C_POSEND 2 X#define FIB$C_NEXTVOL 3 X#define FIB$C_SPACE 4 X#define FIB$C_ILLEGAL 5 X#define FIB$C_REWINDFIL 6 X#define FIB$C_LOCK_VOL 7 X#define FIB$C_UNLK_VOL 8 X `032 X#define FIB$C_ENA_QUOTA 9 X#define FIB$C_DSA_QUOTA 10 X#define FIB$C_ADD_QUOTA 11 X#define FIB$C_EXA_QUOTA 12 X#define FIB$C_MOD_QUOTA 13 X#define FIB$C_REM_QUOTA 14 X#define FIB$C_USEREOT 15 X#define FIB$C_REMAP 16 X#define FIB$C_CLSEREXCP 17 X#define FIB$C_FLUSH_CACHE 18 X#define FIB$K_MTALEN 28 X#define FIB$C_MTALEN 28 X `032 X `032 X `032 X#define FIB$C_FID_CACHE 1 X#define FIB$C_EXTENT_CACHE 2 X#define FIB$C_QUOTA_CACHE 3 X `032 X `032 X `032 X#define FIB$M_ALL_MEM 1 X#define FIB$M_ALL_GRP 2 X#define FIB$M_MOD_USE 4 X#define FIB$M_MOD_PERM 8 X#define FIB$M_MOD_OVER 16 Xstruct fibdef1 `123 X char fibdef$$_fill_14 [22]; X unsigned short int fib$w_cntrlfunc; X `032 X `032 X variant_union `123 X unsigned long int fib$l_cntrlval; X variant_struct `123 X unsigned fib$v_all_mem : 1; X unsigned fib$v_all_grp : 1; X unsigned fib$v_mod_use : 1; X unsigned fib$v_mod_perm : 1; X unsigned fib$v_mod_over : 1; X unsigned fib$v_fill_4 : 3; X `125 fib$r_cntrlval_bits; X `125 fib$r_cntrlval_overlay; X `125 ; X `032 X198901161011160!End of FIBDEF.H X$WRITE SYS$ERROR "Creating FJNDEF.H..." X$CREATE FJNDEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FJN$M_ONLY_RU 1 X#define FJN$M_RUJNL 2 X#define FJN$M_BIJNL 4 X#define FJN$M_AIJNL 8 X#define FJN$M_ATJNL 16 X#define FJN$M_NEVER_RU 32 X#define FJN$M_JOURNAL_FILE 64 X#define FJN$S_FJNDEF 1 Xstruct fjndef `123 X unsigned fjn$v_only_ru : 1; X unsigned fjn$v_rujnl : 1; X unsigned fjn$v_bijnl : 1; X unsigned fjn$v_aijnl : 1; X unsigned fjn$v_atjnl : 1; X unsigned fjn$v_never_ru : 1; X unsigned fjn$v_journal_file:1; X`125 ; X198901161011160!End of FJNDEF.H X$WRITE SYS$ERROR "Creating IODEF.H..." X$CREATE IODEF.H X$DECK/DOLLARS="198901161011160" X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define IO$_NOP 0 X#define IO$_UNLOAD 1 X#define IO$_LOADMCODE 1 X#define IO$_SEEK 2 X#define IO$_SPACEFILE 2 X#define IO$_STARTMPROC 2 X#define IO$_RECAL 3 X#define IO$_STOP 3 X#define IO$_DRVCLR 4 X#define IO$_INITIALIZE 4 X#define IO$_RELEASE 5 X#define IO$_SETCLOCKP 5 X#define IO$_OFFSET 6 X#define IO$_ERASETAPE 6 X#define IO$_STARTDATAP 6 X#define IO$_RETCENTER 7 X#define IO$_QSTOP 7 X#define IO$_PACKACK 8 X#define IO$_SEARCH 9 X#define IO$_SPACERECORD 9 X#define IO$_READRCT 9 X#define IO$_WRITECHECK 10 X#define IO$_WRITEPBLK 11 X#define IO$_READPBLK 12 X#define IO$_WRITEHEAD 13 X#define IO$_RDSTATS 13 X#define IO$_CRESHAD 13 X#define IO$_READHEAD 14 X#define IO$_ADDSHAD 14 X#define IO$_WRITETRACKD 15 X#define IO$_COPYSHAD 15 X#define IO$_READTRACKD 16 X#define IO$_REMSHAD 16 X#define IO$_AVAILABLE 17 X#define IO$_SETPRFPATH 18 X#define IO$_DSE 21 X#define IO$_REREADN 22 X#define IO$_REREADP 23 X#define IO$_WRITERET 24 X#define IO$_WRITECHECKH 24 X#define IO$_READPRESET 25 X#define IO$_STARTSPNDL 25 X#define IO$_SETCHAR 26 X#define IO$_SENSECHAR 27 X#define IO$_WRITEMARK 28 X#define IO$_WRTTMKR 29 X#define IO$_DIAGNOSE 29 X#define IO$_SHADMV 29 X#define IO$_FORMAT 30 X#define IO$_CLEAN 30 X#define IO$_PHYSICAL 31 X#define IO$_WRITELBLK 32 X#define IO$_READLBLK 33 X#define IO$_REWINDOFF 34 X#define IO$_SETMODE 35 X#define IO$_REWIND 36 X#define IO$_SKIPFILE 37 X#define IO$_SKIPRECORD 38 X#define IO$_SENSEMODE 39 X#define IO$_WRITEOF 40 X#define IO$_TTY_PORT 41 X#define IO$_LOGICAL 47 X#define IO$_WRITEVBLK 48 X#define IO$_READVBLK 49 X#define IO$_ACCESS 50 X#define IO$_CREATE 51 X#define IO$_DEACCESS 52 X#define IO$_DELETE 53 X#define IO$_MODIFY 54 X#define IO$_NETCONTROL 54 X#define IO$_READPROMPT 55 X#define IO$_SETCLOCK 55 X#define IO$_ACPCONTROL 56 X#define IO$_STARTDATA 56 X#define IO$_MOUNT 57 X#define IO$_TTYREADALL 58 X#define IO$_TTYREADPALL 59 X#define IO$_CONINTREAD 60 X#define IO$_CONINTWRITE 61 X#define IO$_VIRTUAL 63 X#define IO$M_FCODE 63 X#define IO$M_FMODIFIERS 65472 X#define IO$M_INHERLOG 2048 X#define IO$M_ERASE 1024 X#define IO$M_ENCRYPT 8192 X#define IO$M_DATACHECK 16384 X#define IO$M_INHRETRY 32768 X#define IO$M_INHSEEK 4096 X#define IO$M_REVERSE 64 X#define IO$M_NOWAIT 128 X#define IO$M_INHEXTGAP 4096 X#define IO$M_MSCPMODIFS 256 X#define IO$M_SHADOW 64 X#define IO$M_LOCATE 128 X#define IO$M_ALLHOSTS 64 X#define IO$M_DISSOLVE 128 X#define IO$M_NOCLEANUP 256 X#define IO$M_SPINDOWN 64 X#define IO$M_FORCEPATH 64 X#define IO$M_COMMOD 64 X#define IO$M_MOVETRACKD 128 X#define IO$M_DIAGNOSTIC 256 X#define IO$M_SKPSECINH 512 X#define IO$M_DELDATA 64 X#define IO$M_NOMRSP 64 X#define IO$M_SWAP 256 X#define IO$M_OPPOSITE 512 X#define IO$M_CLSEREXCP 512 X#define IO$M_ACCESS 64 X#define IO$M_CREATE 128 X#define IO$M_DELETE 256 X#define IO$M_MOUNT 512 X#define IO$M_DMOUNT 1024 X#define IO$M_REMOUNT 2048 X#define IO$M_BINARY 64 X#define IO$M_PACKED 128 X#define IO$M_NOW 64 X#define IO$M_READATTN 128 X#define IO$M_WRTATTN 256 X#define IO$M_SETPROT 512 X#define IO$M_NORSWAIT 1024 X#define IO$M_NOECHO 64 X#define IO$M_TIMED 128 X#define IO$M_CVTLOW 256 X#define IO$M_NOFILTR 512 X#define IO$M_DSABLMBX 1024 X#define IO$M_PURGE 2048 X#define IO$M_TRMNOECHO 4096 X#define IO$M_REFRESH 8192 X#define IO$M_ESCAPE 16384 X#define IO$M_EXTEND 32768 X#define IO$M_CANCTRLO 64 X#define IO$M_ENABLMBX 128 X#define IO$M_NOFORMAT 256 X#define IO$M_BREAKTHRU 512 X#define IO$M_NEWLINE 1024 X#define IO$M_TYPEAHDCNT 64 X#define IO$M_MAINT 64 X#define IO$M_CTRLYAST 128 X#define IO$M_CTRLCAST 256 X#define IO$M_HANGUP 512 X#define IO$M_OUTBAND 1024 X#define IO$M_TT_CONNECT 2048 X#define IO$M_TT_DISCON 4096 X#define IO$M_TT_PROCESS 8192 X#define IO$M_BRDCST 16384 X#define IO$M_LOOP 128 X#define IO$M_UNLOOP 256 X#define IO$M_LINE_OFF 512 X#define IO$M_SET_MODEM 1024 X#define IO$M_LINE_ON 2048 X#define IO$M_LOOP_EXT 4096 X#define IO$M_AUTXOF_ENA 8192 X#define IO$M_AUTXOF_DIS 16384 X#define IO$M_INCLUDE 2048 X#define IO$M_TT_ABORT 4096 X#define IO$M_INTERRUPT 64 X#define IO$M_ABORT 256 X#define IO$M_SYNCH 512 X#define IO$M_STARTUP 64 X#define IO$M_SHUTDOWN 128 X#define IO$M_ATTNAST 256 X#define IO$M_CTRL 512 X#define IO$M_RD_MEM 64 X#define IO$M_RD_MODEM 128 X#define IO$M_RD_COUNT 256 X#define IO$M_CLR_COUNT 1024 X#define IO$K_SRRUNOUT 0 X#define IO$K_PTPBSC 8192 X#define IO$K_LOOPTEST 57344 X#define IO$M_MORE 64 X#define IO$M_QUALIFIED 128 X#define IO$M_REDIRECT 64 X#define IO$M_ACCEPT 128 X#define IO$M_SETEVF 64 X#define IO$M_WORD 64 X#define IO$M_SETFNCT 512 X#define IO$M_DATAPATH 1024 X#define IO$M_CYCLE 4096 X#define IO$M_RESET 8192 X#define IO$M_SETCUADR 256 X#define IO$M_SETBSIZE 512 X#define IO$M_SETPOOLSZ 1024 X#define IO$M_SETENQCNT 2048 X#define IO$M_CLEAR 4096 X#define IO$M_LPBEXT 8192 X#define IO$M_LPBINT 16384 X#define IO$M_READCSR 32768 X#define IO$M_NOCTSWAIT 64 X#define IO$M_SLAVLOOP 128 X#define IO$M_NODSRWAIT 256 X#define IO$M_MAINTLOOP 512 X#define IO$M_LASTBLOCK 1024 X#define IO$M_INTCLOCK 4096 X#define IO$S_IODEF 2 X#define IO$S_FCODE 6 X#define IO$V_FCODE 0 X#define IO$S_FMODIFIERS 10 X#define IO$V_FMODIFIERS 6 X#define IO$V_INHERLOG 11 X#define IO$V_ERASE 10 X#define IO$V_ENCRYPT 13 X#define IO$V_DATACHECK 14 X#define IO$V_INHRETRY 15 X#define IO$V_INHSEEK 12 X#define IO$V_REVERSE 6 X#define IO$V_NOWAIT 7 X#define IO$V_INHEXTGAP 12 X#define IO$V_MSCPMODIFS 8 X#define IO$V_SHADOW 6 X#define IO$V_LOCATE 7 X#define IO$V_ALLHOSTS 6 X#define IO$V_DISSOLVE 7 X#define IO$V_NOCLEANUP 8 X#define IO$V_SPINDOWN 6 X#define IO$V_FORCEPATH 6 X#define IO$V_COMMOD 6 X#define IO$V_MOVETRACKD 7 X#define IO$V_DIAGNOSTIC 8 X#define IO$V_SKPSECINH 9 X#define IO$V_DELDATA 6 X#define IO$V_NOMRSP 6 X#define IO$V_SWAP 8 X#define IO$V_OPPOSITE 9 X#define IO$V_CLSEREXCP 9 X#define IO$V_ACCESS 6 X#define IO$V_CREATE 7 X#define IO$V_DELETE 8 X#define IO$V_MOUNT 9 X#define IO$V_DMOUNT 10 X#define IO$V_REMOUNT 11 X#define IO$V_BINARY 6 X#define IO$V_PACKED 7 X#define IO$V_NOW 6 X#define IO$V_READATTN 7 X#define IO$V_WRTATTN 8 X#define IO$V_SETPROT 9 X#define IO$V_NORSWAIT 10 X#define IO$V_NOECHO 6 X#define IO$V_TIMED 7 X#define IO$V_CVTLOW 8 X#define IO$V_NOFILTR 9 X#define IO$V_DSABLMBX 10 X#define IO$V_PURGE 11 X#define IO$V_TRMNOECHO 12 X#define IO$V_REFRESH 13 X#define IO$V_ESCAPE 14 X#define IO$V_EXTEND 15 X#define IO$V_CANCTRLO 6 X#define IO$V_ENABLMBX 7 X#define IO$V_NOFORMAT 8 X#define IO$V_BREAKTHRU 9 X#define IO$V_NEWLINE 10 X#define IO$V_TYPEAHDCNT 6 X#define IO$V_MAINT 6 X#define IO$V_CTRLYAST 7 X#define IO$V_CTRLCAST 8 X#define IO$V_HANGUP 9 X#define IO$V_OUTBAND 10 X#define IO$V_TT_CONNECT 11 X#define IO$V_TT_DISCON 12 X#define IO$V_TT_PROCESS 13 X#define IO$V_BRDCST 14 X#define IO$V_LOOP 7 X#define IO$V_UNLOOP 8 X#define IO$V_LINE_OFF 9 X#define IO$V_SET_MODEM 10 X#define IO$V_LINE_ON 11 X#define IO$V_LOOP_EXT 12 X#define IO$V_AUTXOF_ENA 13 X#define IO$V_AUTXOF_DIS 14 X#define IO$V_INCLUDE 11 X#define IO$V_TT_ABORT 12 X#define IO$V_INTERRUPT 6 X#define IO$V_ABORT 8 X#define IO$V_SYNCH 9 X#define IO$V_STARTUP 6 X#define IO$V_SHUTDOWN 7 X#define IO$V_ATTNAST 8 X#define IO$V_CTRL 9 X#define IO$V_RD_MEM 6 X#define IO$V_RD_MODEM 7 X#define IO$V_RD_COUNT 8 X#define IO$V_CLR_COUNT 10 X#define IO$V_MORE 6 X#define IO$V_QUALIFIED 7 X#define IO$V_REDIRECT 6 X#define IO$V_ACCEPT 7 X#define IO$V_SETEVF 6 X#define IO$V_WORD 6 X#define IO$V_SETFNCT 9 X#define IO$V_DATAPATH 10 X#define IO$V_CYCLE 12 X#define IO$V_RESET 13 X#define IO$V_SETCUADR 8 X#define IO$V_SETBSIZE 9 X#define IO$V_SETPOOLSZ 10 X#define IO$V_SETENQCNT 11 X#define IO$V_CLEAR 12 X#define IO$V_LPBEXT 13 X#define IO$V_LPBINT 14 X#define IO$V_READCSR 15 X#define IO$V_NOCTSWAIT 6 X#define IO$V_SLAVLOOP 7 X#define IO$V_NODSRWAIT 8 X#define IO$V_MAINTLOOP 9 X#define IO$V_LASTBLOCK 10 X#define IO$V_INTCLOCK 12 X198901161011160!End of IODEF.H X$WRITE SYS$ERROR "Creating MAKEFILE...." X$CREATE MAKEFILE. X$DECK/DOLLARS="198901161011160" Xmodatt.exe: modatt.obj X link/notrace/nodebug modatt,c/option X `032 Xcleanup: # clean up for DECUS submission X -purge X -rename *.* ;1 X `032 Xdebug: X link/debug modatt,c/option X `032 Xhelp: X runoff modatt.rnh X `032 Vmodatt.obj: modatt.c ATRDEF.H CLD.H FATDEF.H FCHDEF.H FIBDEF.H FJNDEF.H IODEF X.H X cc/debug modatt X198901161011160!End of MAKEFILE. X$WRITE SYS$ERROR "Creating MODATT.C..." X$CREATE MODATT.C X$DECK/DOLLARS="198901161011160" X/*Last Modified: 5-JUL-1988 13:30:01.78 by WILTS */ X/* Modified to rename product from FILE to MODATT to prevent conflicts in X command files since file is a commonly used symbol X*/ X/* MODATT.C, a utility to modify file characteristics. Originally written in X a mix of BASIC and MACRO, it was submitted to the 86 Fall DECUS Tape. X Recently I rewrote it in C, and added the functionality of my MODIFY X utility, allowing it to modify creation, expiration, revision, and backup X dates, as well as the 'number of revisions'. This should demonstrate the X ease with which such things are modified, thus serving to warn people that V such things can not always be counted on. Sadly, these should be able to b Xe V counted on, and one would hope that in a future version of VMS these becom Xe X protected, at the very least from user mode modification. X `032 X Written by Joe Meadows Jr, at the Fred Hutchinson Cancer Research Center X BITNET: JOE@FHCRCVAX X PHONE: (206) 467-4970 X `032 X There are no restrictions on this code, you may sell it, include it with V any commercial package, or feed it to a whale.. However, I would appreciat Xe X it if you kept this comment in the source code so that anyone receiving X this code knows who to contact in case of problems. Note that I do not X demand this condition.. X */ X/* Modifications: X 05-OCT-1987 X changed calls to strcmp() into strncmp() to fix problem with X not being able to abbreviate keywords in /TYPE and /ORGANIZATION X 15-SEP-1987 X modified handling of qualifiers, move check for /OUTPUT outside of X loop, get values of all other qualifiers before looping through X wildcarded filenames. X 22-AUG-1987 X Bugfixes (argh!). Fixed output of /NOEXACT, added "-" to first X line of output. Handle list of file names, as documented.. Make sure X all lines are under 80 characters, so mailers don't barf. X*/ X `032 X#include descrip X#include climsgdef X#include rms X#include stdio X `032 X#include "atrdef.h" X#include "fatdef.h" X#include "fchdef.h" X#include "fibdef.h" X#include "fjndef.h" X#include "iodef.h" X#include "cld.h" X `032 Xchar *cvt_time(); Xunsigned int change(); Xunsigned int antichange(); X `032 Xmain() X`123 X static struct FAB Fab; X static struct NAM Nam; X static struct fibdef Fib; /* short fib */ X `032 X static struct dsc$descriptor FibDesc = X `123sizeof(Fib),DSC$K_DTYPE_Z,DSC$K_CLASS_S,&Fib`125; X static struct dsc$descriptor_s DevDesc = X `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,&Nam.nam$t_dvi[1]`125; X static struct FATDEF Fat; X static union `123 X struct fchdef fch; X long int dummy; X `125 uchar; X static struct fjndef jnl; X static long int Cdate[2],Rdate[2],Edate[2],Bdate[2]; X static short int revisions; X `032 X static struct ATRDEF Atr[] = `123 X sizeof(Fat),ATR$C_RECATTR,&Fat, /* record attributes */ X sizeof(uchar),ATR$C_UCHAR,&uchar, /* File characteristics */ X sizeof(Cdate),ATR$C_CREDATE,&Cdate[0], /* Creation date */ X sizeof(Rdate),ATR$C_REVDATE,&Rdate[0], /* Revision date */ X sizeof(Edate),ATR$C_EXPDATE,&Edate[0], /* Expiration date */ X sizeof(Bdate),ATR$C_BAKDATE,&Bdate[0], /* Backup date */ X sizeof(revisions),ATR$C_ASCDATES,&revisions, /* number of revisions */ X sizeof(jnl),ATR$C_JOURNAL,&jnl, /* journal flags */ X 0,0,0 X `125 ; X `032 X static char EName[NAM$C_MAXRSS]; X static char RName[NAM$C_MAXRSS]; X static struct dsc$descriptor_s FileName = X `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`125; X static short int DevChan; X static short int iosb[4]; X `032 X static long int i,j,status; X static char *retval; X static short int output = 0; X `032 X if (cli_present("OUTPUT") & 1) `123 X /* see if they want output to go to a file or to SYS$OUTPUT */ X status = cli_get_value("OUTPUT",&retval); X if (status & 1) X freopen(retval,"w",stdout,"rfm=var","rat=cr"); X output = 1; X `125; X `032 X while (cli_get_value("P1",&retval) & 1) `123 X /* initialize RMS structures, we need a NAM to retrieve the FID */ X Fab = cc$rms_fab; X Fab.fab$l_fna = retval ; /* name of file */ X Fab.fab$b_fns = strlen(retval); X Fab.fab$l_nam = &Nam; /* FAB has an associated NAM */ X Nam = cc$rms_nam; X Nam.nam$l_esa = &EName; /* expanded filename */ X Nam.nam$b_ess = sizeof(EName); X Nam.nam$l_rsa = &RName; /* resultant filename */ X Nam.nam$b_rss = sizeof(RName); X `032 X /* do $PARSE and $SEARCH here */ X status = sys$parse(&Fab); X if (!(status & 1)) return(status); X `032 X /* search for the first file.. If none signal error */ X status = sys$search(&Fab); X if (!(status & 1)) return(status); X `032 X while (status & 1) `123 X /* dummy cli_get_value, used merely to reset context */ X status = cli_get_value("OUTPUT",&retval); X `032 X /* initialize Device name length, note that this points into the NAM X to get the device name filled in by the $PARSE, $SEARCH services */ X DevDesc.dsc$w_length = Nam.nam$t_dvi[0]; X `032 X status = sys$assign(&DevDesc,&DevChan,0,0); X if (!(status & 1)) return(status); X `032 X FileName.dsc$a_pointer = Nam.nam$l_name; X FileName.dsc$w_length = Nam.nam$b_name+Nam.nam$b_type+Nam.nam$b_ver; X `032 X /* Initialize the FIB */ X for (i=0;i<3;i++) X Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; X for (i=0;i<3;i++) X Fib.fib$w_did[i]=Nam.nam$w_did[i]; X `032 X /* Use the IO$_ACCESS function to return info about the file */ X /* Note, used this way, the file is not opened, and the expiration */ X /* and revision dates are not modified */ X status = sys$qiow(0,DevChan,IO$_ACCESS,&iosb,0,0, X &FibDesc,&FileName,0,0,&Atr,0); X if (!(status & 1)) return(status); X status = iosb[0]; X if (!(status & 1)) return(status); X `032 X if (output) `123 X `032 X /* if it's /noexact, use only name & type part of the result name */ X /* also fudge the resultant file name to have null termination */ X if (cli_present("EXACT") & 1) `123 X i = 0; X j = Nam.nam$b_rsl; X `125 X else `123 X i = Nam.nam$b_node + Nam.nam$b_dev + Nam.nam$b_dir; X j = Nam.nam$b_name+Nam.nam$b_type; X `125 X printf("$ MODATT %.*s-\n",j,&RName[i] ); X `032 X printf(" /%s=%s",t_rtype,ta_rtype[Fat.fat$v_rtype]); X printf(" /%s=%s -\n",t_fileorg,ta_fileorg[Fat.fat$v_fileorg]); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s) -\n", X t_attr, X Fat.fat$v_fortrancc?"":"NO",t_fortrancc, X Fat.fat$v_impliedcc?"":"NO",t_impliedcc, X Fat.fat$v_printcc?"":"NO",t_printcc, X Fat.fat$v_nospan?"NO":"",t_nospan); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s, -\n", X t_char, X uchar.fch.fch$v_badacl?"":"NO",t_badacl, X uchar.fch.fch$v_nobackup?"NO":"",t_nobackup, X uchar.fch.fch$v_contigb?"":"NO",t_contigb, X uchar.fch.fch$v_nocharge?"NO":"",t_nocharge); X printf(" %s%s,%s%s,%s%s,%s%s,%s%s, -\n", X uchar.fch.fch$v_contig?"":"NO",t_contig, X uchar.fch.fch$v_directory?"":"NO",t_directory, X uchar.fch.fch$v_erase?"":"NO",t_erase, X uchar.fch.fch$v_badblock?"":"NO",t_badblock, X uchar.fch.fch$v_locked?"":"NO",t_locked); X printf(" %s%s,%s%s,%s%s,%s%s,%s%s) -\n", X uchar.fch.fch$v_markdel?"":"NO",t_markdel, X uchar.fch.fch$v_spool?"":"NO",t_spool, X uchar.fch.fch$v_readcheck?"":"NO",t_readcheck, X uchar.fch.fch$v_writeback?"":"NO",t_writeback, X uchar.fch.fch$v_writcheck?"":"NO",t_writcheck); X printf(" /%s=%d",t_vfcsize,Fat.fat$b_vfcsize ); X printf(" /%s=%d",t_rsize,Fat.fat$w_rsize ); X printf(" /%s=%d -\n",t_maxrec,Fat.fat$w_maxrec ); V printf(" /%s=%d",t_efblk,(Fat.fat$w_efblkh<<16)`124Fat.fat$w_efblkl) X; X printf(" /%s=%d -\n",t_ffbyte,Fat.fat$w_ffbyte ); X printf(" /%s=%d -\n",t_hiblk, X (Fat.fat$w_hiblkh<<16)`124Fat.fat$w_hiblkl); X printf(" /%s=%d -\n",t_defext,Fat.fat$w_defext ); X printf(" /%s=%d -\n",t_bktsize,Fat.fat$b_bktsize ); X printf(" /%s=%d -\n",t_gbc,Fat.fat$w_gbc ); X printf(" /%s=%d -\n",t_dirvers,Fat.fat$w_versions ); X printf(" /%s=%d -\n",t_versions,Fib.fib$w_verlimit ); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s,%s%s,%s%s,%s%s) -\n", X t_journal, X jnl.fjn$v_journal_file?"":"NO",t_journal_file, X jnl.fjn$v_aijnl?"":"NO",t_aijnl, X jnl.fjn$v_atjnl?"":"NO",t_atjnl, X jnl.fjn$v_bijnl?"":"NO",t_bijnl, X jnl.fjn$v_rujnl?"":"NO",t_rujnl, X jnl.fjn$v_never_ru?"":"NO",t_never_ru, X jnl.fjn$v_only_ru?"":"NO",t_only_ru); X if ((Cdate[0]==0) && (Cdate[1]==0)) X printf(" /NO%s -\n",t_credate); X else X printf(" /%s=\"%s\" -\n",t_credate,cvt_time(Cdate)); X if ((Rdate[0]==0) && (Rdate[1]==0)) X printf(" /NO%s",t_revdate); X else X printf(" /%s=\"%s\"",t_revdate,cvt_time(Rdate)); X printf(" /%s=%d -\n",t_revisions,revisions); X if ((Edate[0]==0) && (Edate[1]==0)) X printf(" /NO%s -\n",t_expdate); X else X printf(" /%s=\"%s\" -\n",t_expdate,cvt_time(Edate)); X if ((Bdate[0]==0) && (Bdate[1]==0)) X printf(" /NO%s\n",t_bakdate); X else X printf(" /%s=\"%s\"\n",t_bakdate,cvt_time(Bdate)); X `125; /* if (cli_present("OUTPUT") & 1) */ X `032 X if (cli_present(t_rtype) & 1) `123 X status = cli_get_value(t_rtype,&retval); X for (i=0;i<7;i++) X if (strncmp(retval,ta_rtype[i],strlen(retval))==0) X Fat.fat$v_rtype = i; X `125; X if (cli_present(t_fileorg) & 1) `123 X status = cli_get_value(t_fileorg,&retval); X for (i=0;i<4;i++) X if (strncmp(retval,ta_fileorg[i],strlen(retval))==0) X Fat.fat$v_fileorg = i; X `125; X if (cli_present(t_attr) & 1) `123 X Fat.fat$v_fortrancc = change(Fat.fat$v_fortrancc,t_attr,t_fortrancc); X Fat.fat$v_impliedcc = change(Fat.fat$v_impliedcc,t_attr,t_impliedcc); X Fat.fat$v_printcc = change(Fat.fat$v_printcc,t_attr,t_printcc); X Fat.fat$v_nospan = antichange(Fat.fat$v_nospan,t_attr,t_nospan); X `125; X if (cli_present(t_char) & 1) `123 X uchar.fch.fch$v_badacl = X change(uchar.fch.fch$v_badacl,t_char,t_badacl); X uchar.fch.fch$v_nobackup = X antichange(uchar.fch.fch$v_nobackup,t_char,t_nobackup); X uchar.fch.fch$v_contigb = X change(uchar.fch.fch$v_contigb,t_char,t_contigb); X uchar.fch.fch$v_nocharge = X antichange(uchar.fch.fch$v_nocharge,t_char,t_nocharge); X uchar.fch.fch$v_contig = X change(uchar.fch.fch$v_contig,t_char,t_contig); X uchar.fch.fch$v_directory = X change(uchar.fch.fch$v_directory,t_char,t_directory); X uchar.fch.fch$v_erase = X change(uchar.fch.fch$v_erase,t_char,t_erase); X uchar.fch.fch$v_badblock = X change(uchar.fch.fch$v_badblock,t_char,t_badblock); X uchar.fch.fch$v_locked = X change(uchar.fch.fch$v_locked,t_char,t_locked); X uchar.fch.fch$v_markdel = X change(uchar.fch.fch$v_markdel,t_char,t_markdel); X uchar.fch.fch$v_spool = change(uchar.fch.fch$v_spool,t_char,t_spool); X uchar.fch.fch$v_readcheck = X change(uchar.fch.fch$v_readcheck,t_char,t_readcheck); X uchar.fch.fch$v_writeback = X change(uchar.fch.fch$v_writeback,t_char,t_writeback); X uchar.fch.fch$v_writcheck = X change(uchar.fch.fch$v_writcheck,t_char,t_writcheck); X `125; X if (cli_present(t_vfcsize) & 1) `123 X status = cli_get_value(t_vfcsize,&retval); X Fat.fat$b_vfcsize = atoi(retval); X `125; X if (cli_present(t_rsize) & 1) `123 X status = cli_get_value(t_rsize,&retval); X Fat.fat$w_rsize = atoi(retval); X `125; X if (cli_present(t_maxrec) & 1) `123 X status = cli_get_value(t_maxrec,&retval); X Fat.fat$w_maxrec = atoi(retval); X `125; X if (cli_present(t_efblk) & 1) `123 X status = cli_get_value(t_efblk,&retval); X Fat.fat$w_efblkh = atoi(retval)>>16; X Fat.fat$w_efblkl = atoi(retval)-Fat.fat$w_efblkh; X `125; X if (cli_present(t_ffbyte) & 1) `123 X status = cli_get_value(t_ffbyte,&retval); X Fat.fat$w_ffbyte = atoi(retval); X `125; X if (cli_present(t_hiblk) & 1) `123 X status = cli_get_value(t_hiblk,&retval); X Fat.fat$w_hiblkh = atoi(retval)>>16; X Fat.fat$w_hiblkl = atoi(retval)-Fat.fat$w_hiblkh; X `125; X if (cli_present(t_defext) & 1) `123 X status = cli_get_value(t_defext,&retval); X Fat.fat$w_defext = atoi(retval); X `125; X if (cli_present(t_bktsize) & 1) `123 X status = cli_get_value(t_bktsize,&retval); X Fat.fat$b_bktsize = atoi(retval); X `125; X if (cli_present(t_gbc) & 1) `123 X status = cli_get_value(t_gbc,&retval); X Fat.fat$w_gbc = atoi(retval); X `125; X if (cli_present(t_dirvers) & 1) `123 X status = cli_get_value(t_dirvers,&retval); X Fat.fat$w_versions = atoi(retval); X `125; X if (cli_present(t_versions) & 1) `123 X status = cli_get_value(t_versions,&retval); X Fib.fib$w_verlimit = atoi(retval); X if (Fib.fib$w_verlimit == 0) X Fib.fib$w_verlimit = 32767; X `125; X /* if this value is illegal, don't try to set it! */ X if (Fib.fib$w_verlimit > 32767) X Fib.fib$w_verlimit = 0; X if (cli_present(t_journal) & 1) `123 X jnl.fjn$v_journal_file = X change(jnl.fjn$v_journal_file,t_journal,t_journal_file); X jnl.fjn$v_aijnl = change(jnl.fjn$v_aijnl,t_journal,t_aijnl); X jnl.fjn$v_atjnl = change(jnl.fjn$v_atjnl,t_journal,t_atjnl); X jnl.fjn$v_bijnl = change(jnl.fjn$v_bijnl,t_journal,t_bijnl); X jnl.fjn$v_rujnl = change(jnl.fjn$v_rujnl,t_journal,t_rujnl); X jnl.fjn$v_never_ru = change(jnl.fjn$v_never_ru,t_journal,t_never_ru); X jnl.fjn$v_only_ru = change(jnl.fjn$v_only_ru,t_journal,t_only_ru); X `125; X status = cli_present(t_credate); X if (status & 1) `123 X status = cli_get_value(t_credate,&retval); X bintim(retval,Cdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Cdate[0]=0; X Cdate[1]=0; X `125; X status = cli_present(t_revdate); X if (status & 1) `123 X status = cli_get_value(t_revdate,&retval); X bintim(retval,Rdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Rdate[0]=0; X Rdate[1]=0; X `125; X if (cli_present(t_revisions) & 1) `123 X status = cli_get_value(t_revisions,&retval); X revisions = atoi(retval); X `125; X status = cli_present(t_expdate); X if (status & 1) `123 X status = cli_get_value(t_expdate,&retval); X bintim(retval,Edate); X `125 X else X if (status == CLI$_NEGATED) `123 X Edate[0]=0; X Edate[1]=0; X `125; X status = cli_present(t_bakdate); X if (status & 1) `123 X status = cli_get_value(t_bakdate,&retval); X bintim(retval,Bdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Bdate[0]=0; X Bdate[1]=0; X `125; X `032 X /* note, part of the FIB was cleared by earlier QIOW, so reset it */ X Fib.fib$l_acctl = FIB$M_NORECORD; X for (i=0;i<3;i++) X Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; X for (i=0;i<3;i++) X Fib.fib$w_did[i]=Nam.nam$w_did[i]; X `032 X /* Use the IO$_MODIFY function to change info about the file */ X /* Note, used this way, the file is not opened, however this would */ X /* normally cause the expiration and revision dates to be modified. */ X /* Using FIB$M_NORECORD prohibits this from happening. */ X status = sys$qiow(0,DevChan,IO$_MODIFY,&iosb,0,0, X &FibDesc,&FileName,0,0,&Atr,0); X if (!(status & 1)) return(status); X `032 X status = iosb[0]; X if (!(status & 1)) return(status); X `032 X status = sys$dassgn(DevChan); X if (!(status & 1)) return(status); X `032 X /* look for next file, if none, no big deal.. */ X status = sys$search(&Fab); X `125 X `125 X`125 X `032 Xlong int cli_present(s) X char *s; X`123 V static struct dsc$descriptor s_desc = `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`1 X25; X `032 X s_desc.dsc$w_length = strlen(s); X s_desc.dsc$a_pointer = s; X return(cli$present(&s_desc)); X`125 X `032 Xlong int cli_get_value(s1,s2) X char *s1,**s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char null = '\0'; X static struct dsc$descriptor null_desc = X `1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&null`125; X long int status; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X `032 X status = cli$get_value(&s1_desc,&s2_desc); X `032 X if (status & 1) X `123 X str$append(&s2_desc,&null_desc); X *s2 = s2_desc.dsc$a_pointer; X `125 X else X *s2 = 0; X return(status); X`125 X `032 Xchar *cvt_time(date) X long int date[2]; X`123 X static char str[27]; V static struct dsc$descriptor date_str=`12326,DSC$K_DTYPE_T,DSC$K_CLASS_S,&s Xtr`125; X `032 X if ((date[0]==0) && (date[1]==0)) X return("none"); X `032 X sys$asctim(0,&date_str,date,0); X str[26]='\0'; X `032 X return(&str); X`125 X `032 Xbintim(time,binval) X char *time; X long int binval[2]; X`123 V static struct dsc$descriptor date_str=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`1 X25; X date_str.dsc$w_length = strlen(time); X date_str.dsc$a_pointer = time; X `032 X sys$bintim(&date_str,binval); X`125 X `032 Xunsigned int change(orig,s1,s2) X unsigned int orig; X char *s1,*s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s3_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char point = '.'; V static struct dsc$descriptor pt_desc=`1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&poi Xnt`125; X long int status; X unsigned int i; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X s2_desc.dsc$w_length = strlen(s2); X s2_desc.dsc$a_pointer = s2; X `032 X /* s3 = s1 + "." + s2 */ X str$copy_dx(&s3_desc,&s1_desc); X str$append(&s3_desc,&pt_desc); X str$append(&s3_desc,&s2_desc); X `032 X status = cli$present(&s3_desc); X i=orig; X if (status & 1) X i=1; X if (status == CLI$_NEGATED) X i=0; X return(i); X`125 X `032 Xunsigned int antichange(orig,s1,s2) X unsigned int orig; X char *s1,*s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s3_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char point = '.'; V static struct dsc$descriptor pt_desc=`1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&poi Xnt`125; X long int status; X unsigned int i; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X s2_desc.dsc$w_length = strlen(s2); X s2_desc.dsc$a_pointer = s2; X `032 X /* s3 = s1 + "." + s2 */ X str$copy_dx(&s3_desc,&s1_desc); X str$append(&s3_desc,&pt_desc); X str$append(&s3_desc,&s2_desc); X `032 X status = cli$present(&s3_desc); X i=orig; X if (status & 1) X i=0; X if (status == CLI$_NEGATED) X i=1; X return(i); X`125 X198901161011160!End of MODATT.C X$WRITE SYS$ERROR "Creating MODATT.CLD..." X$CREATE MODATT.CLD X$DECK/DOLLARS="198901161011160" V!*************************************MODATT********************************* X*** X** Xdefine type RECORD_ATTRIBUTES X keyword FORTRANCC X negatable X keyword IMPLIEDCC X negatable X keyword PRINTCC X negatable X keyword SPAN X negatable Xdefine type FILE_CHARACTERISTICS X keyword ACL_CORRUPT X negatable X keyword BACKUP X negatable X keyword BEST_TRY_CONTIGUOUS X negatable X keyword CHARGE X negatable X keyword CONTIGUOUS X negatable X keyword DIRECTORY X negatable X keyword ERASE_ON_DELETE X negatable X keyword FILE_CORRUPT X negatable X keyword LOCKED X negatable X keyword MARKED_FOR_DELETE X negatable X keyword READ_VERIFY X negatable X keyword SPOOL X negatable X keyword WRITE_BACK X negatable X keyword WRITE_VERIFY X negatable Xdefine type JOURNAL_TYPES X keyword JOURNAL X negatable X keyword AIJNL X negatable X keyword ATJNL X negatable X keyword BIJNL X negatable X keyword RUJNL X negatable X keyword NEVER_RU X negatable X keyword ONLY_RU X negatable Xdefine type FILE_ORGANIZATION X keyword DIRECT X keyword INDEXED X keyword RELATIVE X keyword SEQUENTIAL Xdefine type RECORD_TYPE X keyword CRSTREAM X keyword FIXED X keyword LFSTREAM X keyword STREAM X keyword UNDEFINED X keyword VARIABLE X keyword VFC Xdefine verb MODATT X image ECSEXE:MODATT X parameter P1 , prompt="File" X value (required,list,type=$infile) X qualifier OUTPUT X value (type=$outfile) X qualifier EXACT X default X qualifier ATTRIBUTES X nonnegatable X value (required,list,type=RECORD_ATTRIBUTES) X qualifier BUCKET_SIZE X nonnegatable X value (required,type=$number) X qualifier CHARACTERISTICS X nonnegatable X value (required,list,type=FILE_CHARACTERISTICS) X qualifier DEFAULT_EXTEND_QUANTITY X nonnegatable X value (required,type=$number) X qualifier END_OF_FILE_BLOCK X value (required,type=$number) X qualifier FIRST_FREE_BYTE X value (required,type=$number) X qualifier GLOBAL_BUFFER_COUNT X value (required,type=$number) X qualifier HIGHEST_ALLOCATED_BLOCK X value (required,type=$number) X qualifier JOURNAL X nonnegatable X value (required,list,type=JOURNAL_TYPES) X qualifier MAXIMUM_RECORD_SIZE X value (required,type=$number) X qualifier ORGANIZATION X value (required,type=FILE_ORGANIZATION) X qualifier RECORD_SIZE X value (required,type=$number) X qualifier TYPE X value (required,type=RECORD_TYPE) X qualifier DIRECTORY_VERSION_LIMIT X value (required,type=$number) X qualifier VERSION_LIMIT X value (required,type=$number) X qualifier VFC_SIZE X value (required,type=$number) X qualifier CREATION_DATE X value (required,type=$datetime) X qualifier REVISION_DATE X value (required,type=$datetime) X qualifier EXPIRATION_DATE X value (required,type=$datetime) X qualifier BACKUP_DATE X value (required,type=$datetime) X qualifier NUMBER_OF_REVISIONS X value (required,type=$number) X198901161011160!End of MODATT.CLD X$WRITE SYS$ERROR "Creating MODATT.HLP..." X$CREATE MODATT.HLP X$DECK/DOLLARS="198901161011160" X1 MODATT. X `032 XMODATT is a utility for modifying file attributes.. X `032 X. X `032 XMODATT DOES NOT convert a file. MODATT changes characteristics of the. X `032 Xfile, and thus VMS' view of the file. MODATT can be used simply to view. X `032 Xthe current characteristics of a file, or it can be used to change any of. X `032 Xthe changeable characteristics. This utility can be VERY dangerous, and. X `032 Xshould only be used if you have a good understanding of RMS. Care should. X `032 Xbe taken when using this utility. While it doesn't actually change the. X `032 Xfile itself, you might consider using a backup copy of the file.. X `032 X. X `032 XThe first thing you should do is to use MODATT/OUTPUT=output to generate a. X `032 Xlisting of the current characteristics of the file. In this way, you will. X `032 Xbe able to return the file to its original state.. X `032 X2 Examples. X `032 XOne common use of MODATT, is to 'coerce' a file into being a Fixed 512 byte. X `032 Xfile, to upload/download the file via kermit. For example, given a saveset. X `032 XA.SAV, you could do the following:. X `032 X. X `032 XMODATT/OUTPUT=A.FIX/NOEXACT A.SAV/RECORD_SIZE=512/TYPE=FIXED. X `032 X. X `032 XYou could then transfer the two files A.FIX and A.SAV using Kermit (it. X `032 Xwould take two transfers, A.FIX with 'set file type text', and A.SAV using. X `032 X'set file type fixed'). X `032 X. X `032 XTo turn the file back into its original useable self, you could then do:. X `032 X @A.FIX. X `032 XWhich would cause the originally saved characteristics to be put back on. X `032 Xthe file.. X `032 X. X `032 X. X `032 XAnother common use is to set the Fortran carriage control attribute so that. X `032 Xa file can be printed with fortran carriage control, this can be done as. X `032 Xfollows:. X `032 X. X `032 XMODATT/OUTPUT=OLD.TMP. X `032 XNETMONTH.*/ATTRIBUTES=(FORTRANCC,NOIMPLIEDCC,NOPRINTCC). X `032 X2 parameters. X `032 XMODATT takes one parameter, a filename, or list of filenames. The. X `032 Xfilenames can be wildcarded.. X `032 X2 qualifiers. X `032 X/OUTPUT. X `032 X /OUTPUT[=filename]. X `032 X. X `032 XThis qualifier causes the characteristics of the file to be displayed.. X `032 XNote that if you are also changing characteristics the displayed. X `032 Xcharacteristics are the original characteristics. You can have the output. X `032 Xplaced in a file, by specifying a file name in the OUTPUT clause. This is. X `032 Xusefull for restoring a file to its original state.. X `032 X/EXACT. X `032 X /[NO]EXACT. X `032 X. X `032 XWhen used with /OUTPUT, this qualifier determines wether a complete file. X `032 Xspec is displayed (/EXACT) or wether only the filename and filetype will be. X `032 Xdisplayed (/NOEXACT).. X `032 X. X `032 X /EXACT is the default.. X `032 X/ATTRIBUTES. X `032 XThis qualifier determines the record attributes. You may enter a list of. X `032 X(negatable) attributes. The following attributes are legal:. X `032 X FORTRANCC - Fortran carriage control. X `032 X IMPLIEDCC - implied carriage control. X `032 X PRINTCC - print file carriage control. X `032 X SPAN - records can span blocks. X `032 X/CHARACTERISTICS. X `032 XThis qualifier determines the file characteristics. You may enter a list. X `032 Xof (negatable) items. The following items are legal:. X `032 X ACL_CORRUPT - File's ACL is corrupt. X `032 X BACKUP - File is to be backed up. X `032 X BEST_TRY_CONTIGUOUS - Keep file as contiguous as possible. X `032 X CHARGE - File space is charged against owner. X `032 X CONTIGUOUS - File is contiguous. X `032 X DIRECTORY - File is a directory. X `032 X ERASE_ON_DELETE - Erase contents of file before deletion. X `032 X FILE_CORRUPT - File contains bad blocks. X `032 X LOCKED - File is deaccess-locked. X `032 X MARKED_FOR_DELETE - File is marked for deletion. X `032 X READ_VERIFY - Verify all read operations. X `032 X SPOOL - File is an intermediate spool file. X `032 X WRITE_BACK - File may be write-back cached. X `032 X WRITE_VERIFY - Verify all write operations. X `032 XNote that not all of these items are really changeable. They are merely. X `032 Xincluded for completeness sake.. X `032 X/ORGANIZATION. X `032 XThis qualifier determines the file organization. you must enter one of:. X `032 X DIRECT. X `032 X INDEXED. X `032 X RELATIVE. X `032 X SEQUENTIAL. X `032 X/TYPE. X `032 XThis qualifier determines the record type. you must enter one of:. X `032 X FIXED - fixed record type. X `032 X VARIABLE - variable record type. X `032 X VFC - variable + fixed control. X `032 X STREAM - RMS-11 (DEC traditional) stream format. X `032 X LFSTREAM - LF-terminated stream format. X `032 X CRSTREAM - CR-terminated stream format. X `032 X UNDEFINED - undefined record type. X `032 X/BUCKET_SIZE. X `032 XThis qualifier determines the bucket size.. X `032 X/DEFAULT_EXTEND_QUANTITY. X `032 XThis qualifier determines the default extend quantity.. X `032 X/END_OF_FILE_BLOCK. X `032 XThis qualifier determines the end of file block.. X `032 X/FIRST_FREE_BYTE. X `032 XThis qualifier determines the first free byte in the end of file block.. X `032 X/HIGHEST_ALLOCATED_BLOCK. X `032 XThis qualifier determines the highest allocated block.. X `032 X/GLOBAL_BUFFER_COUNT. X `032 XThis qualifier determines the global buffer count.. X `032 X/JOURNAL. X `032 XThis qulifier determines the type of journaling enabled on the file. you. X `032 Xmust enter one of:. X `032 X JOURNAL - this is a journal file. X `032 X AIJNL - enable after image journal. X `032 X ATJNL - enable audit trail journal. X `032 X BIJNL - enable before image journal. X `032 X RUJNL - enable recovery unit journal. X `032 X NEVER_RU - file is never accessible in recovery unit. X `032 X ONLY_RU - file is only accessible in recovery unit. X `032 X/MAXIMUM_RECORD_SIZE. X `032 XThis qualifier determines the maximum record size.. X `032 X/RECORD_SIZE. X `032 XThis qualifier determines the record size.. X `032 X/DIRECTORY_VERSION_LIMIT. X `032 XThis qualifier allows you to set the default number of allowable versions. X `032 Xof file. This is applicable only to directories. Note that 32767 is. X `032 Xequivalent to 0, or No Limit, so to say.. X `032 X. X `032 XThis is equivalent to SET DIRECTORY/VERSION=n.. X `032 X/VERSION_LIMIT. X `032 XThis qualifier allows you to set the number of allowable versions of a. X `032 Xfile. Note that 32767 is equivalent to 0, or No Limit, so to say.. X `032 X. X `032 XThis is equivalent to SET FILE/VERSION=n.. X `032 X/VFC_SIZE. X `032 XThis qualifier allows you to set the vcf size.. X `032 X/CREATION_DATE. X `032 X /[NO]CREATION_DATE. X `032 X. X `032 XThis qualifier allows you to set the creation date. /NOCREATION_DATE. X `032 Xclears the creation date.. X `032 X/REVISION_DATE. X `032 X /[NO]REVISION_DATE. X `032 X. X `032 XThis qualifier allows you to set the revision date. /NOREVISION_DATE. X `032 Xclears the revision date.. X `032 X/EXPIRATION_DATE. X `032 X /[NO]EXPIRATION_DATE. X `032 X. X `032 XThis qualifier allows you to set the expiration date. /NOEXPIRATION_DATE. X `032 Xclears the expiration date.. X `032 X/BACKUP_DATE. X `032 X /[NO]BACKUP_DATE. X `032 X. X `032 XThis qualifier allows you to set the backup date. /NOBACKUP_DATE clears. X `032 Xthe backup date.. X `032 X/NUMBER_OF_REVISIONS. X `032 XThis qualifier allows you to set the number of revisions.. X `032 X198901161011160!End of MODATT.HLP X$WRITE SYS$ERROR "Creating MODATT.RNH..." X$CREATE MODATT.RNH X$DECK/DOLLARS="198901161011160" X.! This is the help file for MODATT, just say RUNOFF MODATT.RNH X.! be sure to look through this and make any site specific X.! changes - just look for the commented lines ".!" X.lm 0 X.rm 75 X1 MODATT X.br X MODATT is a utility for modifying file attributes. X.blank X MODATT DOES NOT convert a file. MODATT changes characteristics of Xthe file, and thus VMS' view of the file. MODATT can be used simply to view Xthe current characteristics of a file, or it can be used to change any of Xthe changeable characteristics. This utility can be VERY dangerous, and Xshould only be used if you have a good understanding of RMS. Care should Xbe taken when using this utility. While it doesn't actually change the file Xitself, you might consider using a backup copy of the file. X.blank X.! Modify dev:[dir] to point to where you have stored MODATT.CLD X.! or comment out the following lines if you install it in the X.! system wide dcltables X.!You must issue the command SET COMMAND dev:[dir]MODATT to use this utility. X.!You may include this line in your login.com file. X.!.blank X The first thing you should do is to use MODATT/OUTPUT=output Xto generate a listing of the current characteristics of the file. In Xthis way, you will be able to return the file to its original state. X.break X2 Examples X.break X One common use of MODATT, is to 'coerce' a file into being a X Fixed 512 byte file, to upload/download the file via kermit. X For example, given a saveset A.SAV, you could do the following: X.blank X MODATT/OUTPUT=A.FIX/NOEXACT A.SAV/RECORD__SIZE=512/ORGANIZATION=FIXED X.blank X You could then transfer the two files A.FIX and A.SAV X using Kermit (it would take two transfers, A.FIX with X 'set file type text', and A.SAV using 'set file type fixed') X.blank X To turn the file back into its original useable self, you could X then do: X.break X.i+5;@A.FIX X.break X Which would cause the originally saved characteristics to be put X back on the file. X.blank X.blank X Another common use is to set the Fortran carriage control attribute X so that a file can be printed with fortran carriage control, this X can be done as follows: X.blank XMODATT/OUTPUT=OLD.TMP NETMONTH.*/ATTRIBUTES=(FORTRANCC,NOIMPLIEDCC,NOPRINTCC) X.break X2 parameters X.break X MODATT takes one parameter, a filename, or list of filenames. X The filenames can be wildcarded. X.break X2 qualifiers X.break X/OUTPUT X.break X.i+5;/OUTPUT[=filename] X.blank X This qualifier causes the characteristics of the file to X be displayed. Note that if you are also changing characteristics X the displayed characteristics are the original characteristics. X You can have the output placed in a file, by specifying a file X name in the OUTPUT clause. This is usefull for restoring a file X to its original state. X.break X/EXACT X.break X.i+5;/[NO]EXACT X.blank X When used with /OUTPUT, this qualifier determines wether a X complete file spec is displayed (/EXACT) or wether only the filename and X filetype will be displayed (/NOEXACT). X.blank X.i+5;/EXACT is the default. X.break X/ATTRIBUTES X.break X This qualifier determines the record attributes. X You may enter a list of (negatable) attributes. X The following attributes are legal: X.break X.i+5;FORTRANCC - Fortran carriage control X.break X.i+5;IMPLIEDCC - implied carriage control X.break X.i+5;PRINTCC - print file carriage control X.break X.i+5;SPAN - records can span blocks X.break X/CHARACTERISTICS X.break X This qualifier determines the file characteristics. X You may enter a list of (negatable) items. X The following items are legal: X.break X.i+5;ACL__CORRUPT - File's ACL is corrupt X.break X.i+5;BACKUP - File is to be backed up X.break X.i+5;BEST__TRY__CONTIGUOUS - Keep file as contiguous as possible X.break X.i+5;CHARGE - File space is charged against owner X.break X.i+5;CONTIGUOUS - File is contiguous X.break X.i+5;DIRECTORY - File is a directory X.break X.i+5;ERASE__ON__DELETE - Erase contents of file before deletion X.break X.i+5;FILE__CORRUPT - File contains bad blocks X.break X.i+5;LOCKED - File is deaccess-locked X.break X.i+5;MARKED__FOR__DELETE - File is marked for deletion X.break X.i+5;READ__VERIFY - Verify all read operations X.break X.i+5;SPOOL - File is an intermediate spool file X.break X.i+5;WRITE__BACK - File may be write-back cached X.break X.i+5;WRITE__VERIFY - Verify all write operations X.break X Note that not all of these items are really changeable. They X are merely included for completeness sake. X.break X/ORGANIZATION X.break X This qualifier determines the file organization. X you must enter one of: X.break X.i+5;DIRECT X.break X.i+5;INDEXED X.break X.i+5;RELATIVE X.break X.i+5;SEQUENTIAL X.break X/TYPE X.break X This qualifier determines the record type. X you must enter one of: X.break X.i+5;FIXED - fixed record type X.break X.i+5;VARIABLE - variable record type X.break X.i+5;VFC - variable + fixed control X.break X.i+5;STREAM - RMS-11 (DEC traditional) stream format X.break X.i+5;LFSTREAM - LF-terminated stream format X.break X.i+5;CRSTREAM - CR-terminated stream format X.break X.i+5;UNDEFINED - undefined record type X.break X/BUCKET__SIZE X.break X This qualifier determines the bucket size. X.break X/DEFAULT__EXTEND__QUANTITY X.break X This qualifier determines the default extend quantity. X.break X/END__OF__FILE__BLOCK X.break X This qualifier determines the end of file block. X.break X/FIRST__FREE__BYTE X.break X This qualifier determines the first free byte in the end X of file block. X.break X/HIGHEST__ALLOCATED__BLOCK X.break X This qualifier determines the highest allocated block. X.break X/GLOBAL__BUFFER__COUNT X.break X This qualifier determines the global buffer count. X.break X/JOURNAL X.break X This qulifier determines the type of journaling enabled on the file. X you must enter one of: X.break X.i+5;JOURNAL - this is a journal file X.break X.i+5;AIJNL - enable after image journal X.break X.i+5;ATJNL - enable audit trail journal X.break X.i+5;BIJNL - enable before image journal X.break X.i+5;RUJNL - enable recovery unit journal X.break X.i+5;NEVER__RU - file is never accessible in recovery unit X.break X.i+5;ONLY__RU - file is only accessible in recovery unit X.break X/MAXIMUM__RECORD__SIZE X.break X This qualifier determines the maximum record size. X.break X/RECORD__SIZE X.break X This qualifier determines the record size. X.break X/DIRECTORY__VERSION__LIMIT X.break X This qualifier allows you to set the default number of allowable X versions of file. This is applicable only to directories. Note that X 32767 is equivalent to 0, or No Limit, so to say. X.blank X This is equivalent to SET DIRECTORY/VERSION=n. X.break X/VERSION__LIMIT X.break X This qualifier allows you to set the number of allowable versions X of a file. Note that 32767 is equivalent to 0, or No Limit, so to say. X.blank X This is equivalent to SET FILE/VERSION=n. X.break X/VFC__SIZE X.break X This qualifier allows you to set the vcf size. X.break X/CREATION__DATE X.break X.i+2;/[NO]CREATION__DATE X.blank X This qualifier allows you to set the creation date. X /NOCREATION__DATE clears the creation date. X.break X/REVISION__DATE X.break X.i+2;/[NO]REVISION__DATE X.blank X This qualifier allows you to set the revision date. X /NOREVISION__DATE clears the revision date. X.break X/EXPIRATION__DATE X.break X.i+2;/[NO]EXPIRATION__DATE X.blank X This qualifier allows you to set the expiration date. X /NOEXPIRATION__DATE clears the expiration date. X.break X/BACKUP__DATE X.break X.i+2;/[NO]BACKUP__DATE X.blank X This qualifier allows you to set the backup date. X /NOBACKUP__DATE clears the backup date. X.break X/NUMBER__OF__REVISIONS X.break X This qualifier allows you to set the number of revisions. X.break X198901161011160!End of MODATT.RNH X$EXIT $ GOSUB UNPACK_FILE $ FILE_IS = "FJNDEF.H" $ CHECKSUM_IS = 1611994308 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X `032 X#define FJN$M_ONLY_RU 1 X#define FJN$M_RUJNL 2 X#define FJN$M_BIJNL 4 X#define FJN$M_AIJNL 8 X#define FJN$M_ATJNL 16 X#define FJN$M_NEVER_RU 32 X#define FJN$M_JOURNAL_FILE 64 X#define FJN$S_FJNDEF 1 Xstruct fjndef `123 X unsigned fjn$v_only_ru : 1; X unsigned fjn$v_rujnl : 1; X unsigned fjn$v_bijnl : 1; X unsigned fjn$v_aijnl : 1; X unsigned fjn$v_atjnl : 1; X unsigned fjn$v_never_ru : 1; X unsigned fjn$v_journal_file:1; X`125 ; $ GOSUB UNPACK_FILE $ FILE_IS = "IODEF.H" $ CHECKSUM_IS = 457465383 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* This header file was created by Joe Meadows, and is not copyrighted X in any way. No guarantee is made as to the accuracy of the contents X of this header file. This header file was last modified on Sep. 22th, X 1987. (Modified to include this statement) */ X#define IO$_NOP 0 X#define IO$_UNLOAD 1 X#define IO$_LOADMCODE 1 X#define IO$_SEEK 2 X#define IO$_SPACEFILE 2 X#define IO$_STARTMPROC 2 X#define IO$_RECAL 3 X#define IO$_STOP 3 X#define IO$_DRVCLR 4 X#define IO$_INITIALIZE 4 X#define IO$_RELEASE 5 X#define IO$_SETCLOCKP 5 X#define IO$_OFFSET 6 X#define IO$_ERASETAPE 6 X#define IO$_STARTDATAP 6 X#define IO$_RETCENTER 7 X#define IO$_QSTOP 7 X#define IO$_PACKACK 8 X#define IO$_SEARCH 9 X#define IO$_SPACERECORD 9 X#define IO$_READRCT 9 X#define IO$_WRITECHECK 10 X#define IO$_WRITEPBLK 11 X#define IO$_READPBLK 12 X#define IO$_WRITEHEAD 13 X#define IO$_RDSTATS 13 X#define IO$_CRESHAD 13 X#define IO$_READHEAD 14 X#define IO$_ADDSHAD 14 X#define IO$_WRITETRACKD 15 X#define IO$_COPYSHAD 15 X#define IO$_READTRACKD 16 X#define IO$_REMSHAD 16 X#define IO$_AVAILABLE 17 X#define IO$_SETPRFPATH 18 X#define IO$_DSE 21 X#define IO$_REREADN 22 X#define IO$_REREADP 23 X#define IO$_WRITERET 24 X#define IO$_WRITECHECKH 24 X#define IO$_READPRESET 25 X#define IO$_STARTSPNDL 25 X#define IO$_SETCHAR 26 X#define IO$_SENSECHAR 27 X#define IO$_WRITEMARK 28 X#define IO$_WRTTMKR 29 X#define IO$_DIAGNOSE 29 X#define IO$_SHADMV 29 X#define IO$_FORMAT 30 X#define IO$_CLEAN 30 X#define IO$_PHYSICAL 31 X#define IO$_WRITELBLK 32 X#define IO$_READLBLK 33 X#define IO$_REWINDOFF 34 X#define IO$_SETMODE 35 X#define IO$_REWIND 36 X#define IO$_SKIPFILE 37 X#define IO$_SKIPRECORD 38 X#define IO$_SENSEMODE 39 X#define IO$_WRITEOF 40 X#define IO$_TTY_PORT 41 X#define IO$_LOGICAL 47 X#define IO$_WRITEVBLK 48 X#define IO$_READVBLK 49 X#define IO$_ACCESS 50 X#define IO$_CREATE 51 X#define IO$_DEACCESS 52 X#define IO$_DELETE 53 X#define IO$_MODIFY 54 X#define IO$_NETCONTROL 54 X#define IO$_READPROMPT 55 X#define IO$_SETCLOCK 55 X#define IO$_ACPCONTROL 56 X#define IO$_STARTDATA 56 X#define IO$_MOUNT 57 X#define IO$_TTYREADALL 58 X#define IO$_TTYREADPALL 59 X#define IO$_CONINTREAD 60 X#define IO$_CONINTWRITE 61 X#define IO$_VIRTUAL 63 X#define IO$M_FCODE 63 X#define IO$M_FMODIFIERS 65472 X#define IO$M_INHERLOG 2048 X#define IO$M_ERASE 1024 X#define IO$M_ENCRYPT 8192 X#define IO$M_DATACHECK 16384 X#define IO$M_INHRETRY 32768 X#define IO$M_INHSEEK 4096 X#define IO$M_REVERSE 64 X#define IO$M_NOWAIT 128 X#define IO$M_INHEXTGAP 4096 X#define IO$M_MSCPMODIFS 256 X#define IO$M_SHADOW 64 X#define IO$M_LOCATE 128 X#define IO$M_ALLHOSTS 64 X#define IO$M_DISSOLVE 128 X#define IO$M_NOCLEANUP 256 X#define IO$M_SPINDOWN 64 X#define IO$M_FORCEPATH 64 X#define IO$M_COMMOD 64 X#define IO$M_MOVETRACKD 128 X#define IO$M_DIAGNOSTIC 256 X#define IO$M_SKPSECINH 512 X#define IO$M_DELDATA 64 X#define IO$M_NOMRSP 64 X#define IO$M_SWAP 256 X#define IO$M_OPPOSITE 512 X#define IO$M_CLSEREXCP 512 X#define IO$M_ACCESS 64 X#define IO$M_CREATE 128 X#define IO$M_DELETE 256 X#define IO$M_MOUNT 512 X#define IO$M_DMOUNT 1024 X#define IO$M_REMOUNT 2048 X#define IO$M_BINARY 64 X#define IO$M_PACKED 128 X#define IO$M_NOW 64 X#define IO$M_READATTN 128 X#define IO$M_WRTATTN 256 X#define IO$M_SETPROT 512 X#define IO$M_NORSWAIT 1024 X#define IO$M_NOECHO 64 X#define IO$M_TIMED 128 X#define IO$M_CVTLOW 256 X#define IO$M_NOFILTR 512 X#define IO$M_DSABLMBX 1024 X#define IO$M_PURGE 2048 X#define IO$M_TRMNOECHO 4096 X#define IO$M_REFRESH 8192 X#define IO$M_ESCAPE 16384 X#define IO$M_EXTEND 32768 X#define IO$M_CANCTRLO 64 X#define IO$M_ENABLMBX 128 X#define IO$M_NOFORMAT 256 X#define IO$M_BREAKTHRU 512 X#define IO$M_NEWLINE 1024 X#define IO$M_TYPEAHDCNT 64 X#define IO$M_MAINT 64 X#define IO$M_CTRLYAST 128 X#define IO$M_CTRLCAST 256 X#define IO$M_HANGUP 512 X#define IO$M_OUTBAND 1024 X#define IO$M_TT_CONNECT 2048 X#define IO$M_TT_DISCON 4096 X#define IO$M_TT_PROCESS 8192 X#define IO$M_BRDCST 16384 X#define IO$M_LOOP 128 X#define IO$M_UNLOOP 256 X#define IO$M_LINE_OFF 512 X#define IO$M_SET_MODEM 1024 X#define IO$M_LINE_ON 2048 X#define IO$M_LOOP_EXT 4096 X#define IO$M_AUTXOF_ENA 8192 X#define IO$M_AUTXOF_DIS 16384 X#define IO$M_INCLUDE 2048 X#define IO$M_TT_ABORT 4096 X#define IO$M_INTERRUPT 64 X#define IO$M_ABORT 256 X#define IO$M_SYNCH 512 X#define IO$M_STARTUP 64 X#define IO$M_SHUTDOWN 128 X#define IO$M_ATTNAST 256 X#define IO$M_CTRL 512 X#define IO$M_RD_MEM 64 X#define IO$M_RD_MODEM 128 X#define IO$M_RD_COUNT 256 X#define IO$M_CLR_COUNT 1024 X#define IO$K_SRRUNOUT 0 X#define IO$K_PTPBSC 8192 X#define IO$K_LOOPTEST 57344 X#define IO$M_MORE 64 X#define IO$M_QUALIFIED 128 X#define IO$M_REDIRECT 64 X#define IO$M_ACCEPT 128 X#define IO$M_SETEVF 64 X#define IO$M_WORD 64 X#define IO$M_SETFNCT 512 X#define IO$M_DATAPATH 1024 X#define IO$M_CYCLE 4096 X#define IO$M_RESET 8192 X#define IO$M_SETCUADR 256 X#define IO$M_SETBSIZE 512 X#define IO$M_SETPOOLSZ 1024 X#define IO$M_SETENQCNT 2048 X#define IO$M_CLEAR 4096 X#define IO$M_LPBEXT 8192 X#define IO$M_LPBINT 16384 X#define IO$M_READCSR 32768 X#define IO$M_NOCTSWAIT 64 X#define IO$M_SLAVLOOP 128 X#define IO$M_NODSRWAIT 256 X#define IO$M_MAINTLOOP 512 X#define IO$M_LASTBLOCK 1024 X#define IO$M_INTCLOCK 4096 X#define IO$S_IODEF 2 X#define IO$S_FCODE 6 X#define IO$V_FCODE 0 X#define IO$S_FMODIFIERS 10 X#define IO$V_FMODIFIERS 6 X#define IO$V_INHERLOG 11 X#define IO$V_ERASE 10 X#define IO$V_ENCRYPT 13 X#define IO$V_DATACHECK 14 X#define IO$V_INHRETRY 15 X#define IO$V_INHSEEK 12 X#define IO$V_REVERSE 6 X#define IO$V_NOWAIT 7 X#define IO$V_INHEXTGAP 12 X#define IO$V_MSCPMODIFS 8 X#define IO$V_SHADOW 6 X#define IO$V_LOCATE 7 X#define IO$V_ALLHOSTS 6 X#define IO$V_DISSOLVE 7 X#define IO$V_NOCLEANUP 8 X#define IO$V_SPINDOWN 6 X#define IO$V_FORCEPATH 6 X#define IO$V_COMMOD 6 X#define IO$V_MOVETRACKD 7 X#define IO$V_DIAGNOSTIC 8 X#define IO$V_SKPSECINH 9 X#define IO$V_DELDATA 6 X#define IO$V_NOMRSP 6 X#define IO$V_SWAP 8 X#define IO$V_OPPOSITE 9 X#define IO$V_CLSEREXCP 9 X#define IO$V_ACCESS 6 X#define IO$V_CREATE 7 X#define IO$V_DELETE 8 X#define IO$V_MOUNT 9 X#define IO$V_DMOUNT 10 X#define IO$V_REMOUNT 11 X#define IO$V_BINARY 6 X#define IO$V_PACKED 7 X#define IO$V_NOW 6 X#define IO$V_READATTN 7 X#define IO$V_WRTATTN 8 X#define IO$V_SETPROT 9 X#define IO$V_NORSWAIT 10 X#define IO$V_NOECHO 6 X#define IO$V_TIMED 7 X#define IO$V_CVTLOW 8 X#define IO$V_NOFILTR 9 X#define IO$V_DSABLMBX 10 X#define IO$V_PURGE 11 X#define IO$V_TRMNOECHO 12 X#define IO$V_REFRESH 13 X#define IO$V_ESCAPE 14 X#define IO$V_EXTEND 15 X#define IO$V_CANCTRLO 6 X#define IO$V_ENABLMBX 7 X#define IO$V_NOFORMAT 8 X#define IO$V_BREAKTHRU 9 X#define IO$V_NEWLINE 10 X#define IO$V_TYPEAHDCNT 6 X#define IO$V_MAINT 6 X#define IO$V_CTRLYAST 7 X#define IO$V_CTRLCAST 8 X#define IO$V_HANGUP 9 X#define IO$V_OUTBAND 10 X#define IO$V_TT_CONNECT 11 X#define IO$V_TT_DISCON 12 X#define IO$V_TT_PROCESS 13 X#define IO$V_BRDCST 14 X#define IO$V_LOOP 7 X#define IO$V_UNLOOP 8 X#define IO$V_LINE_OFF 9 X#define IO$V_SET_MODEM 10 X#define IO$V_LINE_ON 11 X#define IO$V_LOOP_EXT 12 X#define IO$V_AUTXOF_ENA 13 X#define IO$V_AUTXOF_DIS 14 X#define IO$V_INCLUDE 11 X#define IO$V_TT_ABORT 12 X#define IO$V_INTERRUPT 6 X#define IO$V_ABORT 8 X#define IO$V_SYNCH 9 X#define IO$V_STARTUP 6 X#define IO$V_SHUTDOWN 7 X#define IO$V_ATTNAST 8 X#define IO$V_CTRL 9 X#define IO$V_RD_MEM 6 X#define IO$V_RD_MODEM 7 X#define IO$V_RD_COUNT 8 X#define IO$V_CLR_COUNT 10 X#define IO$V_MORE 6 X#define IO$V_QUALIFIED 7 X#define IO$V_REDIRECT 6 X#define IO$V_ACCEPT 7 X#define IO$V_SETEVF 6 X#define IO$V_WORD 6 X#define IO$V_SETFNCT 9 X#define IO$V_DATAPATH 10 X#define IO$V_CYCLE 12 X#define IO$V_RESET 13 X#define IO$V_SETCUADR 8 X#define IO$V_SETBSIZE 9 X#define IO$V_SETPOOLSZ 10 X#define IO$V_SETENQCNT 11 X#define IO$V_CLEAR 12 X#define IO$V_LPBEXT 13 X#define IO$V_LPBINT 14 X#define IO$V_READCSR 15 X#define IO$V_NOCTSWAIT 6 X#define IO$V_SLAVLOOP 7 X#define IO$V_NODSRWAIT 8 X#define IO$V_MAINTLOOP 9 X#define IO$V_LASTBLOCK 10 X#define IO$V_INTCLOCK 12 $ GOSUB UNPACK_FILE $ FILE_IS = "MAKEFILE." $ CHECKSUM_IS = 2101416519 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY Xmodatt.exe: modatt.obj X link/notrace/nodebug modatt,c/option X `032 Xcleanup: # clean up for DECUS submission X -purge X -rename *.* ;1 X `032 Xdebug: X link/debug modatt,c/option X `032 Xhelp: X runoff modatt.rnh X `032 Vmodatt.obj: modatt.c ATRDEF.H CLD.H FATDEF.H FCHDEF.H FIBDEF.H FJNDEF.H IODEF X.H X cc/debug modatt $ GOSUB UNPACK_FILE $ FILE_IS = "MODATT.C" $ CHECKSUM_IS = 1236077682 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/*Last Modified: 5-JUL-1988 13:30:01.78 by WILTS */ X/* Modified to rename product from FILE to MODATT to prevent conflicts in X command files since file is a commonly used symbol X*/ X/* MODATT.C, a utility to modify file characteristics. Originally written in X a mix of BASIC and MACRO, it was submitted to the 86 Fall DECUS Tape. X Recently I rewrote it in C, and added the functionality of my MODIFY X utility, allowing it to modify creation, expiration, revision, and backup X dates, as well as the 'number of revisions'. This should demonstrate the X ease with which such things are modified, thus serving to warn people that V such things can not always be counted on. Sadly, these should be able to b Xe V counted on, and one would hope that in a future version of VMS these becom Xe X protected, at the very least from user mode modification. X `032 X Written by Joe Meadows Jr, at the Fred Hutchinson Cancer Research Center X BITNET: JOE@FHCRCVAX X PHONE: (206) 467-4970 X `032 X There are no restrictions on this code, you may sell it, include it with V any commercial package, or feed it to a whale.. However, I would appreciat Xe X it if you kept this comment in the source code so that anyone receiving X this code knows who to contact in case of problems. Note that I do not X demand this condition.. X */ X/* Modifications: X 05-OCT-1987 X changed calls to strcmp() into strncmp() to fix problem with X not being able to abbreviate keywords in /TYPE and /ORGANIZATION X 15-SEP-1987 X modified handling of qualifiers, move check for /OUTPUT outside of X loop, get values of all other qualifiers before looping through X wildcarded filenames. X 22-AUG-1987 X Bugfixes (argh!). Fixed output of /NOEXACT, added "-" to first X line of output. Handle list of file names, as documented.. Make sure X all lines are under 80 characters, so mailers don't barf. X*/ X `032 X#include descrip X#include climsgdef X#include rms X#include stdio X `032 X#include "atrdef.h" X#include "fatdef.h" X#include "fchdef.h" X#include "fibdef.h" X#include "fjndef.h" X#include "iodef.h" X#include "cld.h" X `032 Xchar *cvt_time(); Xunsigned int change(); Xunsigned int antichange(); X `032 Xmain() X`123 X static struct FAB Fab; X static struct NAM Nam; X static struct fibdef Fib; /* short fib */ X `032 X static struct dsc$descriptor FibDesc = X `123sizeof(Fib),DSC$K_DTYPE_Z,DSC$K_CLASS_S,&Fib`125; X static struct dsc$descriptor_s DevDesc = X `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,&Nam.nam$t_dvi[1]`125; X static struct FATDEF Fat; X static union `123 X struct fchdef fch; X long int dummy; X `125 uchar; X static struct fjndef jnl; X static long int Cdate[2],Rdate[2],Edate[2],Bdate[2]; X static short int revisions; X `032 X static struct ATRDEF Atr[] = `123 X sizeof(Fat),ATR$C_RECATTR,&Fat, /* record attributes */ X sizeof(uchar),ATR$C_UCHAR,&uchar, /* File characteristics */ X sizeof(Cdate),ATR$C_CREDATE,&Cdate[0], /* Creation date */ X sizeof(Rdate),ATR$C_REVDATE,&Rdate[0], /* Revision date */ X sizeof(Edate),ATR$C_EXPDATE,&Edate[0], /* Expiration date */ X sizeof(Bdate),ATR$C_BAKDATE,&Bdate[0], /* Backup date */ X sizeof(revisions),ATR$C_ASCDATES,&revisions, /* number of revisions */ X sizeof(jnl),ATR$C_JOURNAL,&jnl, /* journal flags */ X 0,0,0 X `125 ; X `032 X static char EName[NAM$C_MAXRSS]; X static char RName[NAM$C_MAXRSS]; X static struct dsc$descriptor_s FileName = X `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`125; X static short int DevChan; X static short int iosb[4]; X `032 X static long int i,j,status; X static char *retval; X static short int output = 0; X `032 X if (cli_present("OUTPUT") & 1) `123 X /* see if they want output to go to a file or to SYS$OUTPUT */ X status = cli_get_value("OUTPUT",&retval); X if (status & 1) X freopen(retval,"w",stdout,"rfm=var","rat=cr"); X output = 1; X `125; X `032 X while (cli_get_value("P1",&retval) & 1) `123 X /* initialize RMS structures, we need a NAM to retrieve the FID */ X Fab = cc$rms_fab; X Fab.fab$l_fna = retval ; /* name of file */ X Fab.fab$b_fns = strlen(retval); X Fab.fab$l_nam = &Nam; /* FAB has an associated NAM */ X Nam = cc$rms_nam; X Nam.nam$l_esa = &EName; /* expanded filename */ X Nam.nam$b_ess = sizeof(EName); X Nam.nam$l_rsa = &RName; /* resultant filename */ X Nam.nam$b_rss = sizeof(RName); X `032 X /* do $PARSE and $SEARCH here */ X status = sys$parse(&Fab); X if (!(status & 1)) return(status); X `032 X /* search for the first file.. If none signal error */ X status = sys$search(&Fab); X if (!(status & 1)) return(status); X `032 X while (status & 1) `123 X /* dummy cli_get_value, used merely to reset context */ X status = cli_get_value("OUTPUT",&retval); X `032 X /* initialize Device name length, note that this points into the NAM X to get the device name filled in by the $PARSE, $SEARCH services */ X DevDesc.dsc$w_length = Nam.nam$t_dvi[0]; X `032 X status = sys$assign(&DevDesc,&DevChan,0,0); X if (!(status & 1)) return(status); X `032 X FileName.dsc$a_pointer = Nam.nam$l_name; X FileName.dsc$w_length = Nam.nam$b_name+Nam.nam$b_type+Nam.nam$b_ver; X `032 X /* Initialize the FIB */ X for (i=0;i<3;i++) X Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; X for (i=0;i<3;i++) X Fib.fib$w_did[i]=Nam.nam$w_did[i]; X `032 X /* Use the IO$_ACCESS function to return info about the file */ X /* Note, used this way, the file is not opened, and the expiration */ X /* and revision dates are not modified */ X status = sys$qiow(0,DevChan,IO$_ACCESS,&iosb,0,0, X &FibDesc,&FileName,0,0,&Atr,0); X if (!(status & 1)) return(status); X status = iosb[0]; X if (!(status & 1)) return(status); X `032 X if (output) `123 X `032 X /* if it's /noexact, use only name & type part of the result name */ X /* also fudge the resultant file name to have null termination */ X if (cli_present("EXACT") & 1) `123 X i = 0; X j = Nam.nam$b_rsl; X `125 X else `123 X i = Nam.nam$b_node + Nam.nam$b_dev + Nam.nam$b_dir; X j = Nam.nam$b_name+Nam.nam$b_type; X `125 X printf("$ MODATT %.*s-\n",j,&RName[i] ); X `032 X printf(" /%s=%s",t_rtype,ta_rtype[Fat.fat$v_rtype]); X printf(" /%s=%s -\n",t_fileorg,ta_fileorg[Fat.fat$v_fileorg]); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s) -\n", X t_attr, X Fat.fat$v_fortrancc?"":"NO",t_fortrancc, X Fat.fat$v_impliedcc?"":"NO",t_impliedcc, X Fat.fat$v_printcc?"":"NO",t_printcc, X Fat.fat$v_nospan?"NO":"",t_nospan); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s, -\n", X t_char, X uchar.fch.fch$v_badacl?"":"NO",t_badacl, X uchar.fch.fch$v_nobackup?"NO":"",t_nobackup, X uchar.fch.fch$v_contigb?"":"NO",t_contigb, X uchar.fch.fch$v_nocharge?"NO":"",t_nocharge); X printf(" %s%s,%s%s,%s%s,%s%s,%s%s, -\n", X uchar.fch.fch$v_contig?"":"NO",t_contig, X uchar.fch.fch$v_directory?"":"NO",t_directory, X uchar.fch.fch$v_erase?"":"NO",t_erase, X uchar.fch.fch$v_badblock?"":"NO",t_badblock, X uchar.fch.fch$v_locked?"":"NO",t_locked); X printf(" %s%s,%s%s,%s%s,%s%s,%s%s) -\n", X uchar.fch.fch$v_markdel?"":"NO",t_markdel, X uchar.fch.fch$v_spool?"":"NO",t_spool, X uchar.fch.fch$v_readcheck?"":"NO",t_readcheck, X uchar.fch.fch$v_writeback?"":"NO",t_writeback, X uchar.fch.fch$v_writcheck?"":"NO",t_writcheck); X printf(" /%s=%d",t_vfcsize,Fat.fat$b_vfcsize ); X printf(" /%s=%d",t_rsize,Fat.fat$w_rsize ); X printf(" /%s=%d -\n",t_maxrec,Fat.fat$w_maxrec ); V printf(" /%s=%d",t_efblk,(Fat.fat$w_efblkh<<16)`124Fat.fat$w_efblkl) X; X printf(" /%s=%d -\n",t_ffbyte,Fat.fat$w_ffbyte ); X printf(" /%s=%d -\n",t_hiblk, X (Fat.fat$w_hiblkh<<16)`124Fat.fat$w_hiblkl); X printf(" /%s=%d -\n",t_defext,Fat.fat$w_defext ); X printf(" /%s=%d -\n",t_bktsize,Fat.fat$b_bktsize ); X printf(" /%s=%d -\n",t_gbc,Fat.fat$w_gbc ); X printf(" /%s=%d -\n",t_dirvers,Fat.fat$w_versions ); X printf(" /%s=%d -\n",t_versions,Fib.fib$w_verlimit ); X printf(" /%s=(%s%s,%s%s,%s%s,%s%s,%s%s,%s%s,%s%s) -\n", X t_journal, X jnl.fjn$v_journal_file?"":"NO",t_journal_file, X jnl.fjn$v_aijnl?"":"NO",t_aijnl, X jnl.fjn$v_atjnl?"":"NO",t_atjnl, X jnl.fjn$v_bijnl?"":"NO",t_bijnl, X jnl.fjn$v_rujnl?"":"NO",t_rujnl, X jnl.fjn$v_never_ru?"":"NO",t_never_ru, X jnl.fjn$v_only_ru?"":"NO",t_only_ru); X if ((Cdate[0]==0) && (Cdate[1]==0)) X printf(" /NO%s -\n",t_credate); X else X printf(" /%s=\"%s\" -\n",t_credate,cvt_time(Cdate)); X if ((Rdate[0]==0) && (Rdate[1]==0)) X printf(" /NO%s",t_revdate); X else X printf(" /%s=\"%s\"",t_revdate,cvt_time(Rdate)); X printf(" /%s=%d -\n",t_revisions,revisions); X if ((Edate[0]==0) && (Edate[1]==0)) X printf(" /NO%s -\n",t_expdate); X else X printf(" /%s=\"%s\" -\n",t_expdate,cvt_time(Edate)); X if ((Bdate[0]==0) && (Bdate[1]==0)) X printf(" /NO%s\n",t_bakdate); X else X printf(" /%s=\"%s\"\n",t_bakdate,cvt_time(Bdate)); X `125; /* if (cli_present("OUTPUT") & 1) */ X `032 X if (cli_present(t_rtype) & 1) `123 X status = cli_get_value(t_rtype,&retval); X for (i=0;i<7;i++) X if (strncmp(retval,ta_rtype[i],strlen(retval))==0) X Fat.fat$v_rtype = i; X `125; X if (cli_present(t_fileorg) & 1) `123 X status = cli_get_value(t_fileorg,&retval); X for (i=0;i<4;i++) X if (strncmp(retval,ta_fileorg[i],strlen(retval))==0) X Fat.fat$v_fileorg = i; X `125; X if (cli_present(t_attr) & 1) `123 X Fat.fat$v_fortrancc = change(Fat.fat$v_fortrancc,t_attr,t_fortrancc); X Fat.fat$v_impliedcc = change(Fat.fat$v_impliedcc,t_attr,t_impliedcc); X Fat.fat$v_printcc = change(Fat.fat$v_printcc,t_attr,t_printcc); X Fat.fat$v_nospan = antichange(Fat.fat$v_nospan,t_attr,t_nospan); X `125; X if (cli_present(t_char) & 1) `123 X uchar.fch.fch$v_badacl = X change(uchar.fch.fch$v_badacl,t_char,t_badacl); X uchar.fch.fch$v_nobackup = X antichange(uchar.fch.fch$v_nobackup,t_char,t_nobackup); X uchar.fch.fch$v_contigb = X change(uchar.fch.fch$v_contigb,t_char,t_contigb); X uchar.fch.fch$v_nocharge = X antichange(uchar.fch.fch$v_nocharge,t_char,t_nocharge); X uchar.fch.fch$v_contig = X change(uchar.fch.fch$v_contig,t_char,t_contig); X uchar.fch.fch$v_directory = X change(uchar.fch.fch$v_directory,t_char,t_directory); X uchar.fch.fch$v_erase = X change(uchar.fch.fch$v_erase,t_char,t_erase); X uchar.fch.fch$v_badblock = X change(uchar.fch.fch$v_badblock,t_char,t_badblock); X uchar.fch.fch$v_locked = X change(uchar.fch.fch$v_locked,t_char,t_locked); X uchar.fch.fch$v_markdel = X change(uchar.fch.fch$v_markdel,t_char,t_markdel); X uchar.fch.fch$v_spool = change(uchar.fch.fch$v_spool,t_char,t_spool); X uchar.fch.fch$v_readcheck = X change(uchar.fch.fch$v_readcheck,t_char,t_readcheck); X uchar.fch.fch$v_writeback = X change(uchar.fch.fch$v_writeback,t_char,t_writeback); X uchar.fch.fch$v_writcheck = X change(uchar.fch.fch$v_writcheck,t_char,t_writcheck); X `125; X if (cli_present(t_vfcsize) & 1) `123 X status = cli_get_value(t_vfcsize,&retval); X Fat.fat$b_vfcsize = atoi(retval); X `125; X if (cli_present(t_rsize) & 1) `123 X status = cli_get_value(t_rsize,&retval); X Fat.fat$w_rsize = atoi(retval); X `125; X if (cli_present(t_maxrec) & 1) `123 X status = cli_get_value(t_maxrec,&retval); X Fat.fat$w_maxrec = atoi(retval); X `125; X if (cli_present(t_efblk) & 1) `123 X status = cli_get_value(t_efblk,&retval); X Fat.fat$w_efblkh = atoi(retval)>>16; X Fat.fat$w_efblkl = atoi(retval)-Fat.fat$w_efblkh; X `125; X if (cli_present(t_ffbyte) & 1) `123 X status = cli_get_value(t_ffbyte,&retval); X Fat.fat$w_ffbyte = atoi(retval); X `125; X if (cli_present(t_hiblk) & 1) `123 X status = cli_get_value(t_hiblk,&retval); X Fat.fat$w_hiblkh = atoi(retval)>>16; X Fat.fat$w_hiblkl = atoi(retval)-Fat.fat$w_hiblkh; X `125; X if (cli_present(t_defext) & 1) `123 X status = cli_get_value(t_defext,&retval); X Fat.fat$w_defext = atoi(retval); X `125; X if (cli_present(t_bktsize) & 1) `123 X status = cli_get_value(t_bktsize,&retval); X Fat.fat$b_bktsize = atoi(retval); X `125; X if (cli_present(t_gbc) & 1) `123 X status = cli_get_value(t_gbc,&retval); X Fat.fat$w_gbc = atoi(retval); X `125; X if (cli_present(t_dirvers) & 1) `123 X status = cli_get_value(t_dirvers,&retval); X Fat.fat$w_versions = atoi(retval); X `125; X if (cli_present(t_versions) & 1) `123 X status = cli_get_value(t_versions,&retval); X Fib.fib$w_verlimit = atoi(retval); X if (Fib.fib$w_verlimit == 0) X Fib.fib$w_verlimit = 32767; X `125; X /* if this value is illegal, don't try to set it! */ X if (Fib.fib$w_verlimit > 32767) X Fib.fib$w_verlimit = 0; X if (cli_present(t_journal) & 1) `123 X jnl.fjn$v_journal_file = X change(jnl.fjn$v_journal_file,t_journal,t_journal_file); X jnl.fjn$v_aijnl = change(jnl.fjn$v_aijnl,t_journal,t_aijnl); X jnl.fjn$v_atjnl = change(jnl.fjn$v_atjnl,t_journal,t_atjnl); X jnl.fjn$v_bijnl = change(jnl.fjn$v_bijnl,t_journal,t_bijnl); X jnl.fjn$v_rujnl = change(jnl.fjn$v_rujnl,t_journal,t_rujnl); X jnl.fjn$v_never_ru = change(jnl.fjn$v_never_ru,t_journal,t_never_ru); X jnl.fjn$v_only_ru = change(jnl.fjn$v_only_ru,t_journal,t_only_ru); X `125; X status = cli_present(t_credate); X if (status & 1) `123 X status = cli_get_value(t_credate,&retval); X bintim(retval,Cdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Cdate[0]=0; X Cdate[1]=0; X `125; X status = cli_present(t_revdate); X if (status & 1) `123 X status = cli_get_value(t_revdate,&retval); X bintim(retval,Rdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Rdate[0]=0; X Rdate[1]=0; X `125; X if (cli_present(t_revisions) & 1) `123 X status = cli_get_value(t_revisions,&retval); X revisions = atoi(retval); X `125; X status = cli_present(t_expdate); X if (status & 1) `123 X status = cli_get_value(t_expdate,&retval); X bintim(retval,Edate); X `125 X else X if (status == CLI$_NEGATED) `123 X Edate[0]=0; X Edate[1]=0; X `125; X status = cli_present(t_bakdate); X if (status & 1) `123 X status = cli_get_value(t_bakdate,&retval); X bintim(retval,Bdate); X `125 X else X if (status == CLI$_NEGATED) `123 X Bdate[0]=0; X Bdate[1]=0; X `125; X `032 X /* note, part of the FIB was cleared by earlier QIOW, so reset it */ X Fib.fib$l_acctl = FIB$M_NORECORD; X for (i=0;i<3;i++) X Fib.fib$w_fid[i]=Nam.nam$w_fid[i]; X for (i=0;i<3;i++) X Fib.fib$w_did[i]=Nam.nam$w_did[i]; X `032 X /* Use the IO$_MODIFY function to change info about the file */ X /* Note, used this way, the file is not opened, however this would */ X /* normally cause the expiration and revision dates to be modified. */ X /* Using FIB$M_NORECORD prohibits this from happening. */ X status = sys$qiow(0,DevChan,IO$_MODIFY,&iosb,0,0, X &FibDesc,&FileName,0,0,&Atr,0); X if (!(status & 1)) return(status); X `032 X status = iosb[0]; X if (!(status & 1)) return(status); X `032 X status = sys$dassgn(DevChan); X if (!(status & 1)) return(status); X `032 X /* look for next file, if none, no big deal.. */ X status = sys$search(&Fab); X `125 X `125 X`125 X `032 Xlong int cli_present(s) X char *s; X`123 V static struct dsc$descriptor s_desc = `1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`1 X25; X `032 X s_desc.dsc$w_length = strlen(s); X s_desc.dsc$a_pointer = s; X return(cli$present(&s_desc)); X`125 X `032 Xlong int cli_get_value(s1,s2) X char *s1,**s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char null = '\0'; X static struct dsc$descriptor null_desc = X `1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&null`125; X long int status; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X `032 X status = cli$get_value(&s1_desc,&s2_desc); X `032 X if (status & 1) X `123 X str$append(&s2_desc,&null_desc); X *s2 = s2_desc.dsc$a_pointer; X `125 X else X *s2 = 0; X return(status); X`125 X `032 Xchar *cvt_time(date) X long int date[2]; X`123 X static char str[27]; V static struct dsc$descriptor date_str=`12326,DSC$K_DTYPE_T,DSC$K_CLASS_S,&s Xtr`125; X `032 X if ((date[0]==0) && (date[1]==0)) X return("none"); X `032 X sys$asctim(0,&date_str,date,0); X str[26]='\0'; X `032 X return(&str); X`125 X `032 Xbintim(time,binval) X char *time; X long int binval[2]; X`123 V static struct dsc$descriptor date_str=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`1 X25; X date_str.dsc$w_length = strlen(time); X date_str.dsc$a_pointer = time; X `032 X sys$bintim(&date_str,binval); X`125 X `032 Xunsigned int change(orig,s1,s2) X unsigned int orig; X char *s1,*s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s3_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char point = '.'; V static struct dsc$descriptor pt_desc=`1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&poi Xnt`125; X long int status; X unsigned int i; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X s2_desc.dsc$w_length = strlen(s2); X s2_desc.dsc$a_pointer = s2; X `032 X /* s3 = s1 + "." + s2 */ X str$copy_dx(&s3_desc,&s1_desc); X str$append(&s3_desc,&pt_desc); X str$append(&s3_desc,&s2_desc); X `032 X status = cli$present(&s3_desc); X i=orig; X if (status & 1) X i=1; X if (status == CLI$_NEGATED) X i=0; X return(i); X`125 X `032 Xunsigned int antichange(orig,s1,s2) X unsigned int orig; X char *s1,*s2; X`123 V static struct dsc$descriptor s1_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s2_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_S,0`12 X5; V static struct dsc$descriptor s3_desc=`1230,DSC$K_DTYPE_T,DSC$K_CLASS_D,0`12 X5; X static char point = '.'; V static struct dsc$descriptor pt_desc=`1231,DSC$K_DTYPE_T,DSC$K_CLASS_S,&poi Xnt`125; X long int status; X unsigned int i; X `032 X s1_desc.dsc$w_length = strlen(s1); X s1_desc.dsc$a_pointer = s1; X s2_desc.dsc$w_length = strlen(s2); X s2_desc.dsc$a_pointer = s2; X `032 X /* s3 = s1 + "." + s2 */ X str$copy_dx(&s3_desc,&s1_desc); X str$append(&s3_desc,&pt_desc); X str$append(&s3_desc,&s2_desc); X `032 X status = cli$present(&s3_desc); X i=orig; X if (status & 1) X i=0; X if (status == CLI$_NEGATED) X i=1; X return(i); X`125 $ GOSUB UNPACK_FILE $ FILE_IS = "MODATT.CLD" $ CHECKSUM_IS = 304162728 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY V!*************************************MODATT********************************* X*** Xdefine type RECORD_ATTRIBUTES X keyword FORTRANCC X negatable X keyword IMPLIEDCC X negatable X keyword PRINTCC X negatable X keyword SPAN X negatable Xdefine type FILE_CHARACTERISTICS X keyword ACL_CORRUPT X negatable X keyword BACKUP X negatable X keyword BEST_TRY_CONTIGUOUS X negatable X keyword CHARGE X negatable X keyword CONTIGUOUS X negatable X keyword DIRECTORY X negatable X keyword ERASE_ON_DELETE X negatable X keyword FILE_CORRUPT X negatable X keyword LOCKED X negatable X keyword MARKED_FOR_DELETE X negatable X keyword READ_VERIFY X negatable X keyword SPOOL X negatable X keyword WRITE_BACK X negatable X keyword WRITE_VERIFY X negatable Xdefine type JOURNAL_TYPES X keyword JOURNAL X negatable X keyword AIJNL X negatable X keyword ATJNL X negatable X keyword BIJNL X negatable X keyword RUJNL X negatable X keyword NEVER_RU X negatable X keyword ONLY_RU X negatable Xdefine type FILE_ORGANIZATION X keyword DIRECT X keyword INDEXED X keyword RELATIVE X keyword SEQUENTIAL Xdefine type RECORD_TYPE X keyword CRSTREAM X keyword FIXED X keyword LFSTREAM X keyword STREAM X keyword UNDEFINED X keyword VARIABLE X keyword VFC Xdefine verb MODATT X image NYU$:[FILE]MODATT X parameter P1 , prompt="File" X value (required,list,type=$infile) X qualifier OUTPUT X value (type=$outfile) X qualifier EXACT X default X qualifier ATTRIBUTES X nonnegatable X value (required,list,type=RECORD_ATTRIBUTES) X qualifier BUCKET_SIZE X nonnegatable X value (required,type=$number) X qualifier CHARACTERISTICS X nonnegatable X value (required,list,type=FILE_CHARACTERISTICS) X qualifier DEFAULT_EXTEND_QUANTITY X nonnegatable X value (required,type=$number) X qualifier END_OF_FILE_BLOCK X value (required,type=$number) X qualifier FIRST_FREE_BYTE X value (required,type=$number) X qualifier GLOBAL_BUFFER_COUNT X value (required,type=$number) X qualifier HIGHEST_ALLOCATED_BLOCK X value (required,type=$number) X qualifier JOURNAL X nonnegatable X value (required,list,type=JOURNAL_TYPES) X qualifier MAXIMUM_RECORD_SIZE X value (required,type=$number) X qualifier ORGANIZATION X value (required,type=FILE_ORGANIZATION) X qualifier RECORD_SIZE X value (required,type=$number) X qualifier TYPE X value (required,type=RECORD_TYPE) X qualifier DIRECTORY_VERSION_LIMIT X value (required,type=$number) X qualifier VERSION_LIMIT X value (required,type=$number) X qualifier VFC_SIZE X value (required,type=$number) X qualifier CREATION_DATE X value (required,type=$datetime) X qualifier REVISION_DATE X value (required,type=$datetime) X qualifier EXPIRATION_DATE X value (required,type=$datetime) X qualifier BACKUP_DATE X value (required,type=$datetime) X qualifier NUMBER_OF_REVISIONS X value (required,type=$number) $ GOSUB UNPACK_FILE $ FILE_IS = "MODATT.RNH" $ CHECKSUM_IS = 1644365541 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X.! This is the help file for MODATT, just say RUNOFF MODATT.RNH X.! be sure to look through this and make any site specific X.! changes - just look for the commented lines ".!" X.lm 0 X.rm 75 X1 MODATT X.br X MODATT is a utility for modifying file attributes. X.blank X MODATT DOES NOT convert a file. MODATT changes characteristics of Xthe file, and thus VMS' view of the file. MODATT can be used simply to view Xthe current characteristics of a file, or it can be used to change any of Xthe changeable characteristics. This utility can be VERY dangerous, and Xshould only be used if you have a good understanding of RMS. Care should Xbe taken when using this utility. While it doesn't actually change the file Xitself, you might consider using a backup copy of the file. X.blank X.! Modify dev:[dir] to point to where you have stored MODATT.CLD X.! or comment out the following lines if you install it in the X.! system wide dcltables X.!You must issue the command SET COMMAND dev:[dir]MODATT to use this utility. X.!You may include this line in your login.com file. X.!.blank X The first thing you should do is to use MODATT/OUTPUT=output Xto generate a listing of the current characteristics of the file. In Xthis way, you will be able to return the file to its original state. X.break X2 Examples X.break X One common use of MODATT, is to 'coerce' a file into being a X Fixed 512 byte file, to upload/download the file via kermit. X For example, given a saveset A.SAV, you could do the following: X.blank X MODATT/OUTPUT=A.FIX/NOEXACT A.SAV/RECORD__SIZE=512/ORGANIZATION=FIXED X.blank X You could then transfer the two files A.FIX and A.SAV X using Kermit (it would take two transfers, A.FIX with X 'set file type text', and A.SAV using 'set file type fixed') X.blank X To turn the file back into its original useable self, you could X then do: X.break X.i+5;@A.FIX X.break X Which would cause the originally saved characteristics to be put X back on the file. X.blank X.blank X Another common use is to set the Fortran carriage control attribute X so that a file can be printed with fortran carriage control, this X can be done as follows: X.blank XMODATT/OUTPUT=OLD.TMP NETMONTH.*/ATTRIBUTES=(FORTRANCC,NOIMPLIEDCC,NOPRINTCC) X.break X2 parameters X.break X MODATT takes one parameter, a filename, or list of filenames. X The filenames can be wildcarded. X.break X2 qualifiers X.break X/OUTPUT X.break X.i+5;/OUTPUT[=filename] X.blank X This qualifier causes the characteristics of the file to X be displayed. Note that if you are also changing characteristics X the displayed characteristics are the original characteristics. X You can have the output placed in a file, by specifying a file X name in the OUTPUT clause. This is usefull for restoring a file X to its original state. X.break X/EXACT X.break X.i+5;/[NO]EXACT X.blank X When used with /OUTPUT, this qualifier determines wether a X complete file spec is displayed (/EXACT) or wether only the filename and X filetype will be displayed (/NOEXACT). X.blank X.i+5;/EXACT is the default. X.break X/ATTRIBUTES X.break X This qualifier determines the record attributes. X You may enter a list of (negatable) attributes. X The following attributes are legal: X.break X.i+5;FORTRANCC - Fortran carriage control X.break X.i+5;IMPLIEDCC - implied carriage control X.break X.i+5;PRINTCC - print file carriage control X.break X.i+5;SPAN - records can span blocks X.break X/CHARACTERISTICS X.break X This qualifier determines the file characteristics. X You may enter a list of (negatable) items. X The following items are legal: X.break X.i+5;ACL__CORRUPT - File's ACL is corrupt X.break X.i+5;BACKUP - File is to be backed up X.break X.i+5;BEST__TRY__CONTIGUOUS - Keep file as contiguous as possible X.break X.i+5;CHARGE - File space is charged against owner X.break X.i+5;CONTIGUOUS - File is contiguous X.break X.i+5;DIRECTORY - File is a directory X.break X.i+5;ERASE__ON__DELETE - Erase contents of file before deletion X.break X.i+5;FILE__CORRUPT - File contains bad blocks X.break X.i+5;LOCKED - File is deaccess-locked X.break X.i+5;MARKED__FOR__DELETE - File is marked for deletion X.break X.i+5;READ__VERIFY - Verify all read operations X.break X.i+5;SPOOL - File is an intermediate spool file X.break X.i+5;WRITE__BACK - File may be write-back cached X.break X.i+5;WRITE__VERIFY - Verify all write operations X.break X Note that not all of these items are really changeable. They X are merely included for completeness sake. X.break X/ORGANIZATION X.break X This qualifier determines the file organization. X you must enter one of: X.break X.i+5;DIRECT X.break X.i+5;INDEXED X.break X.i+5;RELATIVE X.break X.i+5;SEQUENTIAL X.break X/TYPE X.break X This qualifier determines the record type. X you must enter one of: X.break X.i+5;FIXED - fixed record type X.break X.i+5;VARIABLE - variable record type X.break X.i+5;VFC - variable + fixed control X.break X.i+5;STREAM - RMS-11 (DEC traditional) stream format X.break X.i+5;LFSTREAM - LF-terminated stream format X.break X.i+5;CRSTREAM - CR-terminated stream format X.break X.i+5;UNDEFINED - undefined record type X.break X/BUCKET__SIZE X.break X This qualifier determines the bucket size. X.break X/DEFAULT__EXTEND__QUANTITY X.break X This qualifier determines the default extend quantity. X.break X/END__OF__FILE__BLOCK X.break X This qualifier determines the end of file block. X.break X/FIRST__FREE__BYTE X.break X This qualifier determines the first free byte in the end X of file block. X.break X/HIGHEST__ALLOCATED__BLOCK X.break X This qualifier determines the highest allocated block. X.break X/GLOBAL__BUFFER__COUNT X.break X This qualifier determines the global buffer count. X.break X/JOURNAL X.break X This qulifier determines the type of journaling enabled on the file. X you must enter one of: X.break X.i+5;JOURNAL - this is a journal file X.break X.i+5;AIJNL - enable after image journal X.break X.i+5;ATJNL - enable audit trail journal X.break X.i+5;BIJNL - enable before image journal X.break X.i+5;RUJNL - enable recovery unit journal X.break X.i+5;NEVER__RU - file is never accessible in recovery unit X.break X.i+5;ONLY__RU - file is only accessible in recovery unit X.break X/MAXIMUM__RECORD__SIZE X.break X This qualifier determines the maximum record size. X.break X/RECORD__SIZE X.break X This qualifier determines the record size. X.break X/DIRECTORY__VERSION__LIMIT X.break X This qualifier allows you to set the default number of allowable X versions of file. This is applicable only to directories. Note that X 32767 is equivalent to 0, or No Limit, so to say. X.blank X This is equivalent to SET DIRECTORY/VERSION=n. X.break X/VERSION__LIMIT X.break X This qualifier allows you to set the number of allowable versions X of a file. Note that 32767 is equivalent to 0, or No Limit, so to say. X.blank X This is equivalent to SET FILE/VERSION=n. X.break X/VFC__SIZE X.break X This qualifier allows you to set the vcf size. X.break X/CREATION__DATE X.break X.i+2;/[NO]CREATION__DATE X.blank X This qualifier allows you to set the creation date. X /NOCREATION__DATE clears the creation date. X.break X/REVISION__DATE X.break X.i+2;/[NO]REVISION__DATE X.blank X This qualifier allows you to set the revision date. X /NOREVISION__DATE clears the revision date. X.break X/EXPIRATION__DATE X.break X.i+2;/[NO]EXPIRATION__DATE X.blank X This qualifier allows you to set the expiration date. X /NOEXPIRATION__DATE clears the expiration date. X.break X/BACKUP__DATE X.break X.i+2;/[NO]BACKUP__DATE X.blank X This qualifier allows you to set the backup date. X /NOBACKUP__DATE clears the backup date. X.break X/NUMBER__OF__REVISIONS X.break X This qualifier allows you to set the number of revisions. X.break $ GOSUB UNPACK_FILE $ EXIT