70 CHARACTER*128 bort_str,errstr
85 CALL
status(lunit,lun,il,im)
93 CALL
parstr(str,tgs,maxtg,ntg,
' ',.true.)
99 CALL
parutg(lun,0,tgs(1),nnod,kon,roid)
102 IF(ioid.LE.0) ioid = 1
105 DO WHILE((ii.LE.10).AND.(tgs(1)(ii:ii).NE.
'#'))
106 ctag(ii:ii)=tgs(1)(ii:ii)
117 IF(msgunp(lun).EQ.0.OR.msgunp(lun).EQ.1)
THEN
124 IF(ctag.EQ.tag(nod))
THEN
126 IF(itagct.EQ.ioid)
THEN
127 IF(itp(nod).NE.3) goto 904
129 IF(nchr.GT.lchr) goto 905
131 CALL
upc(chr,nchr,mbay(1,lun),kbit,.true.)
136 ELSEIF(msgunp(lun).EQ.2)
THEN
143 IF(ctag.EQ.crtag(ii))
THEN
145 IF(itagct.EQ.ioid)
THEN
147 IF(nchr.GT.lchr) goto 905
149 CALL
upc(chr,nchr,mbay(1,lun),kbit,.true.)
162 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
163 errstr =
'BUFRLIB: READLC - MNEMONIC ' // tgs(1) //
164 .
' NOT LOCATED IN REPORT SUBSET - RETURN WITH MISSING' //
165 .
' STRING FOR CHARACTER DATA ELEMENT'
167 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
171 CALL
ipkm(chr(ii:ii),1,255)
178 900 CALL
bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS CLOSED, IT MUST'//
179 .
' BE OPEN FOR INPUT')
180 901 CALL
bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS OPEN FOR '//
181 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
182 902 CALL
bort(
'BUFRLIB: READLC - A MESSAGE MUST BE OPEN IN INPUT '//
183 .
'BUFR FILE, NONE ARE')
184 903
WRITE(bort_str,
'("BUFRLIB: READLC - THERE CANNOT BE MORE THAN '//
185 .
'ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE ",'//
188 904
WRITE(bort_str,
'("BUFRLIB: READLC - MNEMONIC ",A," DOES NOT '//
189 .
'REPRESENT A CHARACTER ELEMENT (ITP=",I2,")")') tgs(1),itp(nod)
191 905
WRITE(bort_str,
'("BUFRLIB: READLC - MNEMONIC ",A," IS A '//
192 .
'CHARACTER STRING OF LENGTH",I4," BUT SPACE WAS PROVIDED '//
193 .
'FOR ONLY",I4, " CHARACTERS")') tgs(1),nchr,lchr
195 906
WRITE(bort_str,
'("BUFRLIB: READLC - MESSAGE UNPACK TYPE",I3,'//
196 .
'" 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.