* GRID_CHG_FCNS.PARM - parameters for "grid changing functions" --
* functions which are capable of delivering results on a grid which is
* differs from the straightforward implications of the input arguments.

* the addition (or major modification) of an internal grid-changing function
* requires changes to these routines:
*	grid_chg_fcns.parm	- parameters to number the functions
*	XGRID_CHG_FCNS_DATA	- description of the function and args
*	DO_INTERNAL_GC_FCN	- code to execute the function
* (opt)	GCF_GET_IMPOSED_AXES	- return the "imposed" axes, if any
* (opt)	GCF_GET_RESULT_LIMS	- fill in limits of "imposed" axes, if any

* V450:
* V500: 1/99 added parg_type in support of string arguments
* V510: 8/99 added SAMPLE* functions
* V533: 6/01 added parg_type_string_or_float
*            and pfcn_return_string, pfcn_return_float
*	     and p_spawn
* V540: 10/01 -- more generalizable parg_type definitions
*       12/01 -- added p_strcmp
* v541: 03/02 -- added p_strlen,p_upcase,p_strindex,p_strrindex
*		       p_dncase, p_strcat, p_substring, p_strfloat
*                for new internal string handling functions  *kob*
* 1/03: *kob* -- hardcode value for parg_type_float_or_string to 3 which
*                is the value of ior(parg_type_float,parg_type_string).
*                g77 won't allow intrinsic function in paramter stmt
*  V6.0 *acm*  5/06 string results for external functions
*                make pfcn_rtn_float = 1, pfcn_rtn_string  = 2, so they
*                are compatible with parg_type_float=1, parg_type_string=2
* v720: 03/17 -- added p_innerprod for inner product function
* v720: 03/17 -- added p_transpose for transpose function
* v720: 05/17 -- rename innerproduct functions to dot


	INTEGER		p_xunravel, p_times2, p_reshape, p_zlayer,
     .			p_yunravel, p_zunravel, p_tunravel, 
     .			p_eunravel, p_funravel,
     .			p_samplei, p_samplej, p_samplek, p_samplel, 
     .			p_samplem, p_samplen,
     .			p_spawn, p_strcmp, p_strlen, p_upcase, 
     .                  p_strindex, p_strrindex, p_dncase, p_strcat,
     .                  p_substring, p_strfloat, p_dot, p_transpose

	PARAMETER     ( p_xunravel = 1,
     .			p_times2      = p_xunravel  + 1,
     .			p_reshape     = p_times2    + 1,
     .			p_zlayer      = p_reshape   + 1,
     .			p_yunravel    = p_zlayer    + 1,
     .			p_zunravel    = p_yunravel  + 1,
     .			p_tunravel    = p_zunravel  + 1,
     .			p_eunravel    = p_tunravel  + 1,
     .			p_funravel    = p_eunravel  + 1,
     .			p_samplei     = p_funravel  + 1,
     .			p_samplej     = p_samplei   + 1,
     .			p_samplek     = p_samplej   + 1,
     .			p_samplel     = p_samplek   + 1,
     .			p_samplem     = p_samplel   + 1,
     .			p_samplen     = p_samplem   + 1,
     .			p_spawn       = p_samplen   + 1,
     .			p_strcmp      = p_spawn     + 1,
     .                  p_strlen      = p_strcmp    + 1,
     .                  p_upcase      = p_strlen    + 1,
     .                  p_strindex    = p_upcase    + 1,
     .                  p_strrindex   = p_strindex  + 1,
     .                  p_dncase      = p_strrindex + 1,
     .                  p_strcat      = p_dncase    + 1,
     .                  p_substring   = p_strcat    + 1,
     .                  p_strfloat    = p_substring + 1,
     .                  p_dot         = p_strfloat  + 1,
     .                  p_transpose   = p_dot + 1 )

* parameters to control the passing of context information
	INTEGER		pset_to_unspec, ppass_along
	PARAMETER     ( pset_to_unspec = 1,
     .			ppass_along    = 2 )

* parameters to designate the data type of arguments
	INTEGER		parg_type_float,
     .			parg_type_string,
     .			parg_type_double,
     .			parg_type_byte,
     .			parg_type_int16,
     .			parg_type_int32,
     .
     .			parg_type_float_or_string
	PARAMETER     ( parg_type_float  = 1,
     .			parg_type_string = 2,
     . 		        parg_type_float_or_string = 3,
     .			parg_type_double = 4,
     .			parg_type_byte   = 8,
     .			parg_type_int16  = 16,
     .			parg_type_int32  = 32)


* parameters to designate the data type of return value of function
	INTEGER		pfcn_rtn_string,
     .			pfcn_rtn_float,
     .			pfcn_rtn_arg1_type,
     .			pfcn_rtn_arg2_type,
     .			pfcn_rtn_arg3_type
	PARAMETER     ( pfcn_rtn_float = 1,
     .			pfcn_rtn_string  = 2,
     .			pfcn_rtn_arg1_type  = -1,
     .			pfcn_rtn_arg2_type  = -2, 
     .			pfcn_rtn_arg3_type  = -3 )

