Opened 10 years ago

Closed 10 years ago

#350 closed defect (fixed)

eum2bufr stdout/stderr anomalies

Reported by: Ian Culverwell Owned by: Ian Culverwell
Priority: normal Milestone: 7.1
Component: ropp_io Version: 7.0
Keywords: ropp_message Cc:

Description

Axel von Engeln (EUM) passed on a problem reported by ROPP user Leonid Butenko:

Hi Ian,

Leonid just discovered that the eum2bufr always produces some error  output when
it shouldn't. We traced the error down to the fact that  our eum2ropp was
working without an environment variable BUFR_TABLES set. Funny enough it still
produced the bufr file, but gave out a warning:


---------------------------------------------------------------------
                     EUMETSAT to BUFR Encoder

---------------------------------------------------------------------

INFO (from eum2bufr):  Reading EUM data from 
/tcc1/proj/ro/studies/adhoc/20131202_repro_201101/data/level1b
/2011/01/01/GRAS_1B_M02_20110101004532Z_20110101004803Z_R_O_20
131209081738Z_G15_NN.nc INFO (from eum2bufr):  Encoding profile    1 : 
OC_20110101004532_META_G015_EUME WARNING (from ConvertCodes):  ROPP-BUFR codes
NAMELIST file  roppbufrcodes.nl could not be found.
       Using default look-up tables
                   ECMWF
 
      BUFR ENCODING SOFTWARE VERSION -  7.2 
            1 April  2007. 
 
 
 
 Your path for bufr tables is :
 /tcc1/home/mettools/linux/12.1/intel/lib//bufrt
BUFR TABLES TO BE LOADED
B0000000000000012000.TXT,D0000000000000012000.TXT
INFO (from eum2bufr):  Total of  10466 bytes written to
test.bufr INFO
(from eum2bufr):  Generated 1 BUFR message to test.bufr

--------------------------------------------------------------
-----------

The WARNING above seems to also write a blank and a line feed to  standard
error, this is how Leonid found it. I would argue that this is a bug in ROPP
(rather minor one).

I am also not sure how this environment lookup works, the ROPP output on the
path for bufr tables seems to miss the last few letters (some 80 character
issue?). We use the /tcc1/home/mettools/linux/12.1/intel/lib/bufrtables, where
this path has the roppbufrcodes.nl file as well. Is that also set during 
installation, thus it falls back to that path if no BUFR_TABLES is  found? I
looked at the release notes, user guide and there it seems  you need either
BUFR_LIBRARY (for MO) or BUFR_TABLES (ECMWF).

I think the problem lies in lines 359-363 of ropp_io/ropp_messages/message.f90:

     case(msg_warn)
       IF (msg_MODE >= NormalMode) THEN
         write(stderr, '(a)') ' '
         write(stdout, '(a)') 'WARNING' // trim(post) // '  ' // trim(xstring)
       ENDIF

so that a blank space is written to stderr, rather than stdout.

When this is replaced by

     case(msg_warn)
       IF (msg_MODE >= NormalMode) THEN
         write(stdout, '(a)') ' '
         write(stdout, '(a)') 'WARNING' // trim(post) // '  ' // trim(xstring)
       ENDIF

Leonid's problem disappears - stderr is empty.

Change history (1)

comment:1 by Ian Culverwell, 10 years ago

Milestone: 8.07.1
Resolution: fixed
Status: newclosed

This was included in ROPP7.1, in fact. Changing milestone and closing ticket.

Note: See TracTickets for help on using tickets.