;************************************************************************** ;* cut_gdas.pro ;* ;* Read *gdas3 file and extract data for date, time, alt specified by user. ;* ;* Version 1.0 February 26, 2001 ;* 1.1 February 28, 2001 bug fixed (range and Tsys in float values) ;************************************************************************** pro set_param,itimeuse common param,sdate0,cp,ext,head,desire_date1,desire_time1,desire_date2,$ desire_time2,altl,alth ;--- edit here sdate0='971021' ; yymmdd cp='cp2e' ext='no' head='tr' itimeuse=1 ; 0: only for one day 1: date&time ; 1:from date and time ; 2:to date and time desire_date1=1022 ; mmdd desire_time1= 30000 ; hhmmss desire_date2=1023 ; mmdd desire_time2=130000 ; hhmmss altl=100 ; lower alt in km alth=130 ; highest alt in km ;--- until here end ; pro print_proname,proname date='February 26, 2001: V1.0 ' & s='-----' & s2=' ' print,' ' & print,s,s2,proname,s2,date,s2,s & print,' ' end function check_date_time,date,t1 common param,sdate0,cp,ext,head,desire_date1,desire_time1,desire_date2,$ desire_time2,altl,alth k=-1 if date lt desire_date1 then return,k if date gt desire_date2 then begin k=2 & return,k endif ; should end the loop if date gt desire_date1 and date lt desire_date2 then begin k=1 & return,k endif ; good if t1 lt desire_time1 and date eq desire_date1 then begin k=-1 & return,k endif if t1 ge desire_time1 and date eq desire_date1 and $ t1 le desire_time2 and date eq desire_date2 then begin k=1 & return,k endif if t1 ge desire_time1 and date eq desire_date1 and $ date lt desire_date2 then begin k=1 & return,k endif if t1 le desire_time2 and date eq desire_date2 then begin k=1 & return,k endif if t1 gt desire_time2 and date eq desire_date2 then begin k=2 & return,k endif stop end function check_alt,alt common param,sdate0,cp,ext,head,desire_date1,desire_time1,desire_date2,$ desire_time2,altl,alth k=-1 if alt ge altl and alt le alth then k=1 return,k end ;----------------------------------------------------------------------- ; MAIN, Main, main ; ;----------------------------------------------------------------------- common param,sdate0,cp,ext,head,desire_date1,desire_time1,desire_date2,$ desire_time2,altl,alth set_param,itimeuse ;-------------------------------------------------- if itimeuse eq 0 then desire_date=desire_date1 str1='(I4, 2I7,F6.1,2I5,I2,8I6,2F6.1,2I6,2F6.1,I5)' file=head+sdate0+cp+'.gdas3' if ext ne 'no' then file=head+sdate0+cp+ext+'.gdas3' i=strpos(file,'.gdas3') & outfile=strmid(file,0,i)+'_cut.gdas3' date=1111 & t1=0l & t2=0l & alt=0.0 & lat0=0 & lon0=0 qf=0 & Ne0=0 & Vi=0 & Ti=0 & Te=0 Ne0err=0 & Vierr=0 & Tierr=0 & Teerr=0 Az=0.0 & El=0.0 & oxra=0 & colf=0 & range=0.0 Tsys=0.0 & Txpw=0 moji='string' openr,1, file & print,'----- Open (r) = ',file openw,2, outfile & print,'----- Open (w) = ',outfile ; header for i=1,8 do begin readf,1,moji & printf,2,moji endfor icount=0l & iend=0 & iwritecount=0 while EOF(1) ne 1 and iend eq 0 do begin readf,1,format=str1,date,t1,t2,alt,lat0,lon0,qf,Ne0,Vi,Ti,Te,$ Ne0err,Vierr,Tierr, Teerr,Az,El,oxra,colf,range,Tsys,Txpw if itimeuse eq 0 then begin if date ne desire_date then goto, J1 if date gt desire_date then begin iend=1 & goto, J1 endif endif if itimeuse eq 1 then begin k=check_date_time(date,t1) if k eq 2 then iend=1 if k ne 1 then goto, J1 k2=check_alt(alt) if k2 ne 1 then goto, J1 endif iwritecount=iwritecount+1 if iwritecount eq 1 then print,'---Start writing data to the file---' printf,2,format=str1,date,t1,t2,alt,lat0,lon0,qf,Ne0,Vi,Ti,Te,$ Ne0err,Vierr,Tierr, Teerr,Az,El,oxra,colf,range,Tsys,Txpw J1: k=icount mod 2500 & if k eq 0 then $ print,format=str1,date,t1,t2,alt,lat0,lon0,qf,Ne0,Vi,Ti,Te,$ Ne0err,Vierr,Tierr, Teerr,Az,El,oxra,colf,range,Tsys,Txpw icount=icount+1 endwhile close,1 close,2 end