Function AJ_T97, aj
deb= double([0,reform(rebin(reform([365,365,365,366],4,1),4,15),60)])
for i=1,60 do deb(i)=deb(i)+deb(i-1)
aj=double(aj)
a=long(aj/1000.)
test=where(a lt 60) & if test(0) ne -1 then a(test)=a(test)+2000
test=where(a lt 100) & if test(0) ne -1 then a(test)=a(test)+1900
t97=deb(a-1997)+(aj mod 1000.)
return, t97
end
Function AJ_AMJ, aj
amj=aj
for i=0, n_elements(aj)-1 do begin
j=aj(i) mod 1000 & a=long(aj(i)/1000)
m=1 & k=1 & ms=31
while j gt ms do begin
m=m+1 & j=j-ms & k=-k
case m of
2: if (a mod 4) eq 0 then ms=29 else ms=28
3: ms=31
8: begin
k=1 & ms=31
end
else: ms=ms+k
endcase
endwhile
amj(i)=a*10000L+m*100+j
endfor
return, amj
end
Function T97_AJ, t97
aa = dindgen(61)+1997.
deb= double([0,reform(rebin(reform([365,365,365,366],4,1),4,15),60)])
for i=1,60 do deb(i)=deb(i)+deb(i-1)
aj=double(t97)
for i=0, n_elements(t97)-1 do begin
j=t97(i)-deb
test=where(j ge 1.0)
aj(i)=aa(test(n_elements(test)-1))*1000.d0+j(test(n_elements(test)-1))
endfor
return, aj
end
Function AMJ_AJ, amj
mois=[0L,31,59,90,120,151,181,212,243,273,304,334,365]
a=long(amj/10000)
m=long((amj-a*10000L)/100)
j=mois(m-1)
test=float(a)/4.
for i=0, n_elements(a)-1 do $
if test(i) eq float(fix(test(i))) and m(i) ge 3 then j(i)=j(i)+1
aj=a*1000+j+(amj-a*10000-m*100)
return, aj
end
PRO TC_refresh,params
time = params.time
t97 = double(time.d)+time.h/24.d0+time.m/1440.d0+time.s/86400.d0
amj = aj_amj(t97_aj(t97))
aj = t97_aj(t97)
widget_control,params.text(0),set_value=string(format='(f20.5)',t97)
widget_control,params.text(1),set_value=string(format='(f20.5)',amj)
widget_control,params.text(2),set_value=string(format='(f20.5)',aj)
widget_control,params.text(3),set_value=string(format='(I2.2)',time.h)
widget_control,params.text(4),set_value=string(format='(I2.2)',time.m)
widget_control,params.text(5),set_value=string(format='(f4.1)',time.s)
end
PRO TC_event,event
widget_control,event.id,get_uvalue=uv
widget_control,event.top,get_uvalue=params
if uv eq 99 then widget_control,event.top,/destroy else begin
widget_control,event.id,get_value=timetmp
timetmp = double(timetmp(0))
timeD = params.time.d
timeH = params.time.h
timeM = params.time.m
timeS = params.time.s
case uv of
0 : timeD = long(timetmp)
1 : timeD = long(aj_t97(amj_aj(timetmp)))
2 : timeD = long(aj_t97(timetmp))
3 : timeH = fix(timetmp)
4 : timeM = fix(timetmp)
5 : timeS = float(timetmp)
endcase
if uv le 2 then begin
timeH = fix((timetmp mod 1.d0)*24.d0)
timeM = fix(((timetmp mod 1.d0) - timeH/24.d0)*1440.d0)
timeS = ((timetmp mod 1.d0) - timeH/24.d0 - timeM/1440.d0)*86400.
endif
timeS = (round(timeS*10.))/10.
if timeS ge 60. then begin
timeM = timeM + fix(timeS)/60 & timeS = timeS mod 60.
endif
if timeM ge 60 then begin
timeH = timeH + timeM/60 & timeM = timeM mod 60
endif
if timeH ge 24 then begin
timeD = timeD + long(timeH/24) & timeH = timeH mod 24
endif
params.time.d = timeD
params.time.h = timeH
params.time.m = timeM
params.time.s = timeS
widget_control,event.top,set_uvalue=params
TC_refresh,params
widget_control
endelse
end
PRO time_conv
spawn,'echo $ROOT_RPWS',root_dir
!path = !path + ':'+root_dir+'Pro'
mainWid = widget_base(title='DfRPWS Time Converter',/column)
mwid_Info = widget_label(mainWid,value='Enter any Value :',/align_center)
editWid = widget_base(mainWid,/frame,/column)
ewid_t97 = widget_base(editWid,/row)
ewid_t97Title = widget_label(ewid_t97,value='t97: ',xsize=50)
ewid_t97Value = widget_Text(ewid_T97,/Editable,Xsize=20,uvalue=0)
ewid_amj = widget_base(editWid,/row)
ewid_amjTitle = widget_label(ewid_amj,value='amj: ',xsize=50)
ewid_amjValue = widget_text(ewid_amj,/editable,xsize=20,uvalue=1)
ewid_aj = widget_base(editWid,/row)
ewid_ajTitle = widget_label(ewid_aj,value='aj: ',xsize=50)
ewid_Ajvalue = Widget_Text(ewid_Aj,/Editable,Xsize=20,uvalue=2)
ewid_hms = widget_base(editWid,/row)
ewid_hmsHtitle = widget_label(ewid_hms,value='h: ',xsize=20)
ewid_hmsHvalue = widget_text(ewid_hms,/editable,xsize=3,uvalue=3)
ewid_hmsMtitle = widget_label(ewid_hms,value='m: ',xsize=20)
ewid_hmsMvalue = widget_text(ewid_hms,/editable,xsize=3,uvalue=4)
ewid_hmsStitle = widget_label(ewid_hms,value='s: ',xsize=20)
ewid_hmsSvalue = widget_text(ewid_hms,/editable,xsize=4,uvalue=5)
mwid_copyright = widget_label(mainWid,value="© B.Cecconi 01/2002",/align_right)
mwid_copyright = widget_label(mainWid,value="Observatoire de Meudon",/align_right)
mwid_Quit = widget_button(mainWid,value='QUIT',uvalue=99)
params = {text:[ewid_t97Value,ewid_amjValue,ewid_ajValue,ewid_hmsHvalue,ewid_hmsMvalue,ewid_hmsSvalue],time:{time_t97, d:1l, h:0, m:0, s:0.}}
widget_control, mainWid, set_uvalue=params
widget_control, mainWid, /realize
TC_refresh,params
xmanager,'TC',mainWid,/no_block
end