78 IF ( iprt .GE. 1 )
THEN
80 . (
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
81 errstr =
'BUFRLIB: ARRAYS WILL BE DYNAMICALLY ALLOCATED' //
82 .
' USING THE FOLLOWING VALUES:'
84 WRITE ( errstr,
'(A,I7)' )
' MAXSS = ', maxss
86 WRITE ( errstr,
'(A,I4)' )
' NFILES = ', nfiles
88 WRITE ( errstr,
'(A,I7)' )
' MXMSGL = ', mxmsgl
90 WRITE ( errstr,
'(A,I5)' )
' MXDXTS = ', mxdxts
92 WRITE ( errstr,
'(A,I7)' )
' MAXMSG = ', maxmsg
94 WRITE ( errstr,
'(A,I9)' )
' MAXMEM = ', maxmem
96 WRITE ( errstr,
'(A,I5)' )
' MAXTBA = ', maxtba
98 WRITE ( errstr,
'(A,I5)' )
' MAXTBB = ', maxtbb
100 WRITE ( errstr,
'(A,I5)' )
' MAXTBD = ', maxtbd
102 WRITE ( errstr,
'(A,I7)' )
' MAXJL = ', maxjl
104 WRITE ( errstr,
'(A,I6)' )
' MXCDV = ', mxcdv
106 WRITE ( errstr,
'(A,I4)' )
' MXLCC = ', mxlcc
108 WRITE ( errstr,
'(A,I6)' )
' MXCSB = ', mxcsb
110 WRITE ( errstr,
'(A,I5)' )
' MXMTBB = ', mxmtbb
112 WRITE ( errstr,
'(A,I5)' )
' MXMTBD = ', mxmtbd
114 WRITE ( errstr,
'(A,I4)' )
' MAXCD = ', maxcd
116 WRITE ( errstr,
'(A,I4)' )
' MXNRV = ', mxnrv
118 WRITE ( errstr,
'(A,I4)' )
' MXS01V = ', mxs01v
120 WRITE ( errstr,
'(A,I4)' )
' MXTAMC = ', mxtamc
122 WRITE ( errstr,
'(A,I4)' )
' MXTCO = ', mxtco
124 WRITE ( errstr,
'(A,I4)' )
' MXBTM = ', mxbtm
126 WRITE ( errstr,
'(A,I4)' )
' MXBTMSE = ', mxbtmse
128 WRITE ( errstr,
'(A,I4)' )
' MXRST = ', mxrst
131 . (
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
134 brtstr =
'BUFRLIB: ARALLOCF FAILED ALLOCATING '
138 ALLOCATE( nval(nfiles), stat=iost )
139 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NVAL' )
141 ALLOCATE( inv(maxss,nfiles), stat=iost )
142 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'INV' )
144 ALLOCATE( nrfelm(maxss,nfiles), stat=iost )
145 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NRFELM' )
147 ALLOCATE( val(maxss,nfiles), stat=iost )
148 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'VAL' )
152 ALLOCATE( nbit(maxss), stat=iost )
153 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NBIT' )
155 ALLOCATE( mbit(maxss), stat=iost )
156 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MBIT' )
160 ALLOCATE( ival(maxss), stat=iost )
161 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IVAL' )
165 ALLOCATE( nmsg(nfiles), stat=iost )
166 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NMSG' )
168 ALLOCATE( nsub(nfiles), stat=iost )
169 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NSUB' )
171 ALLOCATE( msub(nfiles), stat=iost )
172 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSUB' )
174 ALLOCATE( inode(nfiles), stat=iost )
175 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'INODE' )
177 ALLOCATE( idate(nfiles), stat=iost )
178 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDATE' )
182 ALLOCATE( iolun(nfiles), stat=iost )
183 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IOLUN' )
185 ALLOCATE( iomsg(nfiles), stat=iost )
186 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IOMSG' )
190 ALLOCATE( luncpy(nfiles), stat=iost )
191 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'LUNCPY' )
195 ALLOCATE( isc3(nfiles), stat=iost )
196 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISC3' )
198 ALLOCATE( tamnem(nfiles), stat=iost )
199 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TAMNEM' )
203 ALLOCATE( msgunp(nfiles), stat=iost )
204 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGUNP' )
208 ALLOCATE( lus(nfiles), stat=iost )
209 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'LUS' )
213 ALLOCATE( null(nfiles), stat=iost )
214 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NULL' )
218 ALLOCATE( iscodes(nfiles), stat=iost )
219 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISCODES' )
223 ALLOCATE( idrdm(nfiles), stat=iost )
224 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDRDM' )
228 ALLOCATE( xtab(nfiles), stat=iost )
229 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'XTAB' )
233 ALLOCATE( msglim(nfiles), stat=iost )
234 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGLIM' )
238 IF ( mod(mxmsgl,4) .eq. 0 )
THEN
241 mxmsgld4 = mxmsgl/4 + 1
246 ALLOCATE( ibay(mxmsgld4), stat=iost )
247 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IBAY' )
249 ALLOCATE( mbyt(nfiles), stat=iost )
250 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MBYT' )
252 ALLOCATE( mbay(mxmsgld4,nfiles), stat=iost )
253 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MBAY' )
257 ALLOCATE( mgwa(mxmsgld4), stat=iost )
258 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MGWA' )
262 ALLOCATE( mgwb(mxmsgld4), stat=iost )
263 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MGWB' )
267 ALLOCATE( msglen(nfiles), stat=iost )
268 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGLEN' )
269 ALLOCATE( msgtxt(mxmsgld4,nfiles), stat=iost )
270 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGTXT' )
274 ALLOCATE( jsr(nfiles), stat=iost )
275 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'JSR' )
277 ALLOCATE( jbay(mxmsgld4), stat=iost )
278 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'JBAY' )
283 mxdxw = mxdxm*mxmsgld4
287 ALLOCATE( msgp(0:maxmsg), stat=iost )
288 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGP' )
290 ALLOCATE( msgs(maxmem), stat=iost )
291 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MSGS' )
293 ALLOCATE( mdx(mxdxw), stat=iost )
294 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MDX' )
296 ALLOCATE( ipdxm(mxdxm), stat=iost )
297 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IPDXM' )
299 ALLOCATE( ifdxts(mxdxts), stat=iost )
300 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IFDXTS' )
302 ALLOCATE( icdxts(mxdxts), stat=iost )
303 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ICDXTS' )
305 ALLOCATE( ipmsgs(mxdxts), stat=iost )
306 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IPMSGS' )
310 ALLOCATE( ntba(0:nfiles), stat=iost )
311 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NTBA' )
313 ALLOCATE( ntbb(0:nfiles), stat=iost )
314 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NTBB' )
316 ALLOCATE( ntbd(0:nfiles), stat=iost )
317 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NTBD' )
319 ALLOCATE( mtab(maxtba,nfiles), stat=iost )
320 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MTAB' )
322 ALLOCATE( idna(maxtba,nfiles,2), stat=iost )
323 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDNA' )
325 ALLOCATE( idnb(maxtbb,nfiles), stat=iost )
326 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDNB' )
328 ALLOCATE( idnd(maxtbd,nfiles), stat=iost )
329 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDND' )
331 ALLOCATE( taba(maxtba,nfiles), stat=iost )
332 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TABA' )
334 ALLOCATE( tabb(maxtbb,nfiles), stat=iost )
335 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TABB' )
337 ALLOCATE( tabd(maxtbd,nfiles), stat=iost )
338 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TABD' )
342 ALLOCATE( tag(maxjl), stat=iost )
343 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TAG' )
345 ALLOCATE( typ(maxjl), stat=iost )
346 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TYP' )
348 ALLOCATE( knt(maxjl), stat=iost )
349 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KNT' )
351 ALLOCATE( jump(maxjl), stat=iost )
352 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'JUMP' )
354 ALLOCATE( link(maxjl), stat=iost )
355 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'LINK' )
357 ALLOCATE( jmpb(maxjl), stat=iost )
358 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'JMPB' )
360 ALLOCATE( ibt(maxjl), stat=iost )
361 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IBT' )
363 ALLOCATE( irf(maxjl), stat=iost )
364 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IRF' )
366 ALLOCATE( isc(maxjl), stat=iost )
367 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISC' )
369 ALLOCATE( itp(maxjl), stat=iost )
370 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ITP' )
372 ALLOCATE( vali(maxjl), stat=iost )
373 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'VALI' )
375 ALLOCATE( knti(maxjl), stat=iost )
376 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KNTI' )
378 ALLOCATE( iseq(maxjl,2), stat=iost )
379 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISEQ' )
381 ALLOCATE( jseq(maxjl), stat=iost )
382 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'JSEQ' )
386 ALLOCATE( iutmp(maxjl,maxrcr), stat=iost )
387 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IUTMP' )
389 ALLOCATE( vutmp(maxjl,maxrcr), stat=iost )
390 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'VUTMP' )
394 ALLOCATE( ttmp(maxjl), stat=iost )
395 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TTMP' )
397 ALLOCATE( itmp(maxjl), stat=iost )
398 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ITMP' )
400 ALLOCATE( vtmp(maxjl), stat=iost )
401 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'VTMP' )
405 ALLOCATE( kmin(mxcdv), stat=iost )
406 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KMIN' )
408 ALLOCATE( kmax(mxcdv), stat=iost )
409 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KMAX' )
411 ALLOCATE( kmis(mxcdv), stat=iost )
412 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KMIS' )
414 ALLOCATE( kbit(mxcdv), stat=iost )
415 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KBIT' )
417 ALLOCATE( ityp(mxcdv), stat=iost )
418 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ITYP' )
420 ALLOCATE( iwid(mxcdv), stat=iost )
421 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IWID' )
423 ALLOCATE(
CHARACTER*(MXLCC) :: cstr(mxcdv), stat=iost )
424 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CSTR' )
428 ALLOCATE( matx(mxcdv,mxcsb), stat=iost )
429 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'MATX' )
431 ALLOCATE(
CHARACTER*(MXLCC) :: catx(mxcdv,mxcsb), stat=iost )
432 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CATX' )
436 ALLOCATE( ibfxyn(mxmtbb), stat=iost )
437 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IBFXYN' )
439 ALLOCATE( cbscl(4,mxmtbb), stat=iost )
440 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBSCL' )
442 ALLOCATE( cbsref(12,mxmtbb), stat=iost )
443 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBSREF' )
445 ALLOCATE( cbbw(4,mxmtbb), stat=iost )
446 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBBW' )
448 ALLOCATE( cbunit(24,mxmtbb), stat=iost )
449 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBUNIT' )
451 ALLOCATE( cbmnem(8,mxmtbb), stat=iost )
452 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBMNEM' )
454 ALLOCATE( cbelem(120,mxmtbb), stat=iost )
455 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CBELEM' )
457 ALLOCATE( idfxyn(mxmtbd), stat=iost )
458 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDFXYN' )
460 ALLOCATE( cdseq(120,mxmtbd), stat=iost )
461 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CDSEQ' )
463 ALLOCATE( cdmnem(8,mxmtbd), stat=iost )
464 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CDMNEM' )
466 ALLOCATE( ndelem(mxmtbd), stat=iost )
467 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NDELEM' )
469 ALLOCATE( idefxy(mxmtbd*maxcd), stat=iost )
470 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IDEFXY' )
474 ALLOCATE( iefxyn(mxmtbd,maxcd), stat=iost )
475 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IEFXYN' )
477 ALLOCATE( cmdscb(mxmtbb), stat=iost )
478 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CMDSCB' )
480 ALLOCATE( cmdscd(mxmtbd), stat=iost )
481 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CMDSCD' )
483 ALLOCATE( ceelem(mxmtbd,maxcd), stat=iost )
484 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CEELEM' )
488 ALLOCATE( nem(maxcd,10), stat=iost )
489 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NEM' )
491 ALLOCATE( irp(maxcd,10), stat=iost )
492 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IRP' )
494 ALLOCATE( krp(maxcd,10), stat=iost )
495 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'KRP' )
499 ALLOCATE( ivmnem(mxs01v), stat=iost )
500 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IVMNEM' )
502 ALLOCATE( cmnem(mxs01v), stat=iost )
503 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CMNEM' )
507 ALLOCATE( inodtamc(mxtamc), stat=iost )
508 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'INODTAMC' )
510 ALLOCATE( ntco(mxtamc), stat=iost )
511 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NTCO' )
513 ALLOCATE( ctco(mxtamc,mxtco), stat=iost )
514 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CTCO' )
516 ALLOCATE( inodtco(mxtamc,mxtco), stat=iost )
517 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'INODTCO' )
519 ALLOCATE( nbtmse(mxbtm), stat=iost )
520 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NBTMSE' )
522 ALLOCATE( istbtm(mxbtm), stat=iost )
523 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISTBTM' )
525 ALLOCATE( iszbtm(mxbtm), stat=iost )
526 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISZBTM' )
528 ALLOCATE( ibtmse(mxbtm,mxbtmse), stat=iost )
529 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IBTMSE' )
533 ALLOCATE( tagnrv(mxnrv), stat=iost )
534 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'TAGNRV' )
536 ALLOCATE( inodnrv(mxnrv), stat=iost )
537 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'INODNRV' )
539 ALLOCATE( nrv(mxnrv), stat=iost )
540 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'NRV' )
542 ALLOCATE( isnrv(mxnrv), stat=iost )
543 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'ISNRV' )
545 ALLOCATE( ienrv(mxnrv), stat=iost )
546 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IENRV' )
550 ALLOCATE( irnch(mxrst), stat=iost )
551 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IRNCH' )
553 ALLOCATE( irbit(mxrst), stat=iost )
554 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'IRBIT' )
556 ALLOCATE( crtag(mxrst), stat=iost )
557 IF ( iost .ne. 0 ) CALL
bort( brtstr //
'CRTAG' )
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
subroutine arallocf
This subroutine is called internally during the first call to subroutine openbf() from an application...
This module contains array and variable declarations used to store bitmaps internally within a data s...
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
This module contains array and variable declarations used to store the contents of one or more BUFR f...
This module contains array and variable declarations used to store the internal jump/link table...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
This module contains array and variable declarations used to store master Table B and Table D entries...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
This module contains array and variable declarations used to store BUFR messages internally for multi...