Index: BasicCompiler64/Compile_Calc.cpp
===================================================================
--- BasicCompiler64/Compile_Calc.cpp	(revision 52)
+++ BasicCompiler64/Compile_Calc.cpp	(revision 55)
@@ -11,9 +11,9 @@
 		SetBooleanVariable(CalcType,pRelativeVar);
 	}
-	if(VarType==DEF_CHAR||VarType==DEF_BYTE){
+	else if(VarType==DEF_SBYTE||VarType==DEF_BYTE || (isUnicode==false&&VarType==DEF_CHAR)){
 		//8ビット変数へalレジスタの内容を格納する
 		SetWholeVariable(sizeof(char),CalcType,pRelativeVar);
 	}
-	else if(VarType==DEF_INTEGER||VarType==DEF_WORD){
+	else if(VarType==DEF_INTEGER||VarType==DEF_WORD || (isUnicode&&VarType==DEF_CHAR)){
 		//16ビット変数へaxレジスタの内容を格納する
 		SetWholeVariable(sizeof(short),CalcType,pRelativeVar);
@@ -34,4 +34,7 @@
 		//Single型変数へスタックの内容を格納する
 		SetSingleVariable(CalcType,pRelativeVar);
+	}
+	else{
+		SetError(300,NULL,cp);
 	}
 }
Index: BasicCompiler64/Compile_Var.cpp
===================================================================
--- BasicCompiler64/Compile_Var.cpp	(revision 52)
+++ BasicCompiler64/Compile_Var.cpp	(revision 55)
@@ -909,7 +909,7 @@
 	else if(type==DEF_LONG||type==DEF_DWORD)
 		*(DWORD *)(initGlobalBuf+offset)=(DWORD)i64data;
-	else if(type==DEF_INTEGER||type==DEF_WORD)
+	else if(type==DEF_INTEGER||type==DEF_WORD || (isUnicode&&type==DEF_CHAR))
 		*(WORD *)(initGlobalBuf+offset)=(WORD)i64data;
-	else if(type==DEF_CHAR||type==DEF_BYTE||type==DEF_BOOLEAN)
+	else if(type==DEF_SBYTE||type==DEF_BYTE||type==DEF_BOOLEAN || (isUnicode==false&&type==DEF_CHAR))
 		*(BYTE *)(initGlobalBuf+offset)=(BYTE)i64data;
 
@@ -1079,5 +1079,5 @@
 		obp+=sizeof(long)+sizeof(long);
 	}
-	else if(type==DEF_INTEGER||type==DEF_WORD){
+	else if(type==DEF_INTEGER||type==DEF_WORD || (isUnicode&&type==DEF_CHAR)){
 		//mov word ptr[rsp+offset],value
 		op_mov_MV(sizeof(short),REG_RSP,offset,USE_OFFSET,(int)i64data);
@@ -1086,5 +1086,5 @@
 		obp+=sizeof(long)+sizeof(short);
 	}
-	else if(type==DEF_CHAR||type==DEF_BYTE||type==DEF_BOOLEAN){
+	else if(type==DEF_SBYTE||type==DEF_BYTE||type==DEF_BOOLEAN || (isUnicode==false&&type==DEF_CHAR)){
 		//mov byte ptr[rsp+offset],value
 		op_mov_MV(sizeof(char),REG_RSP,offset,USE_OFFSET,(int)i64data);
Index: BasicCompiler64/NumOpe_TypeOperation.cpp
===================================================================
--- BasicCompiler64/NumOpe_TypeOperation.cpp	(revision 52)
+++ BasicCompiler64/NumOpe_TypeOperation.cpp	(revision 55)
@@ -10,5 +10,5 @@
 		//and reg,00000000FFFFFFFFh
 	}
-	else if(type==DEF_INTEGER){
+	else if(type==DEF_INTEGER || (isUnicode&&type==DEF_CHAR)){
 		//movsx reg64,reg16
 		op_movsx64_FromReg16(reg,reg);
@@ -18,5 +18,5 @@
 		op_and64_value(reg,(int)0xFFFF);
 	}
-	else if(type==DEF_CHAR){
+	else if(type==DEF_SBYTE || (isUnicode==false&&type==DEF_CHAR)){
 		//movsx reg64,reg8
 		op_movsx64_FromReg8(reg,reg);
@@ -28,5 +28,5 @@
 }
 void ExtendTypeTo32(int type,int reg){
-	if(type==DEF_INTEGER){
+	if(type==DEF_INTEGER || (isUnicode&&type==DEF_CHAR)){
 		//movsx reg32,reg16
 		op_movsx32_FromReg16(reg,reg);
@@ -36,5 +36,5 @@
 		op_and32_value(reg,(int)0xFFFF);
 	}
-	else if(type==DEF_CHAR){
+	else if(type==DEF_SBYTE || (isUnicode==false&&type==DEF_CHAR)){
 		//movsx reg32,reg8
 		op_movsx32_FromReg8(reg,reg);
@@ -46,5 +46,5 @@
 }
 void ExtendTypeTo16(int type,int reg){
-	if(type==DEF_CHAR){
+	if(type==DEF_SBYTE || (isUnicode==false&&type==DEF_CHAR)){
 		//movsx reg16,reg8
 		op_movsx16_FromReg8(reg,reg);
Index: BasicCompiler64/varlist.cpp
===================================================================
--- BasicCompiler64/varlist.cpp	(revision 52)
+++ BasicCompiler64/varlist.cpp	(revision 55)
@@ -104,5 +104,5 @@
 			else sprintf(lptv->item.pszText,"%s %s",VarName,STRING_CANNOTACCESS);
 		}
-		else if(type==DEF_INTEGER){
+		else if(type==DEF_INTEGER || (isUnicode&&type==DEF_CHAR)){
 			if(ReadProcessMemory(hDebugProcess,(void *)offset,&wData,sizeof(WORD),&stAccBytes)){
 				sprintf(lptv->item.pszText,"%s %d(&H%X)",VarName,(short)wData,(short)wData);
@@ -116,5 +116,5 @@
 			else sprintf(lptv->item.pszText,"%s %s",VarName,STRING_CANNOTACCESS);
 		}
-		else if(type==DEF_CHAR){
+		else if(type==DEF_SBYTE || (isUnicode==false&&type==DEF_CHAR)){
 			if(ReadProcessMemory(hDebugProcess,(void *)offset,&byteData,sizeof(BYTE),&stAccBytes)){
 				temporary[0]=byteData;
