[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UDUNITS #QKV-165487]: udunits 1.12.4 bus error


> I cannot find any FORTRAN documentation on #define that uses it in
> quite the way it is used in udunits.inc. The only way I've seen it
> used is for example,
> #define VAR 1
> to define VAR with a specific value. I'm wondering if this is just
> not standard FORTRAN?

C preprocessor directives like "#define VAR 1" are definitely not
standard Fortran: they are directives to the C preprocessor which
the Fortran compiler uses on it's input files before compiling them.

> I tried compiling the code with gfortran
> instead of g77 and got the same error:
> [cassava:~/code2/quikscatjpl] serra% gfortran -ffixed-line-length-132
> -I/sw/include -I/usr/local/hdf4/include qscat3_tropics.f
> read_qscat3_subprg.f handle_err.f get_time.f -L/usr/local/hdf4/lib -
> lmfhdf -ldf -L/sw/lib -lnetcdf -ludunits -ljpeg -lsz -lz -lm -o
> qscat3_tropics
> Warning: udunits.inc:25: Illegal preprocessor directive
> udunits.inc:33.6:
> Included at qscat3_tropics.f:7:
> UD_POINTER utmake
> 1
> Error: Unclassifiable statement at (1)
> [cassava:~/code2/quikscatjpl] serra%
> In this case gfortran also complains about line 25.

I suspect that the file "qscat3_tropics.f" uses directives like

include 'udunits.inc'

rather than directives like

#include "udunits.inc"

The former might be valid g77(1) but it is not standard Fortran
because there is no standard Fortran for including header-files.
The best that can be done is to use C preprocessor directives
instead of any Fortran "include" statements.

Try changing the directives to the C-form and see what happens.

Steve Emmerson

Ticket Details
Ticket ID: QKV-165487
Department: Support UDUNITS
Priority: Normal
Status: On Hold