[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20021121: WWDISP on OSF/1 4.0 (cont.)
- Subject: 20021121: WWDISP on OSF/1 4.0 (cont.)
- Date: Thu, 21 Nov 2002 16:11:42 -0700
>From: "Alliss, Randall J." <address@hidden>
>Organization: TASC
>Keywords: 200211192100.gAJL0r414300 McIDAS WWDISP OSF/1
Randy,
re:
>i get a floating point error when running the following command on my
>DEC-ALPHA running OSF1 4.0
>
>WWDISP USA 1
>
>on the SSEC version i do not get the same error. any clues?
I got a chance to look into this today. The fact that you don't get the
floating point error using the SSEC version turns out to be, quite frankly,
pure luck. The problem is that the array 'mapparms' defined and used
in the procedure 'M0SetMapNav' do not get assigned values for MERCator
projection maps. This array of numbers is passed to the Fortran routine
mapsav.for that bombs when it executes:
IF(I.LT.4) IARR(I+29)=IROUND(PARMS(I)*10000)
(PARMS in mapsav.for is the array mapparms passed from wwdisp.c). Since
C does not initialize variables, the value of mapparms/PARMS is semi-random.
The fix to this problem is setting all mapparms values to zero in their
declaration in wwdisp.c:
<login as 'mcidas'>
cd mcidas2002/src
edit wwdisp.c and:
change:
static int
M0SetMapNav (
int nav_frame,
int frame,
const char *map,
const char *projection,
int *screen_domain)
{
float mapdeflatlon[4]; /* map lat/lon definitions */
float mapparms[4]=; /* definitions for conf
to:
static int
M0SetMapNav (
int nav_frame,
int frame,
const char *map,
const char *projection,
int *screen_domain)
{
float mapdeflatlon[4]; /* map lat/lon definitions */
/* <<<<< UPC mod 20021121 - default mapparms values >>>>> */
float mapparms[4]={0.0,0.0,0.0,0.0}; /* definitions for conf
After making this change, rebuild and reinstall wwdisp.k:
make wwdisp.k
rm ~/bin/wwdisp.k
ln wwdisp.k ~/bin
Please let me know your results after making the change to wwdisp.c and
remaking its executable.
Tom