NCEPLIBS-bufr  11.7.0
 All Data Structures Files Functions Variables Pages
arallocf.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Dynamically allocate Fortran language arrays within internal
3 C> memory.
4 
5 C> This subroutine is called internally during the first call to
6 C> subroutine openbf() from an application program, in order to
7 C> dynamically allocate internal Fortran language arrays based on
8 C> parameter values set during one or more previous calls to function
9 C> isetprm().
10 C>
11 C> <p>This subroutine isn't normally called directly from an application
12 C> program, since it's automatically called internally during the first
13 C> call to subroutine openbf() from an application program.
14 C>
15 C> @author J. Ator
16 C> @date 2014-12-04
17 C>
18 C> @remarks
19 C> - All memory allocated within this subroutine can be freed via a
20 C> subsequent call to subroutine exitbufr() from within the
21 C> application program, or else it will be freed automatically by the
22 C> operating system once the application program terminates.
23 C>
24 C> <b>Program history log:</b>
25 C> | Date | Programmer | Comments |
26 C> | -----|------------|----------|
27 C> | 2014-12-04 | J. Ator | Original author |
28 C> | 2016-05-24 | J. Ator | Added allocations for MODA_BITMAPS and MODA_NRV203 |
29 C> | 2017-05-22 | J. Ator | Added allocations for MODA_RLCCMN |
30 C> | 2019-05-09 | J. Ator | Modified allocations for MODA_BUFRMG |
31 C> | 2021-01-08 | J. Ator | Modified mstabs array declarations for GNUv10 portability |
32 C> | 2021-05-17 | J. Ator | Allow up to 24 characters in cbunit |
33 C>
34  SUBROUTINE arallocf
35 
36  USE moda_usrint
37  USE moda_usrbit
38  USE moda_ival
39  USE moda_msgcwd
40  USE moda_stbfr
41  USE moda_ufbcpl
42  USE moda_sc3bfr
43  USE moda_unptyp
44  USE moda_lushr
45  USE moda_nulbfr
46  USE moda_stcode
47  USE moda_idrdm
48  USE moda_xtab
49  USE moda_msglim
50  USE moda_bitbuf
51  USE moda_mgwa
52  USE moda_mgwb
53  USE moda_bufrmg
54  USE moda_bufrsr
55  USE moda_msgmem
56  USE moda_tababd
57  USE moda_tables
58  USE moda_usrtmp
59  USE moda_ivttmp
60  USE moda_comprx
61  USE moda_comprs
62  USE moda_mstabs
63  USE moda_rdmtb
64  USE moda_nmikrp
65  USE moda_s01cm
66  USE moda_bitmaps
67  USE moda_nrv203
68  USE moda_rlccmn
69 
70  CHARACTER*80 errstr
71  CHARACTER*36 brtstr
72 
73  COMMON /quiet/ iprt
74 
75 C-----------------------------------------------------------------------
76 C-----------------------------------------------------------------------
77 
78  IF ( iprt .GE. 1 ) THEN
79  CALL errwrt
80  . ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
81  errstr = 'BUFRLIB: ARRAYS WILL BE DYNAMICALLY ALLOCATED' //
82  . ' USING THE FOLLOWING VALUES:'
83  CALL errwrt(errstr)
84  WRITE ( errstr, '(A,I7)' ) ' MAXSS = ', maxss
85  CALL errwrt(errstr)
86  WRITE ( errstr, '(A,I4)' ) ' NFILES = ', nfiles
87  CALL errwrt(errstr)
88  WRITE ( errstr, '(A,I7)' ) ' MXMSGL = ', mxmsgl
89  CALL errwrt(errstr)
90  WRITE ( errstr, '(A,I5)' ) ' MXDXTS = ', mxdxts
91  CALL errwrt(errstr)
92  WRITE ( errstr, '(A,I7)' ) ' MAXMSG = ', maxmsg
93  CALL errwrt(errstr)
94  WRITE ( errstr, '(A,I9)' ) ' MAXMEM = ', maxmem
95  CALL errwrt(errstr)
96  WRITE ( errstr, '(A,I5)' ) ' MAXTBA = ', maxtba
97  CALL errwrt(errstr)
98  WRITE ( errstr, '(A,I5)' ) ' MAXTBB = ', maxtbb
99  CALL errwrt(errstr)
100  WRITE ( errstr, '(A,I5)' ) ' MAXTBD = ', maxtbd
101  CALL errwrt(errstr)
102  WRITE ( errstr, '(A,I7)' ) ' MAXJL = ', maxjl
103  CALL errwrt(errstr)
104  WRITE ( errstr, '(A,I6)' ) ' MXCDV = ', mxcdv
105  CALL errwrt(errstr)
106  WRITE ( errstr, '(A,I4)' ) ' MXLCC = ', mxlcc
107  CALL errwrt(errstr)
108  WRITE ( errstr, '(A,I6)' ) ' MXCSB = ', mxcsb
109  CALL errwrt(errstr)
110  WRITE ( errstr, '(A,I5)' ) ' MXMTBB = ', mxmtbb
111  CALL errwrt(errstr)
112  WRITE ( errstr, '(A,I5)' ) ' MXMTBD = ', mxmtbd
113  CALL errwrt(errstr)
114  WRITE ( errstr, '(A,I4)' ) ' MAXCD = ', maxcd
115  CALL errwrt(errstr)
116  WRITE ( errstr, '(A,I4)' ) ' MXNRV = ', mxnrv
117  CALL errwrt(errstr)
118  WRITE ( errstr, '(A,I4)' ) ' MXS01V = ', mxs01v
119  CALL errwrt(errstr)
120  WRITE ( errstr, '(A,I4)' ) ' MXTAMC = ', mxtamc
121  CALL errwrt(errstr)
122  WRITE ( errstr, '(A,I4)' ) ' MXTCO = ', mxtco
123  CALL errwrt(errstr)
124  WRITE ( errstr, '(A,I4)' ) ' MXBTM = ', mxbtm
125  CALL errwrt(errstr)
126  WRITE ( errstr, '(A,I4)' ) ' MXBTMSE = ', mxbtmse
127  CALL errwrt(errstr)
128  WRITE ( errstr, '(A,I4)' ) ' MXRST = ', mxrst
129  CALL errwrt(errstr)
130  CALL errwrt
131  . ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
132  END IF
133 
134  brtstr = 'BUFRLIB: ARALLOCF FAILED ALLOCATING '
135 
136 C MODA_USRINT arrays.
137 
138  ALLOCATE( nval(nfiles), stat=iost )
139  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NVAL' )
140 
141  ALLOCATE( inv(maxss,nfiles), stat=iost )
142  IF ( iost .ne. 0 ) CALL bort( brtstr // 'INV' )
143 
144  ALLOCATE( nrfelm(maxss,nfiles), stat=iost )
145  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NRFELM' )
146 
147  ALLOCATE( val(maxss,nfiles), stat=iost )
148  IF ( iost .ne. 0 ) CALL bort( brtstr // 'VAL' )
149 
150 C MODA_USRBIT arrays.
151 
152  ALLOCATE( nbit(maxss), stat=iost )
153  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NBIT' )
154 
155  ALLOCATE( mbit(maxss), stat=iost )
156  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MBIT' )
157 
158 C MODA_IVAL arrays.
159 
160  ALLOCATE( ival(maxss), stat=iost )
161  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IVAL' )
162 
163 C MODA_MSGCWD arrays.
164 
165  ALLOCATE( nmsg(nfiles), stat=iost )
166  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NMSG' )
167 
168  ALLOCATE( nsub(nfiles), stat=iost )
169  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NSUB' )
170 
171  ALLOCATE( msub(nfiles), stat=iost )
172  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MSUB' )
173 
174  ALLOCATE( inode(nfiles), stat=iost )
175  IF ( iost .ne. 0 ) CALL bort( brtstr // 'INODE' )
176 
177  ALLOCATE( idate(nfiles), stat=iost )
178  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDATE' )
179 
180 C MODA_STBFR arrays.
181 
182  ALLOCATE( iolun(nfiles), stat=iost )
183  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IOLUN' )
184 
185  ALLOCATE( iomsg(nfiles), stat=iost )
186  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IOMSG' )
187 
188 C MODA_UFBCPL arrays.
189 
190  ALLOCATE( luncpy(nfiles), stat=iost )
191  IF ( iost .ne. 0 ) CALL bort( brtstr // 'LUNCPY' )
192 
193 C MODA_SC3BFR arrays.
194 
195  ALLOCATE( isc3(nfiles), stat=iost )
196  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISC3' )
197 
198  ALLOCATE( tamnem(nfiles), stat=iost )
199  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TAMNEM' )
200 
201 C MODA_UNPTYP arrays.
202 
203  ALLOCATE( msgunp(nfiles), stat=iost )
204  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MSGUNP' )
205 
206 C MODA_LUSHR arrays.
207 
208  ALLOCATE( lus(nfiles), stat=iost )
209  IF ( iost .ne. 0 ) CALL bort( brtstr // 'LUS' )
210 
211 C MODA_NULBFR arrays.
212 
213  ALLOCATE( null(nfiles), stat=iost )
214  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NULL' )
215 
216 C MODA_STCODE arrays.
217 
218  ALLOCATE( iscodes(nfiles), stat=iost )
219  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISCODES' )
220 
221 C MODA_IDRDM arrays.
222 
223  ALLOCATE( idrdm(nfiles), stat=iost )
224  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDRDM' )
225 
226 C MODA_XTAB arrays.
227 
228  ALLOCATE( xtab(nfiles), stat=iost )
229  IF ( iost .ne. 0 ) CALL bort( brtstr // 'XTAB' )
230 
231 C MODA_MSGLIM arrays.
232 
233  ALLOCATE( msglim(nfiles), stat=iost )
234  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MSGLIM' )
235 
236 C Calculate MXMSGLD4 from MXMSGL.
237 
238  IF ( mod(mxmsgl,4) .eq. 0 ) THEN
239  mxmsgld4 = mxmsgl/4
240  ELSE
241  mxmsgld4 = mxmsgl/4 + 1
242  END IF
243 
244 C MODA_BITBUF arrays.
245 
246  ALLOCATE( ibay(mxmsgld4), stat=iost )
247  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IBAY' )
248 
249  ALLOCATE( mbyt(nfiles), stat=iost )
250  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MBYT' )
251 
252  ALLOCATE( mbay(mxmsgld4,nfiles), stat=iost )
253  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MBAY' )
254 
255 C MODA_MGWA arrays.
256 
257  ALLOCATE( mgwa(mxmsgld4), stat=iost )
258  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MGWA' )
259 
260 C MODA_MGWB arrays.
261 
262  ALLOCATE( mgwb(mxmsgld4), stat=iost )
263  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MGWB' )
264 
265 C MODA_BUFRMG arrays.
266 
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' )
271 
272 C MODA_BUFRSR arrays.
273 
274  ALLOCATE( jsr(nfiles), stat=iost )
275  IF ( iost .ne. 0 ) CALL bort( brtstr // 'JSR' )
276 
277  ALLOCATE( jbay(mxmsgld4), stat=iost )
278  IF ( iost .ne. 0 ) CALL bort( brtstr // 'JBAY' )
279 
280 C Calculate MXDXM and MXDXW from MXDXTS and MXMSGLD4.
281 
282  mxdxm = mxdxts*3
283  mxdxw = mxdxm*mxmsgld4
284 
285 C MODA_MSGMEM arrays.
286 
287  ALLOCATE( msgp(0:maxmsg), stat=iost )
288  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MSGP' )
289 
290  ALLOCATE( msgs(maxmem), stat=iost )
291  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MSGS' )
292 
293  ALLOCATE( mdx(mxdxw), stat=iost )
294  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MDX' )
295 
296  ALLOCATE( ipdxm(mxdxm), stat=iost )
297  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IPDXM' )
298 
299  ALLOCATE( ifdxts(mxdxts), stat=iost )
300  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IFDXTS' )
301 
302  ALLOCATE( icdxts(mxdxts), stat=iost )
303  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ICDXTS' )
304 
305  ALLOCATE( ipmsgs(mxdxts), stat=iost )
306  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IPMSGS' )
307 
308 C MODA_TABABD arrays.
309 
310  ALLOCATE( ntba(0:nfiles), stat=iost )
311  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NTBA' )
312 
313  ALLOCATE( ntbb(0:nfiles), stat=iost )
314  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NTBB' )
315 
316  ALLOCATE( ntbd(0:nfiles), stat=iost )
317  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NTBD' )
318 
319  ALLOCATE( mtab(maxtba,nfiles), stat=iost )
320  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MTAB' )
321 
322  ALLOCATE( idna(maxtba,nfiles,2), stat=iost )
323  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDNA' )
324 
325  ALLOCATE( idnb(maxtbb,nfiles), stat=iost )
326  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDNB' )
327 
328  ALLOCATE( idnd(maxtbd,nfiles), stat=iost )
329  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDND' )
330 
331  ALLOCATE( taba(maxtba,nfiles), stat=iost )
332  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TABA' )
333 
334  ALLOCATE( tabb(maxtbb,nfiles), stat=iost )
335  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TABB' )
336 
337  ALLOCATE( tabd(maxtbd,nfiles), stat=iost )
338  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TABD' )
339 
340 C MODA_TABLES arrays.
341 
342  ALLOCATE( tag(maxjl), stat=iost )
343  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TAG' )
344 
345  ALLOCATE( typ(maxjl), stat=iost )
346  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TYP' )
347 
348  ALLOCATE( knt(maxjl), stat=iost )
349  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KNT' )
350 
351  ALLOCATE( jump(maxjl), stat=iost )
352  IF ( iost .ne. 0 ) CALL bort( brtstr // 'JUMP' )
353 
354  ALLOCATE( link(maxjl), stat=iost )
355  IF ( iost .ne. 0 ) CALL bort( brtstr // 'LINK' )
356 
357  ALLOCATE( jmpb(maxjl), stat=iost )
358  IF ( iost .ne. 0 ) CALL bort( brtstr // 'JMPB' )
359 
360  ALLOCATE( ibt(maxjl), stat=iost )
361  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IBT' )
362 
363  ALLOCATE( irf(maxjl), stat=iost )
364  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IRF' )
365 
366  ALLOCATE( isc(maxjl), stat=iost )
367  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISC' )
368 
369  ALLOCATE( itp(maxjl), stat=iost )
370  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ITP' )
371 
372  ALLOCATE( vali(maxjl), stat=iost )
373  IF ( iost .ne. 0 ) CALL bort( brtstr // 'VALI' )
374 
375  ALLOCATE( knti(maxjl), stat=iost )
376  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KNTI' )
377 
378  ALLOCATE( iseq(maxjl,2), stat=iost )
379  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISEQ' )
380 
381  ALLOCATE( jseq(maxjl), stat=iost )
382  IF ( iost .ne. 0 ) CALL bort( brtstr // 'JSEQ' )
383 
384 C MODA_USRTMP arrays.
385 
386  ALLOCATE( iutmp(maxjl,maxrcr), stat=iost )
387  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IUTMP' )
388 
389  ALLOCATE( vutmp(maxjl,maxrcr), stat=iost )
390  IF ( iost .ne. 0 ) CALL bort( brtstr // 'VUTMP' )
391 
392 C MODA_IVTTMP arrays.
393 
394  ALLOCATE( ttmp(maxjl), stat=iost )
395  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TTMP' )
396 
397  ALLOCATE( itmp(maxjl), stat=iost )
398  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ITMP' )
399 
400  ALLOCATE( vtmp(maxjl), stat=iost )
401  IF ( iost .ne. 0 ) CALL bort( brtstr // 'VTMP' )
402 
403 C MODA_COMPRX arrays.
404 
405  ALLOCATE( kmin(mxcdv), stat=iost )
406  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KMIN' )
407 
408  ALLOCATE( kmax(mxcdv), stat=iost )
409  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KMAX' )
410 
411  ALLOCATE( kmis(mxcdv), stat=iost )
412  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KMIS' )
413 
414  ALLOCATE( kbit(mxcdv), stat=iost )
415  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KBIT' )
416 
417  ALLOCATE( ityp(mxcdv), stat=iost )
418  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ITYP' )
419 
420  ALLOCATE( iwid(mxcdv), stat=iost )
421  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IWID' )
422 
423  ALLOCATE( CHARACTER*(MXLCC) :: cstr(mxcdv), stat=iost )
424  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CSTR' )
425 
426 C MODA_COMPRS arrays.
427 
428  ALLOCATE( matx(mxcdv,mxcsb), stat=iost )
429  IF ( iost .ne. 0 ) CALL bort( brtstr // 'MATX' )
430 
431  ALLOCATE( CHARACTER*(MXLCC) :: catx(mxcdv,mxcsb), stat=iost )
432  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CATX' )
433 
434 C MODA_MSTABS arrays.
435 
436  ALLOCATE( ibfxyn(mxmtbb), stat=iost )
437  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IBFXYN' )
438 
439  ALLOCATE( cbscl(4,mxmtbb), stat=iost )
440  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBSCL' )
441 
442  ALLOCATE( cbsref(12,mxmtbb), stat=iost )
443  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBSREF' )
444 
445  ALLOCATE( cbbw(4,mxmtbb), stat=iost )
446  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBBW' )
447 
448  ALLOCATE( cbunit(24,mxmtbb), stat=iost )
449  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBUNIT' )
450 
451  ALLOCATE( cbmnem(8,mxmtbb), stat=iost )
452  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBMNEM' )
453 
454  ALLOCATE( cbelem(120,mxmtbb), stat=iost )
455  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CBELEM' )
456 
457  ALLOCATE( idfxyn(mxmtbd), stat=iost )
458  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDFXYN' )
459 
460  ALLOCATE( cdseq(120,mxmtbd), stat=iost )
461  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CDSEQ' )
462 
463  ALLOCATE( cdmnem(8,mxmtbd), stat=iost )
464  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CDMNEM' )
465 
466  ALLOCATE( ndelem(mxmtbd), stat=iost )
467  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NDELEM' )
468 
469  ALLOCATE( idefxy(mxmtbd*maxcd), stat=iost )
470  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IDEFXY' )
471 
472 C MODA_RDMTB arrays.
473 
474  ALLOCATE( iefxyn(mxmtbd,maxcd), stat=iost )
475  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IEFXYN' )
476 
477  ALLOCATE( cmdscb(mxmtbb), stat=iost )
478  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CMDSCB' )
479 
480  ALLOCATE( cmdscd(mxmtbd), stat=iost )
481  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CMDSCD' )
482 
483  ALLOCATE( ceelem(mxmtbd,maxcd), stat=iost )
484  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CEELEM' )
485 
486 C MODA_NMIKRP arrays.
487 
488  ALLOCATE( nem(maxcd,10), stat=iost )
489  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NEM' )
490 
491  ALLOCATE( irp(maxcd,10), stat=iost )
492  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IRP' )
493 
494  ALLOCATE( krp(maxcd,10), stat=iost )
495  IF ( iost .ne. 0 ) CALL bort( brtstr // 'KRP' )
496 
497 C MODA_S01CM arrays.
498 
499  ALLOCATE( ivmnem(mxs01v), stat=iost )
500  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IVMNEM' )
501 
502  ALLOCATE( cmnem(mxs01v), stat=iost )
503  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CMNEM' )
504 
505 C MODA_BITMAPS arrays.
506 
507  ALLOCATE( inodtamc(mxtamc), stat=iost )
508  IF ( iost .ne. 0 ) CALL bort( brtstr // 'INODTAMC' )
509 
510  ALLOCATE( ntco(mxtamc), stat=iost )
511  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NTCO' )
512 
513  ALLOCATE( ctco(mxtamc,mxtco), stat=iost )
514  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CTCO' )
515 
516  ALLOCATE( inodtco(mxtamc,mxtco), stat=iost )
517  IF ( iost .ne. 0 ) CALL bort( brtstr // 'INODTCO' )
518 
519  ALLOCATE( nbtmse(mxbtm), stat=iost )
520  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NBTMSE' )
521 
522  ALLOCATE( istbtm(mxbtm), stat=iost )
523  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISTBTM' )
524 
525  ALLOCATE( iszbtm(mxbtm), stat=iost )
526  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISZBTM' )
527 
528  ALLOCATE( ibtmse(mxbtm,mxbtmse), stat=iost )
529  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IBTMSE' )
530 
531 C MODA_NRV203 arrays.
532 
533  ALLOCATE( tagnrv(mxnrv), stat=iost )
534  IF ( iost .ne. 0 ) CALL bort( brtstr // 'TAGNRV' )
535 
536  ALLOCATE( inodnrv(mxnrv), stat=iost )
537  IF ( iost .ne. 0 ) CALL bort( brtstr // 'INODNRV' )
538 
539  ALLOCATE( nrv(mxnrv), stat=iost )
540  IF ( iost .ne. 0 ) CALL bort( brtstr // 'NRV' )
541 
542  ALLOCATE( isnrv(mxnrv), stat=iost )
543  IF ( iost .ne. 0 ) CALL bort( brtstr // 'ISNRV' )
544 
545  ALLOCATE( ienrv(mxnrv), stat=iost )
546  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IENRV' )
547 
548 C MODA_RLCCMN arrays.
549 
550  ALLOCATE( irnch(mxrst), stat=iost )
551  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IRNCH' )
552 
553  ALLOCATE( irbit(mxrst), stat=iost )
554  IF ( iost .ne. 0 ) CALL bort( brtstr // 'IRBIT' )
555 
556  ALLOCATE( crtag(mxrst), stat=iost )
557  IF ( iost .ne. 0 ) CALL bort( brtstr // 'CRTAG' )
558 
559  RETURN
560  END
This module contains array and variable declarations for use with any 2-03-YYY (change reference valu...
Definition: moda_nrv203.F:15
subroutine arallocf
This subroutine is called internally during the first call to subroutine openbf() from an application...
Definition: arallocf.f:34
This module contains array and variable declarations used to store bitmaps internally within a data s...
Definition: moda_bitmaps.F:13
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
Definition: moda_tababd.F:10
This module contains array and variable declarations used to store the contents of one or more BUFR f...
Definition: moda_msgmem.F:14
This module contains array and variable declarations used to store the internal jump/link table...
Definition: moda_tables.F:13
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
Definition: errwrt.f:41
This module contains array and variable declarations used to store master Table B and Table D entries...
Definition: moda_mstabs.F:15
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
Definition: bort.f:22
This module contains array and variable declarations used to store BUFR messages internally for multi...
Definition: moda_bitbuf.F:10