function udate_to_vms, uars_day ; ; Converts integer UARS day to vms time format: dd-mmm-yyyy hh:mm:ss ; UARS day 1 ==> 12-SEP-1991 00:00:00 ; ; Written by Y. R. Wang based on subroutines written by B. Knapp, 93/08/02 ; Subroutines called: ; udate_to_ymd, vms_to_udate ; ; ; Modified by R. Wang, 94/07/20. Use double precision to represent udate. ; ; Modified by M. Henneberry 95.07.18 ; Made into function using one loop and removed possibility of ; 60 seconds being returned form rounding. ; uday_len = n_elements( uars_day ) month_list = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG', $ 'SEP','OCT','NOV','DEC'] vms = strarr( uday_len ) for i = 0l, uday_len - 1 do begin ; compute the exact time: fraction = ( uars_day(i) - fix( uars_day(i) ) ) * 86400.0 hour = fix( fraction / 3600.0 ) min = fix(( fraction - hour * 3600.0 ) /60.0) sec = round( fraction - hour*3600.0 - min*60.0 ) overflow = 0 if( sec eq 60 ) then begin sec = 0 min = min + 1 if( min eq 60 ) then begin min = 0 hour = hour + 1 if( hour eq 24 ) then begin hour = 0 overflow = 1 endif ; hour endif ; min endif ; sec y_m_d = udate_to_ymd( uars_day(i) + overflow ) ; pick up month name from the list: month = month_list(y_m_d(1) - 1) year = strtrim(string(y_m_d(0)),2) date = y_m_d(2) vms(i) = string(date, month, year, hour, min, sec , $ format='(I2.2,"-",A3,"-",I4.4," ",I2.2,":",I2.2,":",I2.2)' ) endfor ;is input a scalar or array? if (size(uars_day))(0) eq 0 then $ return, vms(0) $ else $ return, vms end