subroutine mkutlab(utmin,ntms,labs,nlabs) dimension utmin(ntms) character*8 labs(nlabs),tlabs(nlabs) c c Given utmin(ntms) in decimal minutes (*includes* julian day), c return char labs(nlabs) suitable for labeling the ut (dec hrs) c do i=1,nlabs labs(i) = ' ' enddo write(6,"('mkutlab: ntms=',i5,' nlabs=',i5)") ntms,nlabs dmintot = utmin(ntms)-utmin(1) write(6,"('mkutlab: dmintot=',f8.2)") dmintot dmin = dmintot/float(nlabs) write(6,"('mkutlab: dmin=',f8.2)") dmin if (dmin.lt.1.) then write(6,"('>>> mkutlab: given nlabs=',i2,' dmin is < 1.', + ' -- returning empty labels')") nlabs return endif idelmin = ifix(dmin) ! delta minutes between labels min0 = irnd(ifix(utmin(1)),idelmin) ! first label write(6,"('mkutlab: idelmin=',i5,' min0=',i5)") idelmin,min0 do i=1,nlabs min = min0+(i-1)*idelmin uthr = float(min)/60. write(tlabs(i),"(f8.2)") uthr call compress(tlabs(i),labs(i)) enddo return end c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c function irnd(n,nr) c c return n rounded to nearest nr c iu = 0 if (mod(n,nr).eq.0) then irnd = n return endif do i=1,nr if (mod(n+i,nr).eq.0) iu = i enddo id = 0 do i=1,nr if (mod(n-i,nr).eq.0) id = i enddo ii = iu if (id.lt.iu) ii = id if (ii.eq.iu) then irnd = n+ii write(6,"('irnd: rounded up by ',i5)") ii else irnd = n-ii write(6,"('irnd: rounded down by ',i5)") ii endif return end c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c subroutine compress(str,cstr) character*(*) str,cstr c length = len(str) ii = 0 do i=1,length if (str(i:i).ne.' ') then ii = ii+1 cstr(ii:ii) = str(i:i) endif enddo if (ii.lt.length) then do i=ii+1,length cstr(i:i) = ' ' enddo endif return end c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c program test parameter(nlabs=6,ntms=10) character*8 labs(nlabs) c c subroutine mkutlab(utmin,ntms,labs,nlabs) c dimension utmin(ntms) data utmin/6.,10.,12.,15.,22.,40.,43.,46.,50.,52./ c call mkutlab(utmin,ntms,labs,nlabs) write(6,"('test: labs=',/(6(a8,' ')))") labs stop end