Hi Gary,
It's an unfortunate carryover from "long" originally being a netCDF type
synonymous with "int". When unsigned primitive types were added to
netCDF-4, "ulong" was interpreted as a synonym for "uint", although
neither "long" nor "ulong" are ever emitted from ncdump. Finally, in
analogy with CDL allowing either "unlimited" or "UNLIMITED" to specify
the length of an unlimited dimension, type names are accepted in upper
case, hence the CDL syntax error in specifying "double ULONG".
Assuming no one uses upper case primitive type names in CDL, we've fixed
this in the current snapshot, so ncgen will permit variables with names
like "INT64" or "ULONG" in the next release. In the meantime, the only
workaround is to rebuild ncgen with the current netCDF snapshot.
--Russ
> I have a relatively straightforward manually-edited CDL file that I'm turning
> back into a netCDF file, and I'm getting a 'syntax error' from what looks to
> me to be completely acceptable CDL:
>
> prompt> ncgen -n example.cdl
> ncgen: example.cdl line 84: syntax error
>
> Here's the offending portion:
>
> 79 float dzw(z_w) ;
> 80 dzw:long_name = "midpoint of k to midpoint of k+1" ;
> 81 dzw:units = "centimeters" ;
> 82 dzw:_FillValue = 9.96921e+36f ;
> 83 dzw:missing_value = 9.96921e+36f ;
> 84 double ULONG(nlat, nlon) ;
> 85 ULONG:long_name = "array of u-grid longitudes" ;
> 86 ULONG:units = "degrees_east" ;
> 87 ULONG:_FillValue = 9.96920996838687e+36 ;
> 88 ULONG:missing_value = 9.96920996838687e+36 ;
>
> I'm stumped.
>
> File is at
>
> ftp://ftp.cgd.ucar.edu/pub/strandwg/netCDF/example.cdl.gz
>
> Ideas/comments/help!
>
> Gary Strand
> strandwg@xxxxxxxx