168 SUBROUTINE putgb2(LUGB,GFLD,IRET)
172 INTEGER,
INTENT(IN) :: LUGB
174 INTEGER,
INTENT(OUT) :: IRET
176 CHARACTER(LEN=1),
ALLOCATABLE,
DIMENSION(:) :: CGRIB
177 integer :: listsec0(2)
188 lcgrib=gfld%ngrdpts*4
189 allocate(cgrib(lcgrib),stat=is)
191 print *,
'putgb2: cannot allocate memory. ',is
196 listsec0(1)=gfld%discipline
197 listsec0(2)=gfld%version
198 if (
associated(gfld%idsect) )
then
199 call gribcreate(cgrib,lcgrib,listsec0,gfld%idsect,ierr)
201 write(6,*)
'putgb2: ERROR creating new GRIB2 field = ',ierr
204 print *,
'putgb2: No Section 1 info available. '
211 if (
associated(gfld%local).AND.gfld%locallen.gt.0 )
then
212 call addlocal(cgrib,lcgrib,gfld%local,gfld%locallen,ierr)
214 write(6,*)
'putgb2: ERROR adding local info = ',ierr
221 igds(3)=gfld%numoct_opt
222 igds(4)=gfld%interp_opt
224 if (
associated(gfld%igdtmpl) )
then
225 call addgrid(cgrib,lcgrib,igds,gfld%igdtmpl,gfld%igdtlen,
226 & ilistopt,gfld%num_opt,ierr)
228 write(6,*)
'putgb2: ERROR adding grid info = ',ierr
231 print *,
'putgb2: No GDT info available. '
238 if (
associated(gfld%ipdtmpl).AND.
239 &
associated(gfld%idrtmpl).AND.
240 &
associated(gfld%fld) )
then
241 call addfield(cgrib,lcgrib,gfld%ipdtnum,gfld%ipdtmpl,
242 & gfld%ipdtlen,coordlist,gfld%num_coord,
243 & gfld%idrtnum,gfld%idrtmpl,gfld%idrtlen,
244 & gfld%fld,gfld%ngrdpts,gfld%ibmap,gfld%bmap,
247 write(6,*)
'putgb2: ERROR adding data field = ',ierr
250 print *,
'putgb2: Missing some field info. '
257 call gribend(cgrib,lcgrib,lengrib,ierr)
258 call wryte(lugb,lengrib,cgrib)