64 COMMON /padesc/ ibct,ipd1,ipd2,ipd3,ipd4
65 COMMON /msgptr/ nby0,nby1,nby2,nby3,nby4,nby5
67 CHARACTER*128 BORT_STR
81 subtag =
tag(inode(lun))
83 CALL nemtba(lun,subtag,mtyp,msbt,inod)
84 IF(inode(lun).NE.inod)
GOTO 900
85 CALL nemtab(lun,subtag,isub,tab,iret)
86 IF(iret.EQ.0)
GOTO 901
91 mcen = mod(idate(lun)/10**8,100)+1
92 mear = mod(idate(lun)/10**6,100)
93 mmon = mod(idate(lun)/10**4,100)
94 mday = mod(idate(lun)/10**2,100)
95 mour = mod(idate(lun) ,100)
99 IF(mcen.EQ.1)
GOTO 902
101 IF(mear.EQ.0) mcen = mcen-1
102 IF(mear.EQ.0) mear = 100
114 nbyt = nby0+nby1+nby2+nby3+nby4+nby5
119 CALL pkc(bufr , 4 ,
mbay(1,lun),mbit)
120 CALL pkb(nbyt , 24 ,
mbay(1,lun),mbit)
121 CALL pkb( 3 , 8 ,
mbay(1,lun),mbit)
126 CALL pkb(nby1 , 24 ,
mbay(1,lun),mbit)
127 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
128 CALL pkb( 3 , 8 ,
mbay(1,lun),mbit)
129 CALL pkb( 7 , 8 ,
mbay(1,lun),mbit)
130 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
131 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
132 CALL pkb(mtyp , 8 ,
mbay(1,lun),mbit)
133 CALL pkb(msbt , 8 ,
mbay(1,lun),mbit)
134 CALL pkb( 36 , 8 ,
mbay(1,lun),mbit)
135 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
136 CALL pkb(mear , 8 ,
mbay(1,lun),mbit)
137 CALL pkb(mmon , 8 ,
mbay(1,lun),mbit)
138 CALL pkb(mday , 8 ,
mbay(1,lun),mbit)
139 CALL pkb(mour , 8 ,
mbay(1,lun),mbit)
140 CALL pkb(mmin , 8 ,
mbay(1,lun),mbit)
141 CALL pkb(mcen , 8 ,
mbay(1,lun),mbit)
146 CALL pkb(nby3 , 24 ,
mbay(1,lun),mbit)
147 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
148 CALL pkb( 0 , 16 ,
mbay(1,lun),mbit)
149 CALL pkb(2**7 , 8 ,
mbay(1,lun),mbit)
150 CALL pkb(ibct , 16 ,
mbay(1,lun),mbit)
151 CALL pkb(isub , 16 ,
mbay(1,lun),mbit)
152 CALL pkb(ipd1 , 16 ,
mbay(1,lun),mbit)
153 CALL pkb(ipd2 , 16 ,
mbay(1,lun),mbit)
154 CALL pkb(ipd3 , 16 ,
mbay(1,lun),mbit)
155 CALL pkb(ipd4 , 16 ,
mbay(1,lun),mbit)
156 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
161 CALL pkb(nby4 , 24 ,
mbay(1,lun),mbit)
162 CALL pkb( 0 , 8 ,
mbay(1,lun),mbit)
167 CALL pkc(sevn , 4 ,
mbay(1,lun),mbit)
172 IF(mod(mbit,8).NE.0)
GOTO 903
173 IF(mbit/8.NE.nbyt )
GOTO 904
175 nmsg(lun) = nmsg(lun)+1
185900
WRITE(bort_str,
'("BUFRLIB: MSGINI - MISMATCH BETWEEN INODE (=",'//
186 .
'I7,") & POSITIONAL INDEX, INOD (",I7,") OF SUBTAG (",A,") IN '//
187 .
'DICTIONARY")') inode(lun),inod,subtag
189901
WRITE(bort_str,
'("BUFRLIB: MSGINI - TABLE A MESSAGE TYPE '//
190 .
'MNEMONIC ",A," NOT FOUND IN INTERNAL TABLE D ARRAYS")') subtag
193 . (
'BUFRLIB: MSGINI - BUFR MESSAGE DATE (IDATE) is 0000000000')
194903
CALL bort(
'BUFRLIB: MSGINI - INITIALIZED MESSAGE DOES NOT END '//
195 .
'ON A BYTE BOUNDARY')
196904
WRITE(bort_str,
'("BUFRLIB: MSGINI - NUMBER OF BYTES STORED FOR '//
197 .
'INITIALIZED MESSAGE (",I6,") IS NOT THE SAME AS FIRST '//
198 .
'CALCULATED, NBYT (",I6)') mbit/8,nbyt
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine msgini(LUN)
THIS SUBROUTINE INITIALIZES, WITHIN THE INTERNAL ARRAYS, A NEW BUFR MESSAGE FOR OUTPUT.
This module contains array and variable declarations used to store BUFR messages internally for multi...
integer, dimension(:), allocatable mbyt
Length (in bytes) of current BUFR message for each internal I/O stream.
integer, dimension(:,:), allocatable mbay
Current BUFR message for each internal I/O stream.
This module contains array and variable declarations used to store the internal jump/link table.
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
This subroutine returns information about a descriptor from the internal DX BUFR tables,...
subroutine nemtba(LUN, NEMO, MTYP, MSBT, INOD)
This subroutine searches for a descriptor within Table A of the internal DX BUFR tables.
subroutine pkb(NVAL, NBITS, IBAY, IBIT)
This subroutine encodes an integer value within a specified number of bits of an integer array,...
subroutine pkc(CHR, NCHR, IBAY, IBIT)
This subroutine encodes a character string within a specified number of bits of an integer array,...