NCEPLIBS-bufr  11.5.0
 All Data Structures Files Functions Variables Pages
moda_msgmem.F
Go to the documentation of this file.
1 C> @file
2 C> @brief Declare arrays for internal storage of BUFR files.
3 
4 C> This module contains array and variable declarations used to
5 C> store the contents of one or more BUFR files within internal
6 C> memory.
7 C>
8 C> <p>Data values within this module are stored by subroutines
9 C> ufbmem() and cpdxmm().
10 C>
11 C> @author J. Ator
12 C> @date 2014-12-10
13 
14  MODULE moda_msgmem
15 
16 #ifndef MAXMSG_H
17 #define MAXMSG_H
18  USE modv_maxmsg
19 #endif
20 
21 #ifndef MAXMEM_H
22 #define MAXMEM_H
23  USE modv_maxmem
24 #endif
25 
26 #ifndef MXDXTS_H
27 #define MXDXTS_H
28  USE modv_mxdxts
29 #endif
30 
31 #ifndef MXMSGL_H
32 #define MXMSGL_H
33  USE modv_mxmsgl
34 #endif
35 
36 C> @var munit
37 C> Fortran logical unit number for use in accessing
38 C> contents of BUFR files within internal memory.
39 C>
40 C> @var msgs
41 C> BUFR messages read from one or more BUFR files.
42 C>
43 C> @var msgp
44 C> Pointers to the beginning of each message within
45 C> msgs (up to a maximum of MAXMSG, and where array
46 C> element 0 contains the actual number of messages
47 C> stored within msgs).
48 C>
49 C> @var mlast
50 C> Number of array elements filled within msgs (up
51 C> to a maximum of MAXMEM).
52 C>
53 C> @var mdx
54 C> DX BUFR table messages read from one or more BUFR
55 C> files, for use in decoding the messages in msgs.
56 C>
57 C> @var ndxm
58 C> Number of DX BUFR table messages stored within mdx
59 C> (up to a maximum of MXDXM).
60 C>
61 C> @var ipdxm
62 C> Pointers to the beginning of each message within mdx.
63 C>
64 C> @var ndxts
65 C> Number of DX BUFR tables represented by the
66 C> messages within mdx (up to a maximum of MXDXTS).
67 C>
68 C> @var ifdxts
69 C> Pointers to the beginning of each DX BUFR table
70 C> within mdx.
71 C>
72 C> @var icdxts
73 C> Number of consecutive messages within mdx which
74 C> constitute each DX BUFR table, beginning with the
75 C> corresponding ifdxts.
76 C>
77 C> @var ipmsgs
78 C> Pointers to first message within msgs for which each
79 C> DX BUFR table applies.
80 C>
81 C> @var ldxts
82 C> Number of DX BUFR table that is currently in scope,
83 C> depending on which BUFR message within msgs is
84 C> currently in scope from the most recent call to
85 C> subroutine rdmemm() or readmm().
86 C>
87 C> @var ldxm
88 C> Number of array elements filled within mdx (up
89 C> to a maximum of MXDXW).
90 
91  INTEGER :: MUNIT
92  INTEGER :: MLAST
93  INTEGER :: LDXM
94  INTEGER :: NDXM
95  INTEGER :: LDXTS
96  INTEGER :: NDXTS
97 #ifdef DYNAMIC_ALLOCATION
98  INTEGER :: MXDXM
99  INTEGER :: MXDXW
100  INTEGER, ALLOCATABLE :: MSGP(:)
101  INTEGER, ALLOCATABLE :: MSGS(:)
102  INTEGER, ALLOCATABLE :: MDX(:)
103  INTEGER, ALLOCATABLE :: IPDXM(:)
104  INTEGER, ALLOCATABLE :: IFDXTS(:)
105  INTEGER, ALLOCATABLE :: ICDXTS(:)
106  INTEGER, ALLOCATABLE :: IPMSGS(:)
107 #else
108  parameter( mxdxm = mxdxts*3 )
109  parameter( mxdxw = mxdxm*mxmsgld4 )
110  INTEGER :: MSGP(0:MAXMSG)
111  INTEGER :: MSGS(MAXMEM)
112  INTEGER :: MDX(MXDXW)
113  INTEGER :: IPDXM(MXDXM)
114  INTEGER :: IFDXTS(MXDXTS)
115  INTEGER :: ICDXTS(MXDXTS)
116  INTEGER :: IPMSGS(MXDXTS)
117 #endif
118 
119  END MODULE
This module declares and initializes the MAXMSG variable.
Definition: modv_MAXMSG.F:16
This module declares and initializes the MXDXTS variable.
Definition: modv_MXDXTS.F:16
This module declares and initializes the MAXMEM variable.
Definition: modv_MAXMEM.F:16
This module declares and initializes the MXMSGL variable.
Definition: modv_MXMSGL.F:16
This module contains array and variable declarations used to store the contents of one or more BUFR f...
Definition: moda_msgmem.F:14