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)
178900
CALL bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS CLOSED, IT MUST'//
179 .
' BE OPEN FOR INPUT')
180901
CALL bort(
'BUFRLIB: READLC - INPUT BUFR FILE IS OPEN FOR '//
181 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
182902
CALL bort(
'BUFRLIB: READLC - A MESSAGE MUST BE OPEN IN INPUT '//
183 .
'BUFR FILE, NONE ARE')
184903
WRITE(bort_str,
'("BUFRLIB: READLC - THERE CANNOT BE MORE THAN '//
185 .
'ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE ",'//
188904
WRITE(bort_str,
'("BUFRLIB: READLC - MNEMONIC ",A," DOES NOT '//
189 .
'REPRESENT A CHARACTER ELEMENT (ITP=",I2,")")') tgs(1),
itp(nod)
191905
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
195906
WRITE(bort_str,
'("BUFRLIB: READLC - MESSAGE UNPACK TYPE",I3,'//
196 .
'" IS NOT RECOGNIZED")') msgunp
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine ipkm(CBAY, NBYT, N)
This subroutine encodes an integer value within a specified number of bytes of a character string,...
This module contains array and variable declarations used to store BUFR messages internally for multi...
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.
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
subroutine parstr(STR, TAGS, MTAG, NTAG, SEP, LIMIT80)
THIS SUBROUTINE PARSES A STRING CONTAINING ONE OR MORE SUBSTRINGS INTO AN ARRAY OF SUBSTRINGS.
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 readlc(LUNIT, CHR, STR)
This subroutine reads a long character string (greater than 8 bytes) from a data subset.
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
THIS SUBROUTINE UNPACKS AND RETURNS A CHARACTER STRING OF LENGTH NCHR CONTAINED WITHIN NCHR BYTES OF ...