//	ＡＩＧライブラリ　式評価/変数処理関数
//			エラーコード＆定数
//		Copyright (C) 1994-95,98 by AIG-SOFT

#ifndef	__AIG_VSERR__
#define	__AIG_VSERR__	1
#endif

#include "aerr.h"

// var.h/vsiki.h双方で使うのでここで定義する
/* 変数の状態と型 */
#define	VKAKU	BIT7		/* 0=確定 , 1=未確定 */
#define	VDAI	BIT6		/* 0=再代入可 , 1=不可 */
#define	VLABEL	BIT5		/* 1=ラベル,0=変数 */
#define	VTYPE	(BIT4|BIT0123)	/* 変数型（３２種類）*/
#define	V_INT	0		/* 0=整数数値（すべての演算可能）*/
#define	V_FLOAT	1		/* 1=単精度実数 */
				/* 後はユーザーが自由に定義してよい */

/* エラーコード */
#define	VOK		0	/* 正常終了 */

/* 式系のエラー */
#define	VSNONE		1	/* 数値/変数がない */
#define	VSDBL		2	/* DouBLe 数値/変数が２つ続いている */
#define	VSOEN		3	/* Only Enzan 演算子のみ */
#define	VSILL		4	/* ILLegal 式がおかしい */
#define	VSCPXS		5	/* ComPleX Suuti 式が複雑すぎる（数値/変数） */
#define	VSCPXE		6	/* ComPleX Enzan 式が複雑すぎる（演算子） */
#define	VSCPXC		7	/* ComPlex C 式が複雑すぎる（括弧） */
#define	VSCNONE		8	/* (がない */
#define	VSENONE		9	/* (の前に演算子がない */
#define	VSNNONE		10	/* Naka NONE ()内がない */
#define	VSCILL		11	/* ()内の式がおかしい */
#define	VSCNENG		12	/* Not Enough )が足りない */
#define	VSNUMST		13	/* Num STore 数値に代入しようとした */
#define	VSCHERR		14	/* 文字コードが'で括られていない */
// 15〜19予約(ASKDen)
#define	VS0DIV		20	/* ０で除算した */
#define	VSOVER		21	// オーバーフロー
#define	VSUNDER		22	// アンダーフロー
#define	VSARG		23	// 引数がおかしい

/* 変数系のエラー */
#define	VARNDEF		50	/* No Define 変数が未定義 */
#define	VARNST		51	/* No STore  未確定変数への代入がない */
#define	VAROST		52	/* Only STore 未確定変数には代入しか出来ない */
#define	VARLONG		53	/* 変数名が長すぎ */
#define	VAROVER		54	/* 変数はこれ以上定義出来ない */
#define	VARNMEM		55	/* 変数処理用メモリーが足りない */
#define	VARNKAKU	56	/* No KAKUtei 変数が未確定 */
#define	VARDBL		57	/* 変数が２重定義された */
#define	VARILL		58	/* 変数名が異常 */
#define VARCSTA		59	/* Can't STore Again 再代入不可変数に代入しようとした */
#define	VARTYPE		60	/* 変数の型が違う */
#define	VARNAC		61	/* 未確定変数にアクセスした */
#define	VARNKAKUR	62	/* No KAKUtei Remain 未確定変数が残っている */
#define VARAROVER	63	/* 変数エリアを越えている */
#define	VARCCINT	64	// Can't Convert INTeger 整数化出来ない

/* VarDefine用特別エラーコード(<0) */
#define	VARLONG0	(-VARLONG)	/* 変数名が長すぎ */
#define	VAROVER0	(-VAROVER)	/* 変数はこれ以上定義出来ない */
#define	VARDBL0		(-VARDBL)	/* 変数が２重定義された */
#define	VARCSTA0	(-VARCSTA)	/* 再代入不可変数に代入しようとした */

// エラーテーブルの外部参照宣言
#ifndef DEFERR
extern	ERRMES ERRvar[];	 // 変数系のエラー
extern	ERRMES ERRvsiki[];	 // 式評価系のエラー
#endif
