74 CHARACTER*128 bort_str,errstr
89 CALL
status(lunit,lun,il,im)
97 CALL
parstr(str,tgs,maxtg,ntg,
' ',.true.)
103 CALL
parutg(lun,0,tgs(1),nnod,kon,roid)
106 IF(ioid.LE.0) ioid = 1
109 DO WHILE((ii.LE.10).AND.(tgs(1)(ii:ii).NE.
'#'))
110 ctag(ii:ii)=tgs(1)(ii:ii)
121 IF(msgunp(lun).EQ.0.OR.msgunp(lun).EQ.1)
THEN
128 IF(ctag.EQ.tag(nod))
THEN
130 IF(itagct.EQ.ioid)
THEN
131 IF(itp(nod).NE.3) goto 904
133 IF(nchr.GT.lchr) goto 905
135 CALL
upc(chr,nchr,mbay(1,lun),kbit,.true.)
140 ELSEIF(msgunp(lun).EQ.2)
THEN
147 IF(ctag.EQ.crtag(ii))
THEN
149 IF(itagct.EQ.ioid)
THEN
151 IF(nchr.GT.lchr) goto 905
153 CALL
upc(chr,nchr,mbay(1,lun),kbit,.true.)
166 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
167 errstr =
'BUFRLIB: READLC - MNEMONIC ' // tgs(1) //
168 .
' NOT LOCATED IN REPORT SUBSET - RETURN WITH MISSING' //
169 .
' STRING FOR CHARACTER DATA ELEMENT'
171 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
175 CALL
ipkm(chr(ii:ii),1,255)
182 900 CALL
bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS CLOSED, IT MUST'//
183 .
' BE OPEN FOR INPUT')
184 901 CALL
bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS OPEN FOR '//
185 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
186 902 CALL
bort(
'BUFRLIB: READLC - A MESSAGE MUST BE OPEN IN INPUT '//
187 .
'BUFR FILE, NONE ARE')
188 903
WRITE(bort_str,
'("BUFRLIB: READLC - THERE CANNOT BE MORE THAN '//
189 .
'ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE ",'//
192 904
WRITE(bort_str,
'("BUFRLIB: READLC - MNEMONIC ",A," DOES NOT '//
193 .
'REPRESENT A CHARACTER ELEMENT (ITP=",I2,")")') tgs(1),itp(nod)
195 905
WRITE(bort_str,
'("BUFRLIB: READLC - MNEMONIC ",A," IS A '//
196 .
'CHARACTER STRING OF LENGTH",I4," BUT SPACE WAS PROVIDED '//
197 .
'FOR ONLY",I4, " CHARACTERS")') tgs(1),nchr,lchr
199 906
WRITE(bort_str,
'("BUFRLIB: READLC - MESSAGE UNPACK TYPE",I3,'//
200 .
'" IS NOT RECOGNIZED")') msgunp
subroutine parstr(STR, TAGS, MTAG, NTAG, SEP, LIMIT80)
THIS SUBROUTINE PARSES A STRING CONTAINING ONE OR MORE SUBSTRINGS INTO AN ARRAY OF SUBSTRINGS...
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
THIS SUBROUTINE UNPACKS AND RETURNS A CHARACTER STRING OF LENGTH NCHR CONTAINED WITHIN NCHR BYTES OF ...
This module contains array and variable declarations used to store the internal jump/link table...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine ipkm(CBAY, NBYT, N)
This subroutine encodes an integer value within a specified number of bytes of a character string...
subroutine parutg(LUN, IO, UTG, NOD, KON, VAL)
THIS SUBROUTINE PARSES A USER-SPECIFIED TAG (MNEMONIC) (UTG) THAT REPRESENTS A VALUE EITHER BEING DEC...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
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...
subroutine readlc(LUNIT, CHR, STR)
This subroutine reads a long character string (greater than 8 bytes) from a data subset.