;+ ; pro get_var_info, ncid, varInfo, debug = debug ;; get file attributes theAttribs = ncdf_inquire( ncid ) ;; ;; Define the structure of the variable information. varInfo = replicate( {name: ' ', $ units: ' ', $ long_name: ' ', $ type: 0, $ missing_value: {flt: 0.0, int2: 0, int4: 0L, str: ''}, $ ndims: 0, $ dims: intarr(theAttribs.ndims)}, $ theAttribs.nvars) ; ;- j = 0 for i = 0, theAttribs.nvars-1 do begin info = ncdf_varinq(ncid, i) idx = where (info.dim eq theAttribs.RecDim, cnt) if cnt ne 0 then begin ;; this variable has an unlimited dimension, save it varInfo[j].name = info.name varInfo[j].ndims = info.ndims varInfo[j].dims = info.dim ncdf_attget, ncid, info.name, 'units', dummy varInfo[j].units = string(dummy) ncdf_attget, ncid, info.name, 'long_name', dummy varInfo[j].long_name = string(dummy) ncdf_attget, ncid, info.name, 'missing_value', dummy if info.Datatype eq 'BYTE' then varInfo[j].type = 3 if info.DataType eq 'CHAR' then varInfo[j].type = 3 if info.DataType eq 'LONG' then varInfo[j].type = 2 if info.DataType eq 'SHORT' then varInfo[j].type = 1 if info.DataType eq 'FLOAT' then varInfo[j].type = 0 if info.Datatype ne 'BYTE' and info.DataType ne 'CHAR' then begin varInfo[j].missing_value.(varInfo[j].type) = dummy endif else begin if ( varInfo[j].name eq 'fw1_position' or $ varInfo[j].name eq 'fw2_position' ) then begin ;; FW positions are I1 in FORTRAN - make them I2 in IDL varInfo[j].type = 1 varInfo[j].missing_value.(1) = fix(dummy) endif else begin varInfo[j].missing_value.(varInfo[j].type) = string(dummy) endelse endelse if KEYWORD_SET( debug ) then $ print,varInfo[j].name,' ',varInfo[j].missing_value,' ',$ info.Datatype, varInfo[j].type j = j+1 endif endfor varInfo = varInfo[0:j-1] return end