> DateEnsure 1.21 4 Ensure load/exec date and attribute date match  v1.00 (, v1.01 24-May-98 Ignores if no date set 27 v1.10 23-Jun-98 Reads update date from fileserver 0  : file: LOCAL f$,type% Odata%?(1+?data%)=13:f$=strip($(data%+1)):X%!14=0:X%!18=0:type%=file(f$,5) Tfs%=5:$(data%+8)=f$:osw(&14,&12002000,&40000000):X%!15=data%!10:X%?19=data%?14 3load%=X%!2:exec%=X%!6:length%=X%!10:attr%=X%!14 FSdy%=X%?15 31:Smn%=X%?16 15:Syr%=1981+(X%?16 16)+(X%?15 &E0)/2 !Sh%=X%?17:Sm%=X%?18:Ss%=X%?19 %LongDateToShort:Lc%=centisecond% FLdy%=day%:Lmn%=month%:Lyr%=year%:Lh%=hour%:Lm%=minute%:Ls%=second% "7f$;(11-f$);d(Sh%,2)":"d(Sm%,2)":"d(Ss%,2)" "; ,-d(Sdy%,2)"/"d(Smn%,2)"/";Syr%;" "; 66d(Lh%,2)":"d(Lm%,2)":"d(Ls%,2)"."d(Lc%,2)" "; @2d(Ldy%,2)"/"d(Lmn%,2)"/"d(Lyr%,4);26,8); J7Lyr%<1981:ShortToLong: : Long date pre-AE TCSdy%+32*Smn%+32*12*Syr%Ldy%+32*Lmn%+32*12*Lyr%:LongToShort: hCLs%+Lm%+Lh%+Lc%=0 :ShortToLong: rCSs%+60*Sm%+60*60*Sh%Ls%+60*Lm%+60*60*Lh% :LongToShort: : : ShortToLong:"-->" type%=2:load%=-1:exec%=0 2(load%&FFF00000)<>&FFF00000: : No filetype X(load%&FF008000)=&FF000000 (exec%&FF008000)=&FF000000: : Loads to I/O memory 5(load%&FFFFFF00)=&FFFFDD00: : Master utility /Smn%=0 Sdy%=0: : No date 1ConvDate(data%,Sdy%,Smn%,Syr%,Sh%,Sm%,Ss%,0) BX%!6=!data%:X%!2=load%:X%?2=data%?4:X%!14=attr%:A%=file(f$,1)  : LongToShort:"<--" =data%!9=data%!6:data%?8=data%?5 : Creation time ;data%?15=Lh%:data%?16=Lm%:data%?17=Ls% : Update time %data%?13=Ldy%+32*((Lyr%-1981)16) &9data%?14=Lmn%+16*((Lyr%-1981)16) : Update date 0Ldy%+32*Lmn%+12*32*Lyr%<(data%?5 31)+32*(data%?6 15)+12*32*(1981+(data%?6)16+(data%?5 &E0)2):data%!8=data%!13:data%?12=data%?17 :$(data%+18)=f$ D*fs%=5:osw(&14,&13002000,&40000000): N-X%!14=attr%:X%!15=data%!13:A%=file(f$,4) X b: l,ݤstrip(f$):f$=32::f$=f$,2):f$<>32 v=f$,f$+" "," ")-1) : Bݤfile(f$,A%):$data%=f$:?X%=data%:X%?1=data%256:=(&FFDD)&FF : K Convert time and date to 5-byte centi-second count since 1st Jan 1900 7ConvDate(mem%,d%,m%,y%,hr%,mn%,sc%,cs%):y%=y%400 qd%=y%*365.25+m%*30+d%+"120112234455",m%,1)+((y%4)=0)-((y%-1)100)-(m%>2((y%4)=0(y%100)<>0y%=0))+36493 d%>146065:d%=d%-146097 d%=d%*&41EB 1mem%!1=d%+d%:d%=((hr%*60+mn%)*60+sc%)*100+cs% #?mem%=d%:mem%!1=mem%!1+d%256: : #ݤd(A%,N%)="000000000"+A%,N%)  ݤfs:A%,Y%,E%:=(&FFDA)&FF Eosw(A%,D%,E%):X%,Y%:X%=data%:Y%=X%256:!X%=D%:X%!4=E%:&FFF1:  :  Initial program:  LongDateToShort *Fyear%=0:month%=0:day%=0:hour%=0:minute%=0:second%=0:centisecond%=0 4: >&ld%=X%!2:ex%=X%!6:!X%=ex%:X%!4=ld% H: R X%!1<0: \: f5 If X%!1 is negative, following causes problems: pdaynumber%=X%!1 &83D6 zsubdayvalue%=X%!1 &83D6 "centi%=X%?0 + 256*subdayvalue% : 1centisecond%=centi% 100:centi%=centi% 100 0second% =centi% 60 :centi%=centi% 60 0minute% =centi% 60 :centi%=centi% 60 hour% =centi% : year%=1900+daynumber% / 365 4dayinyear%=(daynumber% 365) - ((year%-1901)4) month%=0:monthend%=0 modifiedday%=dayinyear% O(year%4)<>0 (year%400)<>0:modifiedday%>58:modifiedday%=modifiedday%+1  )monthstart%=monthend%:month%=month%+1 Dmonthend%="031060091121152182213244274305335366",month%*3-2,3) monthend%>modifiedday% $#day%=modifiedday%-monthstart%+1 .