js@UW-JUNE.ARPA (Joe Meadows) (06/28/86)
Heres a short utility for modifying the date/times associated with a file. It can modify the Creation, Revision, Expiration and Backup dates, as well as the revision count. I hope you can find freindly uses for it. Like, maybe take five months worth of work and make it look like you did it in two weeks... Or, uh, modify that program that was due last week ("But prof, look, I finished it last week, I uh, just had troubles printing it ..") Ooh, I guess I shouldn't be putting bad ideas into peoples minds.. I personnaly use it to pretty up directories sometimes.. Well.. Anyway, it's a decent example of the power of QIO. Cheers. Joe Meadows Jr. js@uw-june $say:=write sys$output $say "Creating modtime.for" $create modtime.for $deck program modtime ! MODTIME Version 1.0 June 1st, 1985 ! Written by Joe Meadows Jr., with thanks to the ! Fred Hutchinson Cancer Research Center for kindly ! allowing me to use their computing resources. ! ! If you have any questions, comments, ideas, or ! whatever, feel free to contact me via US Mail : ! Joe Meadows Jr. ! 4841 268th Ave. N.E. ! Redmond Wa. 98052 ! or via phone : (206) 827-7296 implicit integer (a-z) integer time(2) character buffer*80,file*252 external lib$put_output call error(cli$get_value('File',file)) if (cli$present('log')) routine=%loc(lib$put_output) if (cli$present('creation')) then call error(cli$get_value('creation',buffer)) call error(sys$bintim(buffer,time)) I=change_creation(file,time,routine) end if if (cli$present('revision')) then call error(cli$get_value('revision',buffer)) call error(sys$bintim(buffer,time)) I=change_revision(file,time,routine) end if if (cli$present('number')) then call error(cli$get_value('number',buffer)) call str$trim(buffer,buffer,len) call error(ots$cvt_ti_l(buffer(:len),time)) I=change_revnum(file,time,routine) end if if (cli$present('backup')) then call error(cli$get_value('backup',buffer)) call error(sys$bintim(buffer,time)) I=change_backup(file,time,routine) end if if (cli$present('expiration')) then call error(cli$get_value('expiration',buffer)) call error(sys$bintim(buffer,time)) I=change_expiration(file,time,routine) end if end $eod $say "Creating error.mar" $create error.mar $deck .title error-exit .entry error,0 blbs @4(ap),return $exit_s code=@4(ap) return: ret .end $eod $say "Creating time.mar" $create time.mar $deck .TITLE Change_Times ; Author Joe Meadows $FABDEF $NAMDEF FAB: $FAB NAM=NAM NAM: $NAM ESA=ES,ESS=NAM$C_MAXRSS,RSA=RS,RSS=NAM$C_MAXRSS DELFAB: $FAB FNA=RS,FNS=NAM$C_MAXRSS ES: .BLKB NAM$C_MAXRSS RS: .BLKB NAM$C_MAXRSS ESD: .LONG 0,ES RSD: .LONG 0,RS $IODEF $ATRDEF $FIBDEF FIB: .BLKB FIB$K_LENGTH FIBD: .LONG FIB$K_LENGTH,FIB DEVNAM: .LONG 0,NAM+NAM$T_DVI+1 CHAN: .WORD 0 ATR: .LONG 0,buffer,0 buffer: .BLKB 35 ; FILENAME=4 TIME=8 ROUTINE=12 ; .ENTRY CHANGE_CREATION,^M<R6,R7> MOVW #ATR$S_CREDATE,ATR MOVW #ATR$C_CREDATE,ATR+2 BRB START .ENTRY CHANGE_REVISION,^M<R6,R7> MOVW #ATR$S_REVDATE,ATR MOVW #ATR$C_REVDATE,ATR+2 BRB START .ENTRY CHANGE_REVNUM,^M<R6,R7> MOVW #ATR$S_ASCDATES,ATR MOVW #ATR$C_ASCDATES,ATR+2 BRB START .ENTRY CHANGE_BACKUP,^M<R6,R7> MOVW #ATR$S_BAKDATE,ATR MOVW #ATR$C_BAKDATE,ATR+2 BRB START .ENTRY CHANGE_EXPIRATION,^M<R6,R7> MOVW #ATR$S_EXPDATE,ATR MOVW #ATR$C_EXPDATE,ATR+2 START: MOVQ @FILENAME(AP),R6 MOVB R6,FAB+FAB$B_FNS MOVL R7,FAB+FAB$L_FNA MOVQ @TIME(AP),buffer $PARSE FAB=FAB JSB ERROR MOVZBL NAM+NAM$T_DVI,DEVNAM $ASSIGN_S- DEVNAM=DEVNAM,CHAN=CHAN JSB ERROR LOOP: $SEARCH FAB=FAB CMPL R0,#RMS$_PRV BEQL LOOP JSB ERROR MOVC3 #6,NAM+NAM$W_FID,FIB+FIB$W_FID CMPW ATR+2,#ATR$C_ASCDATES BNEQ CONT $QIO_S CHAN=CHAN,FUNC=#IO$_ACCESS,P1=FIBD,P5=#ATR MOVC5 #0,buffer+15,#0,#<ATR$S_ASCDATES-15>,buffer+15 MOVW @TIME(AP),buffer CONT: $QIO_S CHAN=CHAN,FUNC=#IO$_MODIFY,P1=FIBD,P5=#ATR JSB ERROR TSTL @ROUTINE(AP) BEQL BLIP MOVZBL NAM+NAM$B_RSL,RSD PUSHAL RSD MOVL @ROUTINE(AP),R6 CALLS #1,(R6) BLIP: BRW LOOP EXIT: CMPL R0,#RMS$_NMF BNEQ BYE MOVL #1,R0 BYE: RET ERROR: BLBC R0,EXIT RSB .END $eod $say "Creating modify.cld" $create modify.cld $deck !************************************MODIFY************************************* define verb MODIFY image EXE$DIR:MODTIME parameter P1 , label=FILE , prompt="File" value (required) qualifier CREATION value qualifier BACKUP value qualifier REVISION value qualifier NUMBER value qualifier EXPIRATION value qualifier LOG $eod $say "Compiling modtime.for" $fortran modtime $say "Compiling error.mar" $macro error $say "Compiling time.mar" $macro time $say "Linking modtime,error,time" $link modtime,error,time $say "Defining command MODIFY (modify.cld)" $set command modify $say "You need to define EXE$DIR to point to the where modtime is"