/* static char sccsid[]="%Z% %M% %I% %E% %U%"; */
/********************************************************/
/*														*/
/*	clconst.h											*/
/*														*/
/*		coded by A.Kobayashi 2010.5.28					*/
/*														*/
/*********************************************************/
#ifndef _CLCONST_H
#define _CLCONST_H

/************************************/
/* スクリプト構文解析に使用する定数	*/
/************************************/

#define MAX_OPTIONS  30		/* 実行時オプションの最大数 */
#define PM_MAX      512		/* コマンドのパラメータ最大数 */
#define ON_NUM_MAX   16		/* ＯＮ条件の最大数 */
#define Pr_NM_MAX    40		/* proc構造体内のproc名用エリア長 */
#define Var_NM_MAX  128		/* 変数名最大長 */
#define BUFLEN      512		/*  */
#define PR_NM_DEF    32		/* proc名最大長 */
#define MAX_MEMBER	(PM_MAX-2)/2	/* 構造体定義のメンバー最大数 */
#define MAX_PARL      7		/* parlパラメータ最大数 */

#define MAX_VAR_IX	1024
#define MAX_VAR_IY	64		/* $変数の初期最大数 */
#define MAX_VAR_XY	MAX_VAR_IX*MAX_VAR_IY

#define MAX_IGE_IX	16
#define MAX_IGE_IY	32
#define MAX_IGE_XY	MAX_IGE_IX*MAX_IGE_IY

#define MAX_PAS_IX	16
#define MAX_PAS_IY	32
#define MAX_PAS_XY	MAX_PAS_IX*MAX_PAS_IY

#define MAX_LVR_IX	8
#define MAX_LVR_IY	32
#define MAX_LVR_XY	MAX_LVR_IX*MAX_LVR_IY

#define D_USER_INF  68		/*  A.Koba 9.1 */

#define D_MAX_SYS_PUB_VAR	4

#define MAX_LOOP_WHILE  100000
#define D_NAM_MAX_LOOP_WHILE	"MAX_LOOP_WHILE"

#define D_NAM_TRNSHID	"TRNSHID"

#define MAX_DO_STACK_DEPTH	1000

#if 1	/* 2017.7.16 Koba */
#define MAX_ARRAY_DIM	12
#else
#define MAX_ARRAY_DIM	3
#endif

#define MAX_STACK	64	/* ((( ...((())) ... )))  ==> 256byte/2 */
#define MAX_PMSTK	64	/* define array x 512 = (1,2,3,4,5,...) */
#define MAX_OBJECT	(MAX_STACK+MAX_PMSTK*3)

#define MAX_CONST_OBJ	4	/* 0:$LOOP_WHILE_MAX=100000 */
							/* 1:$TRNSHID='' */
							/* 2:$TRNSHID=$TRNSHID &+ hostid */
							/* 3:$TRNSHID=replike($TRNSHID,'%____*$','') */

#define MAX_CMD_DA	20
#define MAX_CMD_OBJ	MAX_CMD_DA*6
#define MAX_CMD_OBJ0	64

#define LRU_SCR_MAX	100
#define LRU_SCR_MIN	20

#define MAX_DEC_SCALE	CHAR_MAX
#define MIN_DEC_SCALE	CHAR_MIN
#define D_DEC_PRECISION	30
#define D_DEC_SCALE		15
#define MAX_DEC_PRE1	100
#define MAX_DEC_PRECISION	(USHRT_MAX-4)	/* MPA10WでlenのMAXがUSHRT_MAXであり、精度のMAXがNMPA2-1のため */

#define MAX_PRINT_FLGS	5

#define D_GETCHAR_PRE_READ_LEN	128
#define D_GETCHAR_MIN_READ_LEN	4

#define MAX_ITERATE_LAYER	100

#define MAX_REGEX_MATCH	255

/************************************/
/* ＯＮテーブル関連					*/
/************************************/
#define D_PRSEL_NULL	0
#define D_PRSEL_IP		1
#define D_PRSEL_EP		2
#define D_PRSEL_SC		3

#define D_EPNM_INPUT	"input"
#define D_EPNM_INPUTXML	"inputXML"
#define D_EPNM_SELMAIN	"ClSelMain"
#define D_EPNM_USERFUNC	"UserFunc"

/************************************/
/* フラグの値						*/
/************************************/

#define S_ON		(short)1
#define S_OFF		(short)0
#define L_ON		1
#define L_OFF		0
#define C_ON		'1'
#define C_OFF		'0'

/************************************/
/* コマンド解析結果の定数定義		*/
/************************************/
#define M_COMMENT		'@'				/* コメント */
#define M_KUGIRI		';'				/* 区切り文字(始まり) */
#define M_QUOTE1		'\''			/* 区切り文字(終わり) */
#define M_QUOTE2		'"'				/* 区切り文字(終わり) */
#define M_QUOTE			M_QUOTE2		/* 区切り文字(終わり) */
#define M_SPACE			' '				/* 解釈不能 */
#define M_PRAGMA		"#*/+-=>.@!?"

#define DEF_OPTC_ICMP	'*'

#define C_CMD_FLAGS		0xff000000		/* フラグ */
#define C_LABEL			0x10000000		/* ラベル */
#define C_PRAGMA		0x20000000		/* PRAGMA */

#define C_EXEC			0x00000100		/* 手続き呼出 */
#define C_INTERACTIVE	0x00000110		/* 会話モード */
#define C_CALL			0x00000120		/* 手続き呼出 */

#define C_PROC			0x00000200		/* 手続き開始 */
#define C_ENDPROC		0x0000020F		/* 手続き終了 */

#define C_FUNCTION		0x00000210		/* 関数開始 */
#define C_ENDFUNC		0x0000021F		/* 関数終了 */

#define C_CLASS			0x00000220		/* クラス開始 */
#define C_ENDCLASS		0x0000022F		/* クラス終了 */

#define C_EXCEPTION		0x00000230		/* 例外処理 */

#define C_SQL			0x00000300		/* ＳＱＬ文発行 */
#define C_MSG			0x00000310		/* Message */

#define C_LOOP			0x00000400		/* ＬＯＯＰの制御 */
#define C_FOR			0x00000401		/* ＦＯＲの制御 */
#define C_NEXT			0x00000411		/* ＦＯＲの終了 */
#define C_ENDFOR		0x00000421		/* ＦＯＲの終了 */
#define C_WHILE			0x00000402		/* ＷＨＩＬＥの制御 */
#define C_ENDWHILE		0x00000412		/* ＷＨＩＬＥの終了 */
#define C_UNTIL			0x00000403		/* ＵＮＴＩＬの制御 */
#define C_ENDUNTIL		0x00000413		/* ＵＮＴＩＬの終了 */
#define C_ENDLOOP		0x0000040F		/* ＬＯＯＰの制御終了 */
#define C_BREAK			0x0000041F		/* ＬＯＯＰの終了 */
#define C_CONTINUE		0x00000408		/* ＬＯＯＰの継続 */
#define C_DO			0x00000420		/* ＤＯの制御 */
#define C_ENDDO			0x0000042F		/* ＤＯの制御終了 */
#define C_LOOP_DO		0x01000000		/* ＬＯＯＰ　ＤＯフラグ */

#define C_READ			0x00000500		/* データの読み込み */

#define C_OUTPUT		0x00000600		/* パケットに出力 */

#define C_ONN			0x00000700		/* ＯＮ条件の定義 */

#define C_IF			0x00000800		/* 処理選択の制御 */
#define C_ELSE			0x00000810
#define C_ELSEL			0x00000811
#define C_ELSEIF		0x00000820
#define C_ENDIF			0x0000080F		/* 処理選択の制御終了 */

#define C_SWITCH		0x00000850		/* 処理選択の制御 */
#define C_CASE		 	0x00000860
#define C_DEFAULT		0x00000870
#define C_ENDSW			0x0000085F		/* 処理選択の制御終了 */

#define C_BEXP			0x00000900		/* ２項演算　代入 */
#define C_LET			0x00000910		/* 代入 */

#define C_RETURN		0x00000A00		/* 呼出元に復帰 */

/* add chichii 1992/01/09 */

#define C_UNKNOWN		0x00000B00
#define C_END			0x00000B0F
#define C_FEND			0x00000C00

/* 1993.9.20 tsuru V3003 */
#define C_LEAVE			0x00000D00		/* コマンド転送 */

#define C_DEFINE		0x00000E00		/* 定義 */
#define C_REDEFINE		0x00000E01		/* 再定義 */
#define C_UNDEFINE		0x00000E02		/* 定義の解放 */
#define C_DIM			0x00000E03		/* 定義 */
/*#define C_TYPEDEF		0x00000E04	*/	/* 型定義 */
#define C_IMPORT		0x00000E10		/* Import */
#define C_SLEEP			0x00000F00		/* sleep */

#define C_TRY			0x00001000		/* Try */
#define C_CATCH			0x00001010		/* Catch */
#define C_FINALLY		0x00001020		/* Finally */
#define C_ENDTRY		0x0000100F		/* End Try */
#define C_THROW			0x00001001		/* throw */

#define C_NODE_SCRIPT	0x0000FF00		/* Node Script */
#define C_NODE_IMPORT	0x0000FF01		/* Node Import */
#define C_NODE_DEFINE	0x0000FF02		/* Node Define */

/************************************/
/* コマンドTAGの定数定義			*/
/************************************/
#define CTAG_PROC		0x01		/* 手続き開始 */
#define CTAG_FUNC		0x02		/* 関数開始 */
#define CTAG_CLASS		0x04		/* クラス開始 */

/************************************/
/*	サブコマンドの定数定義			*/
/************************************/
/* LET */
#define CS_OPTIONS		1
#define CS_OPTION		2
#define CS_SHIFT		3
#define CS_CONTINUE		4
#define CS_PRINT		5
#define CS_EXIT			6
#define CS_INTERACTIVE	7
#define CS_LOGPARM		8
#define CS_GLOBAL		9
#define CS_LOCAL		10
#define CS_PRIVATE		11
#define CS_CONST		12
#define CS_MAPPEDARRAY	13
#define CS_ARRAY		14
#define CS_TRY_EXIT		15
#define CS_ATTR			16
#define CS_TYPE			17
#define CS_VAR			18
#define CS_ECHO			19
#define CS_AS			20
#define CS_IN			21
#define CS_EACH			22
#define CS_SHARED		23
#define CS_TO			24
#define CS_STEP			25
#define CS_LPRINT		26
#define CS_DUMP			27
#define CS_IP			28
#define CS_EP			29
#define CS_SC			30
#define CS_SM			31
#define CS_DO			32
#define CS_THEN			33
#define CS_STATIC		34
#define CS_PUBLIC		35
#define CS_PRINTF		36
#define CS_LPRINTF		37
#define CS_BREAK		38
#define CS_EXPORT		39
#define CS_REDIRECT		40
#define CS_EXTENDS		0x100

/****************************/
/*	LOOP KIND				*/
/****************************/
#define D_LOOP_NORMAL	1
#define D_LOOP_WHILE	2
#define D_LOOP_EACH		3
#define D_LOOP_FOR		4
#define D_LOOP_UNTIL	5

#define D_SWITCH_CASE		11
#define D_SWITCH_DEFAULT	12

#define D_TRY_WITH		21

/****************************/
/*	EXEC OPTION				*/
/****************************/
#define D_EX_OPT_TRYPASS		"TRYPASS"
#define D_EX_OPT_NOTRYPASS		"NOTRYPASS"

/********************************/
/* スクリプトテーブル定義		*/
/********************************/

#define DEF_SCRPATH			"SCRIPTPATH"	/* Script File Search Path 94.1.4 Koba */
#define DEF_CMDSCRIPT		"DSCMDSCRIPT"	/* Command to Script file name */
#define DEF_HOME			"HOME"			/* User Home Directory */
#define DEF_SCREXTENSION	"SCREXTENSION"	/* Script File Extension */

#define SCR_EXTENSION		"cl"

/********************************/
/* ステータス定義				*/
/********************************/

#define COM_PR		0x80		/* コマンド処理中 */
#define UPD_PR		0x40		/* 更新処理中 */
#define RTN_PR		0x20		/* リターン待ち中 */
#define SHT_PR		0x10		/* Shut flag */
#define RLL_BK		0x08		/* Rollback process */
#define NEW_SC		0x08		/* New Script */
#define SCR_PR		0x04		/* スクリプト処理 */
#define FST_PR		0x02		/* fshut flag */

#define SHT_CM		0x02		/* shut command */

#define SCR_RD		0x01		/* スクリプト読み込み中 */
#define SCR_RO		0x08		/* スクリプトよみこみちゅう  */
#define SCR_EX		0x02		/* スクリプト実行中 */
#define SCR_ED		0x04		/* スクリプト終了 */
#define TRY_EXIT	0x10		/* TRY EXIT中 */

/* 1993.9.20 tsuru V3003 */
#define SCR_LV		0x40		/* ＬＥＡＶＥ実行中 */

#define SEL_ED		0x04		/* kensaku		*/

#define FNC_PR		0x01		/* proc.ptype */
#define LOP_PR		0x02		/* proc.ptype ループ処理中 */
#define RET_PR		0x10		/* proc.ptype RETURN処理中 */
#define BRK_PR		0x08		/* proc.ptype BREAK処理中 */
#define GR3_PR		0x80		/* proc.ptype ONのproc-3処理中 */
#define UFN_PR		0x80		/* proc.ptype ユーザ関数実行中(setのみ) */

#define D_PFLAG_EXCEPTION	0x02	/*  */
#define D_PFLAG_EXCEP_RUN	0x04	/*  */
#define D_PFLAG_CONSTRUCT	0x08	/*  */
#define D_PFLAG_NO_FREE		0x10	/* cl_er_lk_proc_ct()でprocをFree()しない */
#define D_PFLAG_DEF_CLASS	0x20	/*  */
#define D_PFLAG_PARM_COPY	0x80	/* パラメータ変数は、コピーを使っている(main proc) */
#define D_PFLAG_STATIC		0x40	/*  */
#define D_PFLAG2_ALC_HDNM	0x01	/* alloc HereDoc_nm */
#define D_PFLAG2_SET_STDIN	0x01	/* set stdin  first */
#define D_PFLAG2_SET_STDOUT	0x02	/* set stdout first */
#define D_PFLAG2_SET_STDERR	0x04	/* set stderr first */
#define D_PFLAG2_NOT_CLOSE	0x10	/* not close when HereDoc EOF */
#define D_PFLAG2_DEL_TAB	AKX_TRIM_DEL_TAB	/* '-' del tab   HereDoc */
#define D_PFLAG2_DEL_SPACE	AKX_TRIM_DEL_SPACE	/* '=' del space HereDoc */
#define D_PFLAG2_HEREDOC_OPT (D_PFLAG2_NOT_CLOSE | AKX_TRIM_DEL_TAB | AKX_TRIM_DEL_SPACE)

#define D_EXCEPT_TRY		1		/*  */
#define D_EXCEPT_CATCH		2		/*  */
#define D_EXCEPT_RUN		3		/*  */

#define D_NOT_CLOSE_CHAR_MARK	'!'	/* not close when HereDoc EOF */

/********************************/
/*								*/
/********************************/
#define GRPFRMHEAD		17			/* グループノードヘッダ長 */
#define DTFRMHEAD		12			/* データノードヘッダ長   */
#define FRFRMHEAD		2 			/* データノードヘッダ長   */
#define FIELDLEN		5
#define STD_MAX			256
#define STD_LEN			2
#define EXT_LEN			6
#if 0
#define D_ACC_EXT		0x00		/* 拡張形式		*/
#define D_ACC_STD		0x01		/* 標準形式		*/
#define D_ACC_CHAR		0x01		/* 精度(u char)	*/
#define D_ACC_SHORT		0x02		/* 精度(short int)	*/
#define D_ACC_LONG 		0x03		/* 精度(long int)	*/
#endif
#define PARAMETER		1			/* 変数			*/
#define CONSTANT_CHR	2			/* 文字定数		*/
#define CONSTANT_NUM	3			/* 数字定数 	*/
#define SYSVAR			4			/* システム変数	*/
#define NAME_CONST		5			/* 名称			*/
#define SEPARATOR		6			/* 区切り文字	*/
#define ETC_ALL			99			/* その他	*/
#define NULL_PARM		100			/* ＮＵＬＬパラメータ	*/
#define MATH			11			/* 算術演算		*/
#define COMP			12			/* 比較演算		*/
#define LOGICAL			13			/* 論理演算		*/
#define STRING 			14			/* moji演算		*/
#define IS 				15			/* is  演算		*/
#define TO 				16			/* to  演算		*/
#define FUNCTION		17			/* function演算	*/
#define USER_PGM		18			/* user program演算	*/
#define FUNCMATH		19			/* math function演算*/
#define FUNCCAST		20			/* cast演算	*/
#define FUNCFILE		21			/* file function演算*/
#define FUNCLOG			22			/* log function演算 */
#define AGGREGATE		23			/* 集合演算			*/

#define D_CNBD_SIZE  8192		/* CnCB BD size */
#define D_BULK_TYPE  2

#define D_GX_OPT_STORE			0x0001			/*   */
#define D_GX_OPT_STORE_CHK		0x0002			/*   */
#define D_GX_OPT_SET_LOCAL		0x0004			/*   */
#define D_GX_OPT_REDEFINE		0x0008			/*   */
#define D_GX_OPT_SET_ADDR		0x0010			/*   */
#define D_GX_OPT_GET_ADDR		0x0020			/*   */
#define D_GX_OPT_SET_PUBLIC		0x0040			/*   */
#define D_GX_OPT_SET_PRIVATE	0x0080			/*   */
#define D_GX_OPT_NOEROUT_NDEF	0x0100			/*   */
#if 1	/* 2021.8.28 */
#define D_GX_OPT_NOHOLD_NDEF	0x0200			/*   */
#else
#define D_GX_OPT_CHECK_DEFINE	0x0200			/*   */
#endif
#define D_GX_OPT_NOALLOC_INDX	0x0400			/*   */
#define D_GX_OPT_SET_ARRAY		0x0800			/*   */
#define D_GX_OPT_ALC_MASK		0x7000			/*   */
#define D_GX_OPT_ALC_LEAF		0x0000			/*   */
#define D_GX_OPT_ALC_CONST		0x1000			/*   */
#define D_GX_OPT_ALC_SCR		0x2000			/*   */
#define D_GX_OPT_ALC_TMP		0x3000			/*   */
#define D_GX_OPT_ALC_MALLOC		0x4000			/*   */
#define D_GX_OPT_NO_USE_OBJ		0x8000			/*   */
#define D_GX_OPT_SET_PROC_OBJ	0x010000		/*   */
#define D_GX_OPT_PARMINFO2		0x020000		/*   */
#define D_GX_OPT_SET_CONST		0x040000		/*   */
#define D_GX_OPT_GET_RANGE		0x080000		/*   */
#define D_GX_OPT_NOERROR_NDEF	0x100000		/*   */
#define D_GX_OPT_SET_STATIC		0x200000		/*   */
#define D_GX_OPT_SET_GLOBAL		0x400000		/*   */
#define D_GX_OPT_SET_IMPORT		0x800000		/*   */
#define D_GX_OPT_GET_DEF_ATTR	0x01000000		/*   */
#define D_GX_OPT_MULTI_BYTE		0x02000000		/*   */
#define D_GX_OPT_SET_CLEAR		0x04000000		/*   */
#define D_GX_OPT_PROC_NAME		0x08000000		/*   */
#define D_GX_OPT_DEFINE			0x10000000		/*   */
#define D_GX_OPT_INFO_MODE		0x20000000		/*   */
#define D_GX_OPT_SET_MAPPED		0x40000000		/*   */
#define D_GX_OPT_SET_EXPORT		0x80000000		/*   */
#define D_GX_OPT_SET_SCOPE		(D_GX_OPT_SET_LOCAL | D_GX_OPT_SET_GLOBAL | D_GX_OPT_SET_PUBLIC | D_GX_OPT_SET_PRIVATE)
#define D_GX_OPT_USE_ATTR		0x5C5C5C00		/*   */

#define D_MAX_SCOPE				4
#define D_LEN_SCOPE_MARK		3
#define D_STR_MARK_GLOBAL		"<G>"
#define D_STR_MARK_PUBLIC		"<P>"
#define D_STR_MARK_PRIVATE		"<S>"
#define D_STR_MARK_LOCAL		"<L>"
#define D_STR_MARK_INSTANCE		"<I>"

#define D_STR_NAME_GLOBAL		"GLOBAL"
#define D_STR_NAME_PUBLIC		"PUBLIC"
#define D_STR_NAME_PRIVATE		"PRIVATE"
#define D_STR_NAME_LOCAL		"LOCAL"
#define D_STR_NAME_STATIC		"STATIC"

#define D_DATA_MALLOC		0x80		/* malloc data		*/
#define D_DATA_LPOSDATA		0x40		/* data to lPos   */
#define D_DATA_INDEX_FREE	0x20		/* able free 配列要素,構造体メンバ */
#define D_DATA_ARRAY_INDEX	0x10		/* array index   */
#define D_DATA_COPIED_PROC	0x08		/* copied proc only class or instance */
#define D_DATA_INDEX_TMP	0x08		/* index tmp memory  */
#define D_DATA_DATA_FREE	0x04		/* able free data */
#define D_DATA_UNSIGNED		0x02		/* unsigned */

#define D_DATA_ID_UNDEF		'\0'		/*   */
#define D_DATA_ID_DATA		' '			/* Normal Data   */
#define D_DATA_ID_MAPEDARY	'A'			/* Mapped Array  */
#define D_DATA_ID_ARRAY		'R'			/* Normal Array  */
#define D_DATA_ID_FUNCTION	'F'			/* Function  */
#define D_DATA_ID_STOREVAR	'S'			/*   */
#define D_DATA_ID_UNDEFVAR	'U'			/* Undefined Variable */
#define D_DATA_ID_LIST		'L'			/* List  */
#define D_DATA_ID_TYPE		'P'			/* Type  */
#define D_DATA_ID_STRUCT	'T'			/* Struct  */
#define D_DATA_ID_CLASS		'C'			/* Class */
#define D_DATA_ID_INSTANCE	'I'			/* Class Instance */
#define D_DATA_ID_CLMETHOD	'M'			/* Class Method */
#define D_DATA_ID_PROC		'O'			/* Proc */
#define D_DATA_ID_PNAME		'E'			/* Parameter Name */
#define D_DATA_ID_NARABI	'N'			/* Narabi shiki  */
#define D_DATA_ID_RANGE		'G'			/* RANGE only in iterate_info */

#define D_AUX0_ZOK_MASK		DEF_ZOK_MASK	/* DATA TYPE MASK	*/
#define D_AUX0_ZOK_DATA		DEF_ZOK_DATA	/* 0x80 属性・実体		*/
#define D_AUX0_TYPE_ARRAY	17			/* 0x11 TYPE ARRAY		*/
#define D_AUX0_TYPE_MAPPED	18			/* 0x12 TYPE MAPPEDARRAY*/
#define D_AUX0_TYPE_STRUCT	19			/* 0x13 TYPE STRUCT		*/
#define D_AUX0_VAR_EXPORT	0x40		/* 		*/

#define D_AUX1_VAR_SCOPE	0x0f		/* var scope mask		*/
#define D_AUX1_LOCAL_VAR	0x01		/* local var data		*/
#define D_AUX1_PRIVATE_VAR	0x02		/* private var data		*/
#define D_AUX1_PUBLIC_VAR	0x04		/* public var data		*/
#define D_AUX1_GLOBAL_VAR	0x08		/* global var data		*/
#define D_AUX1_HASHED_NAME	0x10		/* hashed name			*/
#define D_AUX1_FUNC_ARRY	0x20		/* function or array	*/
#define D_AUX1_OPT_STORE	0x40		/* opt='s'				*/
#define D_AUX1_PROTECTED	0x80		/* cannot store data	*/

#define D_AULN_NO_AL_LPOS	0x0001		/* no malloc array name */
#define D_AULN_PARMINFO2	0x0002		/*   */
#define D_AULN_RANGE_DATA	0x0004		/*   */
#define D_AULN_IGN_CASE		0x0008		/*   */
#define D_AULN_NONE_PARM	0x0010		/*   */
#define D_AULN_FIND_METHOD	0x0020		/*   */
#define D_AULN_NAME_DATA	0x0040		/*   */
#define D_AULN_DATA_NARABI	0x0080		/*   */
#define D_AULN_UNDEF_ARRAY	0x0100		/*   */
#define D_AULN_NULL_PARM	0x0200		/* null parameter   */
#define D_AULN_SET_POS_LEAF	0x0400		/*   */
#define D_AULN_FILE_POINTER	0x0800		/*   */
#define D_AULN_OVERFLOW		0x1000		/*   */
#if 1	/* 2021.6.16 */
#define D_AULN_RANGE_INTVAL	0x2000		/* have range interval. D_AULN_RANGE_DATAとペア */
										/* これのみのときは、展開データの開始と終了 */
#else
#define D_AULN_UNDERFLOW	0x2000		/*   */
#endif
#define D_AULN_DOT_NAME		0x4000		/*   */
#define D_AULN_HOLD_ERROR	0x8000		/*   */

#define D_ATR1_NO_MALLOC	0x08		/* no malloc data	*/

#define D_LEAF_INEFFECTIVE	0x01		/*  */
#define D_LEAF_CACHED		0x02		/*  */
#define D_LEAF_IMPORTMODE	0x04		/*  */
#define D_LEAF_DEF_EXECUTED	0x08		/* 2021.7.1 */

#define D_SCRPT_NEW_LEX		0x10		/*  */
#define D_SCRPT_INTERACTIVE	0x20		/*  */
#define D_SCRPT_MEMORY		0x40		/*  */
#define D_SCRPT_FUNC		0x80		/*  */

#define D_CLST_OPT_COMMAND		0x000100	/*  */
#define D_CLST_OPT_USE_DTYPE	0x800000	/*  */
#define D_CLST_OPT_DTYPE		0x0f0000	/*  */

#define D_OPT_ALC_LEAF		0			/*   */
#define D_OPT_ALC_CONST		1			/*   */
#define D_OPT_ALC_SCR		2			/*   */
#define D_OPT_ALC_TMP		3			/*   */
#define D_OPT_ALC_MALLOC	4			/*   */

#define D_CMND_PARM_LINE	0			/* コマンドとラベルを除く */
#define D_SCR_FULLNAME		1			/*   */
#define D_CMND_NAME			2			/*   */
#define D_SCRP_OBJ0_USED	3			/*   */
#define D_PROC_OBJ0_USED	4			/*   */
#define D_DOWHILE_TOP_LEAF	5			/*   */
#define D_LEAF_LABEL		6			/*   */

#define D_IPARM_ATTR	0			/*   */
#define D_IPARM_SIZE	1			/*   */
#define D_IPARM_PRE		2			/*   */
#define D_IPARM_SCA		3			/*   */
#define D_IPARM_OVER	4			/*   */

#define D_REP_ALC_MASK			D_GX_OPT_ALC_MASK
#define D_REP_IGN_OUT_DATA		0x0010		/* ignore data of pInfoParmO */
#define D_REP_CHK_UNDEF_IN		0x0020		/* check undef of pInfoParmI */
#define D_REP_OPT_CPY_MASK		0x0003		/*  */
#define D_REP_OPT_CPY_ONLY		0			/*  */
#define D_REP_OPT_CPY_MALC		1			/*  */
#define D_REP_OPT_CPY_M_F_OUT	2			/*  */
#define D_REP_OPT_SEL_MASK		0x0f00		/* 処理選択マスク */
#define D_REP_OPT_SEL_CNVT		0x0100		/* データタイプ固定時の変換のみ */
#define D_REP_OPT_SEL_RCSV		0x0200		/* 再帰repのみ */
#define D_REP_OPT_SEL_DATA		0x0400		/* data repのみ */

#define D_PRN_OPT_NGEN	0x4000	/* 一般データ以外をエラーにしない */
#define D_PRN_OPT_LTGT	0x8000	/* enclosed in angle brackets */

#define D_COMP_OPT_IGN_CASE	0x01	/* Ignore case */
#define D_COMP_OPT_IGN_HZ	0x02	/* Ignore Hankaku/Zenkaku */
#define D_COMP_FUN_LIKE		0		/* LIKE */
#define D_COMP_FUN_IGNORE	0x01	/* Ignore case */
#define D_COMP_FUN_INSTR	0x00	/* INSTR */
#define D_COMP_FUN_IN		0x08	/* IN */
#define D_COMP_FUN_REVERCE	0x02
#define D_COMP_OPT_NEW_LEX	0x04
#define D_COMP_OPT_NOT_SET	0x8000

/* ２６ 判定関数をオプティマイズしない */
#define D_NOPTIMIZE_IIF		0x01	/* IIF()	*/
#define D_NOPTIMIZE_NVAL	0x02	/* NVAL()	*/
#define D_NOPTIMIZE_NULLIF	0x04	/* NULLIF()	*/
#define D_NOPTIMIZE_NSVAL	0x08	/* NSVAL()	*/
#define D_NOPTIMIZE_NDEF	0x10	/* NDEF()	*/
#define D_NOPTIMIZE_AND		0x20	/* AND()	*/
#define D_NOPTIMIZE_OR		0x40	/* OR()		*/
#define D_NOPTIMIZE_ALL		0x7F

/****************************/
/*	for _get_line_pat()		*/
/****************************/
#define D_LINE_PAT_IGN_CASE	0x0100	/* ignore case */
#define D_LINE_PAT_IGN_HAZE	0x0200	/* ignore Hankaku/Zenkaku */
#define D_LINE_PAT_GLOBAL	0x0400	/* global */
#define D_LINE_PAT_ONLY		0x0800	/* only */
#define D_LINE_PAT_REVERSE	0x1000	/* reverse */
#define D_LINE_PAT_LNGMATCH	0x2000	/* longest match */

/************************/
/*	System Class Name	*/
/************************/
#define D_SYS_CLASS_SYSTEM	"System"
#define D_SYS_CLASS_FILE	"SysFile"
#define D_SYS_CLASS_MATH	"SysMath"

/************************/
/*		SQL				*/
/************************/

#define MAXSQLCMD		0x7fffffff		/* SQLのパラメータ渡し 最大長 */
#define SQLFILE			"sqlcmd.doc"
#define RSLTFILE		"_@@_"			/* 検索結果ファイル省略時名 */
#define D_DOCHOST_FILE	"mydchost"		/* my host ID for DOC_MNG DAEMON */
#define AREA_ID_SIZE	4				/* データ格納エリアID長 */
#define HOST_ID_SIZE	4				/* HOST_ID長 */
/*** make cat(join) condition table ***/
#define SQL_PARMNUM			4			/* SQL コマンドパラメータ数 */ 
#define READ_PARMNUM		2			/* READ コマンドパラメータ数 */ 
#define JNT_TABLE_AREAID	"JOIN"		/* 結合条件ナーブル用検索結果格納エリアID */
#define ITEM_AREAID			"ITEM"		/* 項目の検索結果格納エリアID	*/

#define D_KOUMOKU_SIZE	7				/* kensaku koumoku size */
#define BUNKEN_GR		"DOCMbunkenGR"
#define BUNKEN_SQL		"DOCMbunkenSQL"
#define ESCAPE_CODE		'`'

/************************/
/*		DATE_TYPE		*/
/************************/
#define D_LEN_DATE	14
#define D_UNX_DATE_FORMAT	"%Y/%m/%d %H:%M:%S"
#define D_SQL_DATE_FORMAT	"YYYY/MM/DD HH24:MI:SS"
#define D_NAM_UNX_DATE_FORMAT	"UNIX_DATE_FORMAT"
#define D_NAM_SQL_DATE_FORMAT	"SQL_DATE_FORMAT"

/************************************/
/*	FUNCTION NAME					*/
/************************************/
#define D_FUC_IS		10001
#define D_FUC_MOD		10002
#define D_FUC_TO_NUMBER	10003
#define D_FUC_LIKE		10004
#define D_FUC_MAX		10005
#define D_FUC_MIN		10006
#define D_FUC_ABS		10007
#define D_FUC_LEN		10008
#define D_FUC_LENB		10009
#define D_FUC_INSTR		10010
#define D_FUC_TO		10011
#define D_FUC_REP		10012
#define D_FUC_CONDAS	10013
#define D_FUC_SUBSTR	10014
#define D_FUC_CONCAT	10015
#define D_FUC_GETARGS	10016
#define D_FUC_TRIM		10017
#define D_FUC_STRINGS	10018
#define D_FUC_LEFT		10019
#define D_FUC_RIGHT		10020
#define D_FUC_FOPEN		10021
#define D_FUC_FCLOSE	10022
#define D_FUC_FGETLINE	10023
#define D_FUC_FPUTLINE	10024
#define D_FUC_FELREAD1	10025
#define D_FUC_FELWRITE	10026
#define D_FUC_UNLINK	10027
#define D_FUC_POPEN		10028
#define D_FUC_PCLOSE	10029
#define D_FUC_GETLINE	10030
#define D_FUC_PUTLINE	10031
#define D_FUC_ELREAD1	10032
#define D_FUC_ELWRITE	10033
#define D_FUC_EDIT		10034
#define D_FUC_ILIKE		10035
#define D_FUC_INISTR	10036
#define D_FUC_INRSTR	10037
#define D_FUC_INIRSTR	10038
#define D_FUC_CHR		10039
#define D_FUC_SKIP_OPT	10040
#define D_FUC_ASC		10041
#define D_FUC_TO_BULK	10042
#define D_FUC_TO_BULKS	10043
#define D_FUC_REPLIKE	10044
#define D_FUC_SHSBS		10045
#define D_FUC_OPENDIR	10046
#define D_FUC_READDIR	10047
#define D_FUC_CLOSEDIR	10048
#define D_FUC_STAT		10049
#define D_FUC_GETWORD	10050
#define D_FUC_EVAL		10051
#define D_FUC_NVAL		10052
#define D_FUC_NDEF		10053
#define D_FUC_DOL		10054
#define D_FUC_IGE		10055
#define D_FUC_PAS		10056
#define D_FUC_TO_FUNC	10057
#define D_FUC_SET_ARRAY	10058
#define D_FUC_COUNT		10059
#define D_FUC_LIST		10060
#define D_FUC_SET_LIST	10061
#define D_FUC_FIRST		10062
#define D_FUC_REST		10063
#define D_FUC_CONS		10064
#define D_FUC_LIST_REF	10065
#define D_FUC_INDEX		10066
#define D_FUC_ARRAY_CPY	10067
#define D_FUC_ARRAY_CLR	10068
#define D_FUC_ARRAY_CMP	10069
#define D_FUC_ARRAY_BXP	10070
#define D_FUC_SQRT		10071
#define D_FUC_SIN		10072
#define D_FUC_COS		10073
#define D_FUC_TAN		10074
#define D_FUC_ATAN		10075
#define D_FUC_LOG		10076
#define D_FUC_LOG10		10077
#define D_FUC_EXP		10078
#define D_FUC_POWER		10079
#define D_FUC_RAND1		10080
#define D_FUC_SRAND1	10081
#define D_FUC_CBRT		10082
#define D_FUC_SINH		10083
#define D_FUC_COSH		10084
#define D_FUC_TANH		10085
#define D_FUC_ATANH		10086
#define D_FUC_RINT		10087
#define D_FUC_FLOOR		10088
#define D_FUC_CEIL		10089
#define D_FUC_SUBSTRB	10091
#define D_FUC_LEFTB		10092
#define D_FUC_RIGHTB	10093
#define D_FUC_REGEX		10094
#define D_FUC_SORT		10095
#define D_FUC_IREGEX	10096
#define D_FUC_FPSTAT	10097
#define D_FUC_FELWRITE1	10098
#define D_FUC_ELWRITE1	10099
#define D_FUC_INLIKE	10100
#define D_FUC_SHELL		10101
#define D_FUC_SYSLOG	10102
#define D_FUC_LOGOUT	10103
#define D_FUC_NOFREE	10104
#define D_FUC_SHUTCTL	10105
#define D_FUC_EXIT		10106
#define D_FUC_SETENV	10107
#define D_FUC_UNSETENV	10108
#define D_FUC_PUTENV	10109
#define D_FUC_GETENV	10110
#define D_FUC_GETTIME	10111
#define D_FUC_GETLOGPARM	10112
#define D_FUC_SETLOGPARM	10113
#define D_FUC_RESLOGPARM	10114
#define D_FUC_GETMEMUSED	10115
#define D_FUC_LPRINT	10116
#define D_FUC_PRINT		10117
#define D_FUC_ECHO		10118
#define D_FUC_ARRAY_MAP	10119
#define D_FUC_TIMES		10120
#define D_FUC_XHASH		10121
#define D_FUC_ROUND		10122
#define D_FUC_NEW		10123
#define D_FUC_GETVAL	10124
#define D_FUC_ASCB		10125
#define D_FUC_IN		10126
#define D_FUC_IIN		10127
#define D_FUC_DECODE	10128
#define D_FUC_TO_DATE	10129
#define D_FUC_TO_CHAR	10130
#define D_FUC_CCHAR		10131
#define D_FUC_CINT		10132
#define D_FUC_CFLOAT	10133
#define D_FUC_CDEC		10134
#define D_FUC_CBULK		10135
#define D_FUC_CDATE		10136
#define D_FUC_CVARIANT	10137
#define D_FUC_DATE_ADD	10141
#define D_FUC_ADD_MONTHS	10142
#define D_FUC_DATE_DIFF	10143
#define D_FUC_LAST_DAY	10144
#define D_FUC_SET_DATE_PART	10145
#define D_FUC_RPAD		10151
#define D_FUC_LPAD		10152
#define D_FUC_RPADB		10153
#define D_FUC_LPADB		10154
#define D_FUC_STR_ADD	10155
#define D_FUC_STR_EXP	10156
#define D_FUC_STR_CONV	10157
#define D_FUC_IIF		10158
#define D_FUC_NSVAL		10159
#define D_FUC_SET_STRUCT	10160
#define D_FUC_PRINTF	10161
#define D_FUC_FPRINTF	10162
#define D_FUC_EEDIT		10163
#define D_FUC_SPLIT		10164
#define D_FUC_ECMD		10165
#define D_FUC_ADD_TO_DATE	10166
#define D_FUC_RANGE		10167
#define D_FUC_LENW		10168
#define D_FUC_REDIRECT	10169
#define D_FUC_SUM		10170
#define D_FUC_AVG		10171
#define D_FUC_ASIN		10172
#define D_FUC_ACOS		10173
#define D_FUC_ATAN2		10174
#define D_FUC_DEC_PRE	10175
#define D_FUC_GETCHAR	10176
#define D_FUC_PUTCHAR	10177
#define D_FUC_FPRINT	10178
#define D_FUC_SPRINT	10179
#define D_FUC_GETC		10180
#define D_FUC_PUTC		10181
#define D_FUC_INREGEX	10182
#define D_FUC_REPREGEX	10183
#define D_FUC_EQ		10184
#define D_FUC_AND		10185
#define D_FUC_OR		10186
#define D_FUC_REPLACE	10187
#define D_FUC_REPCHAR	10188
#define D_FUC_REPSTRS	10189
#define D_FUC_CHANNEL	10201
#define D_FUC_MESSAGE	10202

/************************************/
/*	EXTERNAL VARIABLE NAME			*/
/************************************/
#define D_EXV_ERROR		1
#define D_EXV_ERRMSG	2
#define D_EXV_ERRNO		3
#define D_EXV_STRERROR	4
#define D_EXV_TUPLE		5
#define D_EXV_COLUMN	6
#define D_EXV_USERID	7
#define D_EXV_DATE		8
#define D_EXV_TIME		9
#define D_EXV_DATETIME	10
#define D_EXV_HID		11
#define D_EXV_EXCEPTION	12
#define D_EXV_USERINF	13
#define D_EXV_VERSION	14
#define D_EXV_MAKEDATE	15
#define D_EXV_STDIN		16
#define D_EXV_STDOUT	17
#define D_EXV_STDERR	18
#define D_EXV_SCRIPTNAME 19
#define D_EXV_CHAR		20
#define D_EXV_BINARY	21
#define D_EXV_FLOAT		22
#define D_EXV_DECIMAL	23
#define D_EXV_BULK		24
#define D_EXV_DATETYPE	25
#define D_EXV_VARIANT	26
#define D_EXV_INTEGER	27
#define D_EXV_LONG		27
#define D_EXV_DOUBLE	28
#define D_EXV_NULL		29
#define D_EXV_PI		30
#define D_EXV_PROCNAME	31
#define D_EXV_SCRIPTLINE 32
#define D_EXV_M_E		33
#define D_EXV_SYSDATE	34
#define D_EXV_PI2		35
#define D_EXV_M_E2		36
#define D_EXV_SYSCODE	37	/* 0 */
#define D_EXV_EUC		38	/* 1 */
#define D_EXV_SJIS		39	/* 2 */
#define D_EXV_JIS		40	/* 3 */
#define D_EXV_EBCDIC	41	/* 4 */
#define D_EXV_UTF8		42	/* 5 */
#define D_EXV_UNICODE	43	/* 6 */
#define D_EXV_EBCDIK	44	/* 8 */
#define D_EXV_NARROW	45	/* 0x101 半角 */
#define D_EXV_WIDE		46	/* 0x102 全角 */
#define D_EXV_CHAR_MIN	47
#define D_EXV_CHAR_MAX	48
#define D_EXV_UCHAR_MAX	49
#define D_EXV_SHORT_MIN	50
#define D_EXV_SHORT_MAX	51
#define D_EXV_USHORT_MAX	52
#define D_EXV_INT_MIN	53
#define D_EXV_INT_MAX	54
#define D_EXV_UINT_MAX	55
#define D_EXV_LONG_MIN	56
#define D_EXV_LONG_MAX	57
#define D_EXV_ULONG_MAX	58
#define D_EXV_CODE_TYPE	59
#define D_EXV_UINT		60
#define D_EXV_ULONG		60
#define D_EXV_EOF		61
#define D_EXV_IN_ERROR	62

/********************************/
/*	IMEDIATE OPERATOR			*/
/********************************/
#define D_IMD_LPAR		1	/* ( */
#define D_IMD_RPAR		2	/* ) */
#define D_IMD_LARR		3	/* [ */
#define D_IMD_RARR		4	/* ] */
#define D_IMD_FUNNC		5	/* func( */
#define D_IMD_PP		14	/* ++ */
#define D_IMD_MM		15	/* -- */
#define D_IMD_NN		16	/* !! */
#define D_IMD_RR		17	/* ~~ */
#define D_IMD_NOT		18	/* ! */
#define D_IMD_REV		19	/* ~ */
#define D_IMD_CAST		20	/* (x) */
#define D_IMD_MUL		21	/* * */
#define D_IMD_DEV		22	/* / */
#define D_IMD_MOD		23	/* %,MOD */
#define D_IMD_PLUS		24	/* + */
#define D_IMD_MINUS		25	/* - */
#define D_IMD_LSHIFT	26	/* << */
#define D_IMD_RSHIFT	27	/* >> */
#define D_IMD_ABS		28	/* ABS */
#define D_IMD_LT		31	/* < */
#define D_IMD_GT		32	/* > */
#define D_IMD_LE		33	/* <= */
#define D_IMD_GE		34	/* >= */
#define D_IMD_EQ		35	/* == */
#define D_IMD_NE		36	/* != */
#define D_IMD_LIKE		37	/* LIKE */
#define D_IMD_MAX		38	/* MAX */
#define D_IMD_MIN		39	/* MIN */
#define D_IMD_AND		41	/* & */
#define D_IMD_XOR		42	/* ^ */
#define D_IMD_RUSHIFT	48	/* >>> */
#define D_IMD_OR		43	/* | */
#define D_IMD_LAND		51	/* && */
#define D_IMD_LOR		52	/* || */
#define D_IMD_QUES		59	/* ? */
#define D_IMD_COLN		60	/* : */
#define D_IMD_STRING	61	/* String */
#define D_IMD_STR_MOD	61	/* MOD */
#define D_IMD_STR_IEQ	61	/* iEQ */
#define D_IMD_STR_INE	61	/* iNE */
#define D_IMD_AND_EQ	71	/* &= */
#define D_IMD_XOR_EQ	72	/* ^= */
#define D_IMD_OR_EQ		73	/* |= */
#define D_IMD_MUL_EQ	81	/* *= */
#define D_IMD_DEV_EQ	82	/* /= */
#define D_IMD_MOD_EQ	83	/* %=,MOD= */
#define D_IMD_PLS_EQ	84	/* += */
#define D_IMD_MNS_EQ	85	/* -= */
#define D_IMD_LSH_EQ	86	/* <<= */
#define D_IMD_RSH_EQ	87	/* >>= */
#define D_IMD_CAT_EQ	88	/* &+= */
#define D_IMD_ASIGN		90	/* = */
#define D_IMD_PUSH1		91	/* PUSH */
#define D_IMD_PUSH2		92	/* PUSH */
#define D_IMD_RANGE		95	/* .. */
#define D_IMD_PNAME		96	/* <== */
#define D_IMD_NAMED		97	/* ==> */
#define D_IMD_CAM		98	/* , */
#define D_IMD_END		99	/* ; */
#define D_IMD_CLASS		101	/* CLASS */
#define D_IMD_PROC		101	/* PROC */

#define LEX_LOG_GROUP	0x00000100

#define LVL_GXCOMPL	150
#define LVL_GXEXOBJ	160
#define LVL_XML	170

/* スクリプト/入力/出力の日本語コード */
#define D_CODE_DFLT_SJIS	CD_DFLT_SJIS	/* S-JIS */
	/* スクリプト */
#define D_CODE_SCRIPT_MASK	CD_SCRIPT_MASK	/* MASK */
#define D_CODE_SCRIPT_SJIS	CD_SCRIPT_SJIS	/* S-JIS */
#define D_CODE_SCRIPT_UTF8	CD_SCRIPT_UTF8	/* UTF-8 */
	/* 入力データ */
#define D_CODE_INPUT_MASK	CD_INPUT_MASK	/* MASK */
#define D_CODE_INPUT_SJIS	CD_INPUT_SJIS	/* SJIS */
#define D_CODE_INPUT_UTF8	CD_INPUT_UTF8	/* UTF-8 */
	/* 出力データ */
#define D_CODE_OUTPUT_MASK	CD_OUTPUT_MASK	/* MASK */
#define D_CODE_OUTPUT_SJIS	CD_OUTPUT_SJIS	/* SJIS */
#define D_CODE_OUTPUT_UTF8	CD_OUTPUT_UTF8	/* UTF-8 */

#define FIL_MAX_OBJ		1000
#define FIL_MAX_DA		400
#define FIL_MAX_TREE	1000
#define FIL_MAX_NEST	400

#define ERROR_MAX_OBJ		-215249901
#define ERROR_MAX_DA		-215249902
#define ERROR_MAX_TREE		-215249903
#define ERROR_MAX_NEST		-215249904
#define ERROR_MAX_STACK		-215249905
#define ERROR_MIN_STACK		-215249906

#endif	/* _CLCONST_H */
