* information obtained from reading of the descriptor files of data sets
*
* revision 0.00 - 05/07/87 - by Mark Verschell for  PMEL/TMAP
* revision 0.01 - 07/07/87 - removed revision and increased size of type/format
* revision 1.00 - 08/18/87 - completely redone
* revision 1.01 - 10/30/87 - removed ds_make_dscrp_rev
* revision 1.02 - 02/08/89 - removed ds_var_modline
* revision 1.03 - 04/24/91 - *sh* increased ds_name and ds_des_name lengths
*	                   - moved real*8 vars to beginning for alignment
* revision 1.04 - 05/11/92 - *sh* increased ds_var_code string length
* revision 1.05 - 3/99 - *kob* increase ds_var_code and ds_var_units to
*			       length 64 and ds_var_title to 128
* revision 1.06 - 4/99 - *kob* increase size of ds_des_name for lengthy DODS
*			  datasets
* V530 *sh* 10/00 - added ds_var_type and ds_file_info_ptr
* revision 1.07 - 12/00 - *acm* add line_cal_name for alternate calendar axes.	
* V540 *acm 10/01 - increase length of ds_name 
* V552 *acm* 5/03 increase ds_var_code to 128 characters
*                 NOTE this is the max: NetCDF parameter NC_MAX_NAME = 128
* V581 *acm* 3/05 increase ds_title, ds_mod_title to 1024
* v604 *acm* 7/07 increase length of ds_name, ds_des_name
* v62  *acm*10/08 increase length of ds_message 
* V68 *acm*1/12 increase ds_name, ds_des_name to 2048
* V68  *acm* 1/12 Real variables should be declared REAL (conversion to double prec.)
* V674 2/12 *acm* 6D Ferret: use nferdims rather than 4 for dimension indexing
*                 need tmap_dims.param with the definition of nferdims.
* V695+ 4/15 *sh* added ds_its_aux_coord for auxiliary coordinate support
* V695+ 5/15 *sh* added ds_var_c_cache_ptr - ptr to cached var (typ aux var)
* V698+ 12/15 *sh* declare larger dset arrays: maxdsets ==> pdsetalloc
* V720   4/17 *sh* add DSG variables 

**************************************************************************
* V720
	COMMON/XDSG_INFO/
     .		dsg_ragged(pdsetalloc),		! is it a contig ragged dset?
     .		dsg_feature_type(pdsetalloc),	! which pfeatureType_? 
     .		dsg_row_size_var(pdsetalloc),   ! the ragged row size
     .		dsg_row_size_varid(pdsetalloc), ! the ragged row size varid in dset
     .		dsg_coord_var(4,pdsetalloc),	! DSG coord COMMON var nos
     .		dsg_orientation(pdsetalloc),	! DSG obs axis orientation
     .		dsg_obs_dimlen(pdsetalloc),     ! observation axis total len
     .		dsg_xlate_grid(pdsetalloc),     ! grid of "translation" axes
     .		dsg_feature_var(pdsetalloc),    ! varid of the "feature" var e.g. station id
     .		dsg_msk_lm(pdsetalloc),		! dyn line number for feature mask if defined
     .		dsg_obs_axis,			! ragged vars get this & E axes
     .		dsg_instance_axis,		! only needed during dset init
     .		dsg_obs_dim,			! only needed during dset init
     .		dsg_instance_dim,		! only needed during dset init
     .		dsg_loaded_lm(maxvars),		! dyn lm number if pre-loaded
     .		dsg_user_direction		! user-imposed DSG direction
	LOGICAL dsg_ragged
	INTEGER	dsg_feature_type, dsg_row_size_var, dsg_row_size_varid, dsg_coord_var,
     .		dsg_orientation, dsg_obs_axis, dsg_instance_axis,
     .		dsg_obs_dimlen, dsg_xlate_grid, dsg_feature_var, dsg_obs_dim, 
     .		dsg_instance_dim, dsg_loaded_lm, dsg_user_direction, dsg_msk_lm
**************************************************************************


	COMMON/XDSET_INFO/
     .		ds_1step(pdsetalloc),ds_lastep(pdsetalloc),
     .		ds_delstep(pdsetalloc),
     .		ds_file_info_ptr(pdsetalloc),
     .		ds_var_c_cache_ptr(maxvars),
     .		ds_type(pdsetalloc),ds_format(pdsetalloc),
     .		ds_source_class(pdsetalloc),ds_source(pdsetalloc),
     .		ds_subsource(pdsetalloc),ds_prog_rev(pdsetalloc),
**************************************************************************
     .		ds_expnum(pdsetalloc),ds_modnum(pdsetalloc),
     .		ds_title(pdsetalloc),ds_mod_title(pdsetalloc),
     .		ds_forcing_set(pdsetalloc),ds_t0time(pdsetalloc),
     .		ds_time_unit(pdsetalloc),ds_time_modulo(pdsetalloc),
     .		ds_ntegrate_tstep(pdsetalloc),ds_ntuple(pdsetalloc),
     .		ds_time_run(pdsetalloc),ds_aux_modnum(num_aux,pdsetalloc),
     .		ds_parm_name(num_parm,pdsetalloc),
     .		ds_parm_text(num_parm,pdsetalloc),
     .		ds_cal_name(pdsetalloc),
**************************************************************************
     .		ds_alert_on_open(pdsetalloc),ds_alert_on_output(pdsetalloc),
     .		ds_message(pdsetalloc),
**************************************************************************
     .
     .          ds_var_code_head,
     .          ds_var_code_padding,
     .		ds_var_code(maxvars),
     .
     .          ds_var_title(maxvars),
     .		ds_var_titl_mod(maxvars),ds_var_units(maxvars),
     .		ds_grid_number(maxvars),ds_missing_flag(maxvars),
     .          ds_var_scale(maxvars), ds_var_off(maxvars),
     .		ds_bad_flag(maxvars),ds_ordering(nferdims,maxvars),
     .		ds_grid_start(nferdims,maxvars),ds_grid_end(nferdims,maxvars),
     .	 	ds_var_type(maxvars), 
     .		ds_precision(maxvars),
**************************************************************************
     .		ds_aux_set_num(maxvars), ds_var_scaleit(maxvars),
     .          ds_its_aux_coord(maxvars), is_mc,
**************************************************************************
     .		min_ds_tstart,max_ds_tend,ds_tdelta,
**************************************************************************
     .		ds_des_name(pdsetalloc),ds_name(pdsetalloc),
     .		ds_open(pdsetalloc),
     .		ds_accepts_remote(pdsetalloc), 
     .		ds_hide(pdsetalloc), 
     .		ds_regsteps(pdsetalloc), ds_basic_axes(6,pdsetalloc),
     .		ds_time_axis(pdsetalloc),
**************************************************************************
     .		ds_ndataperrec(maxvars),ds_nrecpervar(maxvar2),
     .		ds_nrecb4var(maxvar2),ds_var_setnum(maxvars),
     .		ds_npospervar(maxvars),
**************************************************************************
     .          string_array_result1(maxvars)

* "FORMAT RECORD"
	CHARACTER*4	ds_type,ds_format,ds_prog_rev
	CHARACTER*16	ds_source_class,ds_source,ds_subsource

* "BACKGROUND RECORD"
	CHARACTER*4	ds_expnum,ds_modnum,ds_aux_modnum
	CHARACTER*16	ds_forcing_set
	CHARACTER*20	ds_t0time,ds_time_run,ds_parm_name
	CHARACTER*80	ds_parm_text
	CHARACTER*1024	ds_title,ds_mod_title
	INTEGER*4	ds_ntuple
	LOGICAL		ds_time_modulo
	REAL		ds_time_unit,ds_ntegrate_tstep
	CHARACTER*32	ds_cal_name

* "MESSAGE RECORD"
	LOGICAL*2	ds_alert_on_open,ds_alert_on_output
	CHARACTER*1024	ds_message

* "VARIABLE RECORD (one record per file variable)
	CHARACTER*1	ds_precision
	CHARACTER*128	ds_var_code !NOTE this is the max: NetCDF param NC_MAX_NAME=128
	CHARACTER*64	ds_var_units
	CHARACTER*128	ds_var_title,ds_var_titl_mod
	INTEGER*4	ds_grid_start,ds_grid_end,ds_grid_number,
     .			ds_ordering
	REAL		ds_bad_flag,ds_missing_flag
*    - only in GT sets
	INTEGER*4	ds_aux_set_num
*    - only in TS sets
	INTEGER*4	min_ds_tstart,max_ds_tend,ds_tdelta
	INTEGER*4	ds_var_type
        INTEGER         ds_var_code_head,
     .                  ds_var_code_padding,
     .                  string_array_result1

* additional calculated or derived values pertaining to data sets
	CHARACTER*2048	ds_name
	CHARACTER*2048	ds_des_name
	INTEGER*4	ds_open,ds_basic_axes,ds_time_axis
	LOGICAL		ds_regsteps, ds_var_scaleit, ds_its_aux_coord, is_mc, 
     .			ds_accepts_remote, ds_hide
	REAL*8		ds_1step,ds_lastep,ds_delstep,
     .			ds_file_info_ptr
        REAL            ds_var_scale, ds_var_off


* additional calculated or derived values pertaining to variables
	INTEGER*4	ds_ndataperrec,ds_nrecpervar,ds_nrecb4var,
     .			ds_var_setnum
	INTEGER*2	ds_npospervar
	REAL*8		ds_var_c_cache_ptr
