30 RECURSIVE SUBROUTINE cnved4(MSGIN,LMSGOT,MSGOT)
34 dimension msgin(*), msgot(*)
36 COMMON /hrdwrd/ nbytw,nbitw,iord(8)
46 CALL x84 ( lmsgot, my_lmsgot, 1 )
47 CALL cnved4 ( msgin, my_lmsgot*2, msgot )
53 IF(
iupbs01(msgin,
'BEN').EQ.4)
THEN
59 IF(nmw.GT.lmsgot)
GOTO 900
68 CALL getlens(msgin,3,len0,len1,len2,len3,l4,l5)
71 iad4 = iad2 + len2 + len3
81 IF(lenmot.GT.(lmsgot*nbytw))
GOTO 900
88 CALL mvb ( msgin, 1, msgot, 1, 4 )
90 CALL pkb ( lenmot, 24, msgot, ibit )
91 CALL pkb ( 4, 8, msgot, ibit )
95 CALL pkb ( len1ot, 24, msgot, ibit )
96 CALL pkb (
iupbs01(msgin,
'BMT'), 8, msgot, ibit )
97 CALL pkb (
iupbs01(msgin,
'OGCE'), 16, msgot, ibit )
98 CALL pkb (
iupbs01(msgin,
'GSES'), 16, msgot, ibit )
99 CALL pkb (
iupbs01(msgin,
'USN'), 8, msgot, ibit )
100 CALL pkb (
iupbs01(msgin,
'ISC2')*128, 8, msgot, ibit )
101 CALL pkb (
iupbs01(msgin,
'MTYP'), 8, msgot, ibit )
105 CALL pkb ( 255, 8, msgot, ibit )
106 CALL pkb (
iupbs01(msgin,
'MSBT'), 8, msgot, ibit )
107 CALL pkb (
iupbs01(msgin,
'MTV'), 8, msgot, ibit )
108 CALL pkb (
iupbs01(msgin,
'MTVL'), 8, msgot, ibit )
109 CALL pkb (
iupbs01(msgin,
'YEAR'), 16, msgot, ibit )
110 CALL pkb (
iupbs01(msgin,
'MNTH'), 8, msgot, ibit )
111 CALL pkb (
iupbs01(msgin,
'DAYS'), 8, msgot, ibit )
112 CALL pkb (
iupbs01(msgin,
'HOUR'), 8, msgot, ibit )
113 CALL pkb (
iupbs01(msgin,
'MINU'), 8, msgot, ibit )
117 CALL pkb ( 0, 8, msgot, ibit )
122 CALL mvb ( msgin, iad2+1, msgot, (ibit/8)+1, len2+len3-1 )
126 ibit = ( len0 + len1ot + len2 ) * 8
127 CALL pkb ( len3ot, 24, msgot, ibit )
132 ibit = ibit + ( len3ot * 8 ) - 24
133 CALL mvb ( msgin, iad4+1, msgot, (ibit/8)+1, lenm-iad4 )
136 900
CALL bort(
'BUFRLIB: CNVED4 - OVERFLOW OF OUTPUT (EDITION 4) '//
137 .
'MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
subroutine bort(STR)
Log one error message and abort application program.
recursive subroutine cnved4(MSGIN, LMSGOT, MSGOT)
This subroutine reads an input BUFR message encoded using BUFR edition 3 and outputs an equivalent BU...
recursive subroutine getlens(MBAY, LL, LEN0, LEN1, LEN2, LEN3, LEN4, LEN5)
This subroutine reads the lengths of all of the individual sections of a given BUFR message,...
recursive function iupbs01(MBAY, S01MNEM)
Read a data value from Section 0 or Section 1 of a BUFR message.
subroutine mvb(IB1, NB1, IB2, NB2, NBM)
This subroutine copies a specified number of bytes from one packed binary array to another.
This module declares and initializes the IM8B variable.
logical, public im8b
Status indicator to keep track of whether all future calls to BUFRLIB subroutines and functions from ...
recursive function nmwrd(MBAY)
Given an integer array containing Section 0 from a BUFR message, this function determines the array s...
subroutine pkb(NVAL, NBITS, IBAY, IBIT)
This subroutine encodes an integer value within a specified number of bits of an integer array,...
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.