PRO read_psl,file,year,doy,begTime,endTime,ut,pa,valid=valid a = '' j = 0 i1 = 0 i2 = 0 i3 = 0 i4 = 0 i5 = 0 f1 = 0.0 flag = 0 valid = 0 ndim = 100 ut = FLTARR(ndim) pa = FLTARR(ndim) data = '(I4,I4,I3,I3,I3,F9.2)' ON_IOERROR, CANCEL OPENR, lun, file, /GET_LUN READF, lun, a READF, lun, a READF, lun, FORMAT=data,i1,i2,i3,i4,i5,f1 i1s = i1 i2s = i2 i3s = i3 i4s = i4 i5s = i5 f1s = f1 WHILE (i1 LT year) DO BEGIN ON_IOERROR, CANCEL READF, lun, FORMAT=data,i1,i2,i3,i4,i5,f1 ENDWHILE IF (i2 GT doy) THEN GOTO, CANCEL WHILE (i2 LT doy) DO BEGIN ON_IOERROR, CANCEL i1s = i1 i2s = i2 i3s = i3 i4s = i4 i5s = i5 f1s = f1 READF, lun, FORMAT=data,i1,i2,i3,i4,i5,f1 ENDWHILE ; start with end of previous day (negative uth) ut[j] = (i3s + i4s/60. + i5s/3600.) - 24. pa[j] = f1s j = j + 1 ; continue with last record read ut[j] = i3 + i4/60. + i5/3600. pa[j] = f1 ; NOTE: second condition added to while statement ; because STUDIO was crashing on the day boundaries ; between December 31 and Jan. 1 when reading the ; PSL. ; ; Damien Chua ; 30 March, 2001 ; find the rest of the day WHILE (i2 LE doy) AND (i2 GT (doy-1)) DO BEGIN ON_IOERROR, CANCEL READF, lun, FORMAT=data,i1,i2,i3,i4,i5,f1 j = j + 1 ut[j] = i3 + i4/60. + i5/3600. pa[j] = f1 ENDWHILE valid = 1 ut = ut(0:j-1) pa = pa(0:j-1) CANCEL: IF NOT valid THEN BEGIN ; PRINT,'WARNING! ......' ; PRINT,' platform_slews.list not valid for this date' valid = 0 ENDIF CLOSE,lun FREE_LUN, lun END