NCEPLIBS-bufr 11.7.1
readlc.f File Reference

Read a long character string (greater than 8 bytes) from a data subset. More...

Go to the source code of this file.

Functions/Subroutines

subroutine readlc (LUNIT, CHR, STR)
 This subroutine reads a long character string (greater than 8 bytes) from a data subset. More...
 

Detailed Description

Read a long character string (greater than 8 bytes) from a data subset.

Definition in file readlc.f.

Function/Subroutine Documentation

◆ readlc()

subroutine readlc (   LUNIT,
character*(*)  CHR,
character*(*)  STR 
)

This subroutine reads a long character string (greater than 8 bytes) from a data subset.

The data subset should have already been read into internal arrays via a previous call to one of the subset-reading subroutines.

Authors
J. Woollen
J. Ator
Date
2003-11-04
Parameters
[in]LUNIT– integer: Fortran logical unit number for BUFR file
[out]CHR– character*(*): Value corresponding to STR
[in]STR– character*(*): Table B mnemonic of long character string to be retrieved, possibly supplemented with an ordinal occurrence notation

If there is more than one occurrence of STR within the data subset definition, then each occurrence can be retrieved via a separate call to this subroutine, and by appending the ordinal number of the occurrence to STR in each case. For example, if there are 5 occurrences of mnemonic LSTID within a given data subset definition, then 5 separate calls should be made to this subroutine, once each with STR set to 'LSTID#1', 'LSTID#2', 'LSTID#3', 'LSTID#4' and 'LSTID#5'. However, the first notation is superfluous, because omitting the ordinal number always defaults to the first occurrence of a particular string, so a user could just specify 'LSTID' instead of 'LSTID#1'.

Remarks
  • Character strings which are 8 bytes or less in length can be read using the real*8 USR array within a call to one of the BUFRLIB values-reading subroutines and then converting the corresponding real*8 value to character format within the application program.
  • If STR is not found within the data subset definition, then CHR is returned with all bits set to 1, which is the standard WMO BUFR value for "missing" data. Any CHR value returned by this subroutine can be checked for equivalence to this "missing" value via a call to function icbfms().

Program history log:

Date Programmer Comments
2003-11-04 J. Woollen Original author
2004-08-09 J. Ator Maximum message length increased from 20,000 to 50,000 bytes
2007-01-19 J. Ator Replaced call to parseq with call to parstr()
2009-03-23 J. Ator Added capability for compressed messages; added check for overflow of chr; added '#' option for more than one occurrence of STR
2009-04-21 J. Ator Use errwrt()
2012-12-07 J. Ator Allow str mnemonic length of up to 14 chars when used with '#' occurrence code
2014-12-10 J. Ator Use modules instead of COMMON blocks
2020-09-09 J. Ator Set CHR to "missing" instead of all blanks if STR isn't found in subset

Definition at line 58 of file readlc.f.

References bort(), errwrt(), ipkm(), moda_tables::itp, moda_bitbuf::mbay, parstr(), parutg(), status(), moda_tables::tag, and upc().

Referenced by ufbdmp(), ufdump(), and wrtree().