Source code inconsistency in NCARG 4.0.1

From: Mike Berkley (Mike.Berkley@XXXXXX)
Date: Mon Nov 24 1997 - 17:39:05 MST


I'm just in the midst of installing NCARG 4.0.1 on our systems, and
I think I have found some inconsistencies in some of the source

Background:

    Group: CCCMA
    Site Rep: Mike Berkley
    Install number: 2045
    Machine: IBM RS6000

  Some Fortran compilers append an underscore to object symbols, some
  do not. AIX allows you to do either, by including the "-qextname"
  option or not. To maintain code compatibility with our other
  platforms, we include "-qextname" on the RS6000.

  NCARG does not include "-qextname", so we cannot use the pre-built
  RS6k libraries with our code.

Problem:

  By modifying a few files, I was able to compile the NCARG libraries
  with "-qextname" on the RS6000. Unfortunately, I received a number
  of compile-time errors:

    "ERROR: Replaced XTY_CM symbol trbufr_ is larger than the symbol
    that replaces it."

  I finally tracked down the source of this problem to a difference in
  the way the TRBUFR common block is defined.

  In $NCARG_ROOT/source/ncarg2d/src/libncarg_gks/awi/trbufr.h, the
  common block is defined to be:

----------------------------------------------------------------------
      COMMON /TRBUFR/ METBIT, MBUFER, MBFSAV, METREC, MRECLN,
     1 MOPRST, MCONID
      INTEGER MNWRDS, RECLOC, RECSIZ, MBITST, MBUFOF,
     1 MINSBD
      PARAMETER (MNWRDS=360, RECLOC=0 , RECSIZ=16,
     1 MBITST=32 , MBUFOF=32, MINSBD=16)
      INTEGER METBIT, MBUFER(MNWRDS), MBFSAV(MNWRDS), METREC, MRECLN,
     1 MOPRST, MCONID
----------------------------------------------------------------------

  In $NCARG_ROOT/source/ncarg2d/src/bin/pre2ncgm/metred.F (and other
  source files in the pre2ncgm directory), TRBUFR is defined as:

----------------------------------------------------------------------
      COMMON /TRBUFR/ METBIT, MBUFER, MDTYPE, METREC, MRECLN,
     1 MCONTF, MOPRST, LNGFLG, MERGFL
      INTEGER MNWRDS, RECLOC, RECSIZ, DTLOC, DTSIZ, MBITST, MBUFOF,
     1 MINSBD, MERLOC, MERSIZ
#if defined(cray)
      PARAMETER (MNWRDS=180, RECLOC=0, RECSIZ=16, DTLOC=16, DTSIZ=4
#else
      PARAMETER (MNWRDS=360, RECLOC=0, RECSIZ=16, DTLOC=16, DTSIZ=4
#endif
     1 ,MBITST=32, MBUFOF=32, MINSBD=16, MERLOC=23, MERSIZ=1)
      INTEGER METBIT, MBUFER(MNWRDS), MDTYPE, METREC, MRECLN, MOPRST
----------------------------------------------------------------------

  These two definitions are quite different and incompatible. Which
  is the correct definition?

  Thanks

Mike Berkley
-------------------------------------------------------------------------
Canadian Centre for Climate Modelling and Analysis
Atmospheric Environment Service
University of Victoria
P.O. Box 1700
Victoria, BC V8W 2Y2
CANADA

Phone: (250)363-8234 Fax: (250)363-8247 e-mail: Mike.Berkley@ec.gc.ca
-------------------------------------------------------------------------



This archive was generated by hypermail 2b29 : Wed Jun 28 2000 - 09:45:40 MDT