30 implicit double precision(a-h,o-z)
31 parameter(len=5401*5401)
32 parameter(gran=3600.d0)
36 real*4 z(len),glo,gla,val
37 equivalence(h(1),z(1))
50 open(lin,file=fname,status=
'old',form=
'binary')
59 open(lout,file=fname,status=
'new',form=
'unformatted')
67 if(yesno.eq.
'y'.or.yesno.eq.
'Y')
then 85 if(makpos(glo))
continue 87 if(gla.gt.glamx) glamx=gla
88 if(gla.lt.glamn) glamn=gla
89 if(glo.gt.glomx) glomx=glo
90 if(glo.lt.glomn) glomn=glo
95 100
read(lin,end=777) glo,gla,val
97 if(makpos(glo))
continue 99 if(gla.gt.glamx) glamx=gla
100 if(gla.lt.glamn) glamn=gla
101 if(glo.gt.glomx) glomx=glo
102 if(glo.lt.glomn) glomn=glo
106 if(dla.gt.dgla.and.dla.lt.(glamx-glamn)/2.d0 ) dgla=dla
107 if(dlo.gt.dglo.and.dlo.lt.(glomx-glomn)/2.d0 ) dglo=dlo
116 glamn=idnint(gran*glamn)/gran
117 glamx=idnint(gran*glamx)/gran
118 glomn=idnint(gran*glomn)/gran
119 glomx=idnint(gran*glomx)/gran
120 dgla =idnint(gran*dgla )/gran
121 dglo =idnint(gran*dglo )/gran
122 nla=idnint((glamx-glamn)/dgla)+1
123 nlo=idnint((glomx-glomn)/dglo)+1
124 dgla=(glamx-glamn)/dble(nla-1)
125 dglo=(glomx-glomn)/dble(nlo-1)
128 write(*,*)
' kind=',ikind
129 write(*,*)
' LAT min=',glamn
130 write(*,*)
' del=',dgla,
' # lat=',nla
131 write(*,*)
' max=',glamn+(nla-1)*dgla
132 write(*,*)
' LON min=',glomn
133 write(*,*)
' del=',dglo,
' # lon=',nlo
134 write(*,*)
' max=',glomn+(nlo-1)*dglo
138 if(nla*nlo.gt.len) stop 12345
151 10
read(lin,end=7777) glo,gla,val
153 if(makpos(glo))
continue 156 call put1(ival,gla,glo,h,nla,nlo,glamn,dgla,glomn,dglo,iclip)
158 call put2( val,gla,glo,z,nla,nlo,glamn,dgla,glomn,dglo,iclip)
165 write(lout) glamn,glomn,dgla,dglo,nla,nlo,ikind
167 call w1(lout,h,nla,nlo,glamn,dgla,glomn,dglo)
169 call w2(lout,z,nla,nlo,glamn,dgla,glomn,dglo)
172 write(*,*)
' all, icount, iclip = ',nla*nlo,icount,iclip
176 subroutine put1(ival,gla,glo,h,nla,nlo,glamn,dgla,glomn,dglo,iclp)
180 implicit double precision(a-h,o-z)
184 i=idnint((gla-glamn)/dgla)+1
185 if(i.lt.1.or.i.gt.nla)
then 189 j=idnint((glo-glomn)/dglo)+1
190 if(j.lt.1.or.j.gt.nlo)
then 198 subroutine put2(val,gla,glo,z,nla,nlo,glamn,dgla,glomn,dglo,iclip)
202 implicit double precision(a-h,o-z)
203 real*4 z(nla,nlo),val,gla,glo
205 i=idnint((gla-glamn)/dgla)+1
206 if(i.lt.1.or.i.gt.nla)
then 210 j=idnint((glo-glomn)/dglo)+1
211 if(j.lt.1.or.j.gt.nlo)
then 219 subroutine w1(lout,h,nla,nlo,glamn,dgla,glomn,dglo)
223 implicit double precision(a-h,o-z)
227 1
write(lout) (h(i,j),j=1,nlo)
231 subroutine w2(lout,z,nla,nlo,glamn,dgla,glomn,dglo)
235 implicit double precision(a-h,o-z)
239 1
write(lout) (z(i,j),j=1,nlo)
243 logical function makpos(glon)
249 1
if(glon.lt.0.d0)
then 255 2
if(glon.ge.360.d0)
then subroutine w1(lout, h, nla, nlo, glamn, dgla, glomn, dglo)
subroutine put2(val, gla, glo, z, nla, nlo, glamn, dgla, glomn, dglo, iclip)
logical function makpos(glon)
subroutine w2(lout, z, nla, nlo, glamn, dgla, glomn, dglo)
subroutine put1(ival, gla, glo, h, nla, nlo, glamn, dgla, glomn, dglo, iclp)
program xyz2b
Part of the NADCON5 NADCON5 Core Library , Converts GMT *.grd to a *.b NADCON style grid file...