34 type,
private :: g2grid
38 integer,
dimension(MAXTEMP) :: gridtmpl
39 character(len=8) :: cdesc
40 type(g2grid),
pointer :: next
43 type(g2grid),
pointer,
private :: gridlist
58 integer,
intent(in) :: lunit
60 integer,
parameter :: linelen=1280
61 character(len=8) :: desc
62 character(len=linelen) :: cline
63 integer ient,igdtn,igdtmpl(200),igdtlen
64 integer :: pos1,pos2,pos3,pos4
66 type(g2grid),
pointer :: gtemp
67 type(g2grid),
pointer :: prev
77 read(lunit,
end=999,fmt=
'(a)') cline
82 if (cline(1:1).eq.
'#') cycle
94 if ( pos1.eq.0 .or. pos2.eq.0 .or. pos3.eq.0 .or.
100 read(cline(1:pos1-1),*) ient
101 read(cline(pos1+1:pos2-1),*) desc
102 read(cline(pos2+1:pos3-1),*) igdtn
103 read(cline(pos3+1:pos4-1),*) igdtlen
104 read(cline(pos4+1:linelen),*) (igdtmpl(j),j=1,igdtlen)
109 allocate(gtemp,stat=iom)
113 gtemp%gdt_len=igdtlen
114 gtemp%gridtmpl=igdtmpl
117 if ( count .eq. 1 )
then
149 subroutine getgridbynum(lunit,number,igdtn,igdtmpl,iret)
151 integer,
intent(in) :: lunit,number
152 integer,
intent(out) :: igdtn,igdtmpl(*),iret
154 type(g2grid),
pointer :: tempgrid
177 do while (
associated(tempgrid) )
178 if ( number .eq. tempgrid%grid_num )
then
179 igdtn=tempgrid%gdt_num
180 igdtmpl(1:tempgrid%gdt_len)=
181 & tempgrid%gridtmpl(1:tempgrid%gdt_len)
184 tempgrid => tempgrid%next
213 integer,
intent(in) :: lunit
214 character(len=8),
intent(in) :: name
215 integer,
intent(out) :: igdtn,igdtmpl(*),iret
217 type(g2grid),
pointer :: tempgrid
240 do while (
associated(tempgrid) )
241 if ( name .eq. tempgrid%cdesc )
then
242 igdtn=tempgrid%gdt_num
243 igdtmpl(1:tempgrid%gdt_len)=
244 & tempgrid%gridtmpl(1:tempgrid%gdt_len)
247 tempgrid => tempgrid%next