; ; PURPOSE: Calculate date and time that correspond to a fractional crn:Cl0 ; CALLING SEQUENCE : ; datetime_scrncl0_200905,crn,cl0,reso,year,month,day,hh,mm,ss,/plt ; IUPUT: crn,cl0,reso ; OUTPUT: year,month,day,hh,mm,ss,/plt ; MODIFICATION HISTORY : ; First version: 20090531 by X. Zhao based on datetime_scrncl0.pro ; 20060327 by X. Zhao ; Second version: 20090610 by X. Zhao changing "reso=" to reso ; pro datetime_scrncl0_200906,crn,cl0,reso,cl0i,year,month,day1,DTL1=dtl1,DTL2=dtl2 if N_params() LT 1 then begin print,'datetime_scrncl0_200906,crn,cl0,reso,cl0i,year,month,day1,/dtl1,/dtl2' print,"crn=2081 & cl0=180.50" print,"resolution of 0.1, 0.05, 0.01, 0.05, 0.003, 0.009, 0.0003" return endif scrncl0=STRTRIM(crn,2)+':'+STRTRIM(FIX(cl0),2) spawn,'times ct'+scrncl0+' > outdata.d' date=' ' get_lun,unit openr,unit,'outdata.d' readf,unit,date free_lun,unit spawn,'rm outdata.d' year = fix(strmid(date,0,4)) month = fix(strmid(date,5,2)) day = fix(strmid(date,8,2)) hrs00=FIX(STRMID(date,11,2)) hrs01=FIX(STRMID(date,15,2))/60.+FIX(STRMID(date,19,2))/3600. hrs0=hrs00+hrs01 days0=day+hrs0/24. cl0_yyyymmddtime,year,month,day,hrs0,cl0i dcl=cl0i-cl0 if ABS(dcl) gt 100 then cl0i=cl0i+360 dcl=cl0i-cl0 if keyword_set(dtl1) then begin print,'date,hrs0:',date,hrs0 print,'cl0,First cl0i:',cl0,cl0i endif CASE 1 OF dcl gt reso: begin if hrs00 eq 23 then begin day=day+1 hrs0=hrs01 hrs=hrs0 endif else hrs=hrs0 lbl1: hrs=hrs+1. cl0_yyyymmddtime,year,month,day,hrs,cl0i dcl=cl0i-cl0 if ABS(dcl) gt 100 then cl0i=cl0i+360 dcl=cl0i-cl0 if keyword_set(dtl1) then print,'cl0i,dcl:',cl0i,dcl CASE 1 OF dcl gt reso: goto, lbl1 dcl lt -reso: begin lbl2: hrs=hrs-reso cl0_yyyymmddtime,year,month,day,hrs,cl0i dcl=cl0i-cl0 if dcl lt -reso then goto, lbl2 $ else day1=day+hrs/24. end else: day1=day+hrs/24. ENDCASE end dcl lt -reso: begin if hrs00 eq 0 then begin day=day-1 hrs0=24+hrs01 hrs=hrs0 endif else hrs=hrs0 lbl3: hrs=hrs-1. cl0_yyyymmddtime,year,month,day,hrs,cl0i dcl=cl0i-cl0 if keyword_set(dtl1) then print,'cl0i,dcl:',cl0i,dcl CASE 1 OF dcl lt -reso: goto, lbl3 dcl gt reso: begin ; hrs=hrs+1. lbl4: hrs=hrs+reso cl0_yyyymmddtime,year,month,day,hrs,cl0i dcl=cl0i-cl0 if dcl gt reso then goto, lbl4 $ else day1=day+hrs/24. end else: day1=day+hrs/24. ENDCASE end else: day1=day+hrs0/24. ENDCASE hrs1=(day1-day)*24. hh=FIX(hrs1) & mm=FIX((hrs1-hh)*60) & ss=FIX((hrs1-hh)*3600-mm*60) if hh eq 24 then begin day=day+1 hh=0 endif if keyword_set(dtl2) then begin date_year_sec,year,month,day,hh,mm,ss,date1 print,'Orig. cl0 and date from times:',cl0,' ',date print,'Last cl0i and date :',cl0i,' ',date1 endif end