Index: trunk/ab5.0/abdev/BasicCompiler32/BasicCompiler.vcproj
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 465)
@@ -1266,4 +1266,8 @@
 					>
 				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\src\Messenger.cpp"
+					>
+				</File>
 				<Filter
 					Name="Langauge Classes"
@@ -1471,4 +1475,8 @@
 					>
 				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\Messenger.h"
+					>
+				</File>
 				<Filter
 					Name="Language Classes"
Index: trunk/ab5.0/abdev/BasicCompiler32/CParameter.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/CParameter.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/CParameter.cpp	(revision 465)
@@ -239,5 +239,5 @@
 				char temp2[255];
 				sprintf(temp2,"%s関数の第%dパラメータ",procName.c_str(),i2+1);
-				SetError(19,temp2,cp);
+				compiler.errorMessenger.Output(19,temp2,cp);
 				continue;
 			}
@@ -306,5 +306,5 @@
 			}
 			else{
-				SetError(300,NULL,cp);
+				compiler.errorMessenger.Output(300,NULL,cp);
 			}
 		}
@@ -368,10 +368,10 @@
 									if( dummyType.IsObject() ){
 										if( !dummyType.GetClass().IsEqualsOrSubClass( &varType.GetClass() ) ){
-											SetError(11,Parms[i2],cp);
+											compiler.errorMessenger.Output(11,Parms[i2],cp);
 										}
 									}
 									else if( dummyType.IsStruct() ){
 										if( !dummyType.GetClass().IsEquals( &varType.GetClass() ) ){
-											SetError(11,Parms[i2],cp);
+											compiler.errorMessenger.Output(11,Parms[i2],cp);
 										}
 									}
@@ -382,5 +382,5 @@
 								}
 								else{
-									SetError(11,Parms[i2],cp);
+									compiler.errorMessenger.Output(11,Parms[i2],cp);
 								}
 							}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc.cpp	(revision 465)
@@ -130,5 +130,5 @@
 		compiler.codeGenerator.op_fstp_basereg( DEF_DOUBLE, REG_ESP );
 	}
-	else SetError(9,NULL,cp);
+	else compiler.errorMessenger.Output(9,NULL,cp);
 }
 void ChangeTypeToSingle(int OldType){
@@ -198,5 +198,5 @@
 		compiler.codeGenerator.op_fstp_basereg( DEF_SINGLE, REG_ESP );
 	}
-	else SetError(9,NULL,cp);
+	else compiler.errorMessenger.Output(9,NULL,cp);
 }
 
@@ -254,5 +254,5 @@
 		}
 	}
-	else SetError(9,NULL,cp);
+	else compiler.errorMessenger.Output(9,NULL,cp);
 }
 void ChangeTypeToLong(int OldType){
@@ -393,5 +393,5 @@
 	}
 	else{
-		SetError(300,NULL,cp);
+		compiler.errorMessenger.Output(300,NULL,cp);
 	}
 }
@@ -411,5 +411,5 @@
 			//ダブルクォートは不正なのでエラー扱い
 			variable[i]=0;
-			SetError(3,variable,cp);
+			compiler.errorMessenger.Output(3,variable,cp);
 			return;
 		}
@@ -458,5 +458,5 @@
 			if(GetVarType(variable,Type(),0)){
 				//変数リストに該当したとき
-				SetError(1,NULL,cp);
+				compiler.errorMessenger.Output(1,NULL,cp);
 			}
 			else{
@@ -465,9 +465,9 @@
 				{
 					//定数リストに該当したとき
-					SetError(1,NULL,cp);
+					compiler.errorMessenger.Output(1,NULL,cp);
 				}
 				else{
 					//変数リスト、定数リストに該当しないとき
-					SetError(3,variable,cp);
+					compiler.errorMessenger.Output(3,variable,cp);
 				}
 			}
@@ -491,5 +491,5 @@
 
 	if(Command[i+1]=='\0'){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return;
 	}
@@ -531,5 +531,5 @@
 
 	if( lstrcmpi( variable, "This" ) == 0 ){
-		SetError(133,NULL,cp);
+		compiler.errorMessenger.Output(133,NULL,cp);
 		return;
 	}
@@ -593,10 +593,10 @@
 	if( !TermOpeOnlyVariable( variable, varType, VarRelativeVar, true ) )
 	{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 		return;
 	}
 
 	if(varType.GetBasicType()&FLAG_PTR){
-		SetError(14,variable,cp);
+		compiler.errorMessenger.Output(14,variable,cp);
 		return;
 	}
@@ -614,5 +614,5 @@
 		compiler.GetObjectModule().meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
 		if( userProcs.size() != 1 ){
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 			return;
 		}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp	(revision 465)
@@ -21,5 +21,5 @@
 	}
 	else if(pRelativeVar->dwKind==VAR_REFGLOBAL){
-		SetError(300,NULL,cp);
+		compiler.errorMessenger.Output(300,NULL,cp);
 	}
 	else if(pRelativeVar->dwKind==VAR_LOCAL){
@@ -68,5 +68,5 @@
 		//64ビットの場合はedx:eaxにロード
 		if(reg!=REG_EAX){
-			SetError(300,NULL,cp);
+			compiler.errorMessenger.Output(300,NULL,cp);
 			return;
 		}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_CallProc.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 465)
@@ -135,5 +135,5 @@
 					}
 					else{
-						SetError(300,NULL,cp);
+						compiler.errorMessenger.Output(300,NULL,cp);
 					}
 				}
@@ -163,5 +163,5 @@
 			pMethod = pobj_c->GetStaticMethods().GetMethodPtr( pUserProc );
 			if( !pMethod ){
-				SetError(300,NULL,cp);
+				compiler.errorMessenger.Output(300,NULL,cp);
 				return false;
 			}
@@ -181,5 +181,5 @@
 				//同一クラスオブジェクトの場合はプライベートアクセスを容認する
 				if( pMethod->IsNoneAccess() ){
-					SetError(109,pUserProc->GetName(),cp);
+					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
@@ -188,9 +188,9 @@
 				if( pMethod->IsPrivate()
 					|| pMethod->IsNoneAccess() ){
-					SetError(109,pUserProc->GetName(),cp);
+					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
 				if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){
-					SetError(110,pUserProc->GetName(),cp);
+					compiler.errorMessenger.Output(110,pUserProc->GetName(),cp);
 					return false;
 				}
@@ -200,5 +200,5 @@
 			//クラス内部からの呼び出し（継承によるACCESS_NONのみをエラーとする）
 			if( pMethod->IsNoneAccess() ){
-				SetError(109,pUserProc->GetName(),cp);
+				compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 				return false;
 			}
@@ -296,5 +296,5 @@
 				if( !resultType.IsObject() )
 				{
-					SetError();
+					compiler.errorMessenger.OutputFatalError();
 				}
 
@@ -344,5 +344,5 @@
 			if( vtblMasterListIndex != 0 )
 			{
-				SetError();
+				compiler.errorMessenger.OutputFatalError();
 			}
 		}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Func.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Func.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Func.cpp	(revision 465)
@@ -263,5 +263,5 @@
 					|| type.IsObjectPtr() && referenceKind == RefPointer ) )
 				{
-					SetError(104,ObjectName,cp);
+					compiler.errorMessenger.Output(104,ObjectName,cp);
 				}
 
@@ -305,5 +305,5 @@
 			if( vtblMasterListIndex != 0 )
 			{
-				SetError();
+				compiler.errorMessenger.OutputFatalError();
 			}
 		}
@@ -400,5 +400,5 @@
 		{
 			extern int cp;
-			SetError(1,NULL,cp);
+			compiler.errorMessenger.Output(1,NULL,cp);
 			return;
 		}
@@ -460,5 +460,5 @@
 		GetOverloadSubHash( name, subs );
 		if( subs.size() == 0 ){
-			SetError(27,name,cp);
+			compiler.errorMessenger.Output(27,name,cp);
 			return;
 		}
@@ -480,5 +480,5 @@
 					) )
 				{
-					SetError(67, name, cp );
+					compiler.errorMessenger.Output(67, name, cp );
 				}
 			}
@@ -491,5 +491,5 @@
 					) )
 				{
-					SetError(66, name, cp );
+					compiler.errorMessenger.Output(66, name, cp );
 				}
 			}
@@ -497,5 +497,5 @@
 
 		if(!pUserProc){
-			SetError(27,name,cp);
+			compiler.errorMessenger.Output(27,name,cp);
 			return;
 		}
@@ -504,5 +504,5 @@
 		pUserProc=GetSubHash(name);
 		if(!pUserProc){
-			SetError(27,name,cp);
+			compiler.errorMessenger.Output(27,name,cp);
 			return;
 		}
@@ -531,5 +531,5 @@
 	Type tempType;
 	if( !compiler.StringToType( typeName, tempType ) ){
-		SetError(3,typeName,cp);
+		compiler.errorMessenger.Output(3,typeName,cp);
 		return;
 	}
@@ -597,5 +597,5 @@
 	}
 	else{
-		SetError(134,NULL,cp );
+		compiler.errorMessenger.Output(134,NULL,cp );
 	}
 }
@@ -680,5 +680,5 @@
 	}
 	if(!tempType.IsWhole()){
-		SetError(11,Parameter,cp);
+		compiler.errorMessenger.Output(11,Parameter,cp);
 		return;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Object.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Object.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Object.cpp	(revision 465)
@@ -22,5 +22,5 @@
 
 	if(bSomeObjects){
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 
 		//push ebx
@@ -64,5 +64,5 @@
 		}
 		else{
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 
@@ -110,5 +110,5 @@
 	if(pClass->IsAbstract()){
 		//抽象クラスだったとき
-		SetError(125,pClass->GetName(),cp);
+		compiler.errorMessenger.Output(125,pClass->GetName(),cp);
 	}
 
@@ -119,5 +119,5 @@
 		Type tempType;
 		NumOpe(objectSizeStr,Type(),tempType);
-		if( !tempType.IsWhole() ) SetError(49,NULL,cp);
+		if( !tempType.IsWhole() ) compiler.errorMessenger.Output(49,NULL,cp);
 		ChangeTypeToLong(tempType.GetBasicType());
 
@@ -269,5 +269,5 @@
 		return;
 	}
-	if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) SetError(122,NULL,cp);
+	if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) compiler.errorMessenger.Output(122,NULL,cp);
 
 	//pop eax
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 465)
@@ -197,5 +197,5 @@
 	}
 	else{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 }
@@ -242,10 +242,10 @@
 		{
 			if(pGotoLabelSchedule->GetName().size()>0){
-				SetError(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos());
+				compiler.errorMessenger.Output(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos());
 			}
 			else{
 				char temporary[255];
 				sprintf(temporary,"%d",pGotoLabelSchedule->GetLineNum());
-				SetError(6,temporary,pGotoLabelSchedule->GetSourceCodePos());
+				compiler.errorMessenger.Output(6,temporary,pGotoLabelSchedule->GetSourceCodePos());
 			}
 		}
@@ -273,5 +273,5 @@
 	}
 	else{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 }
@@ -285,5 +285,5 @@
 
 	if( pUserProc->GetLocalVars().size() ){
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 		return;
 	}
@@ -311,5 +311,5 @@
 	{
 		// 既にコード生成が行われている場合はエラー
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 
@@ -531,5 +531,5 @@
 					}
 					if(!(temporary[0]=='('&&temporary[lstrlen(temporary)-1]==')')){
-						SetError(1,NULL,cp);
+						compiler.errorMessenger.Output(1,NULL,cp);
 					}
 					RemoveStringPare(temporary);
@@ -618,5 +618,5 @@
 	//With情報のメモリを解放
 	for(i3=0;i3<WithInfo.num;i3++){
-		SetError(22,"With",WithInfo.pWithCp[i3]);
+		compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i3]);
 		HeapDefaultFree(WithInfo.ppName[i3]);
 	}
@@ -710,5 +710,5 @@
 		else
 		{
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Set_Var.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Set_Var.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Set_Var.cpp	(revision 465)
@@ -50,5 +50,5 @@
 	}
 
-	SetError(1,NULL,cp);
+	compiler.errorMessenger.Output(1,NULL,cp);
 }
 
@@ -155,9 +155,9 @@
 	if(type==DEF_DOUBLE){
 		// TODO: 実装
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 	else if(type==DEF_SINGLE){
 		// TODO: 実装
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 	else if(type==DEF_INT64||type==DEF_QWORD){
@@ -180,5 +180,5 @@
 		if(!IsWholeNumberType(type)){
 			//不正な型の場合
-			SetError(9,NULL,cp);
+			compiler.errorMessenger.Output(9,NULL,cp);
 			return;
 		}
@@ -327,5 +327,5 @@
 	else if(pRelative->dwKind==VAR_REFGLOBAL){
 		// 今は使われていない
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 
 		if(pRelative->bOffsetOffset){
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Statement.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Statement.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Statement.cpp	(revision 465)
@@ -16,5 +16,5 @@
 			//ダブルクォートは不正なのでエラー扱い
 			leftTerm[i]=0;
-			SetError(3,leftTerm,cp);
+			compiler.errorMessenger.Output(3,leftTerm,cp);
 			return;
 		}
@@ -48,5 +48,5 @@
 		(leftTerm[0]==1&&leftTerm[1]==ESC_PSMEM)
 		)){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return;
 	}
@@ -76,5 +76,5 @@
 		if(pUserProc){
 			if( !pUserProc->IsMacro() ){
-				SetError(10,Command,cp);
+				compiler.errorMessenger.Output(10,Command,cp);
 			}
 
@@ -117,5 +117,5 @@
 
 	// どこにも当てはまらなかったため、失敗
-	SetError(1,NULL,cp);
+	compiler.errorMessenger.Output(1,NULL,cp);
 }
 
@@ -126,5 +126,5 @@
 	for(i=0;;i++){
 		if(Parameter[i]=='\0'){
-			SetError(21,NULL,cp);
+			compiler.errorMessenger.Output(21,NULL,cp);
 			return;
 		}
@@ -355,5 +355,5 @@
 	compiler.codeGenerator.ContinueAreaBegin();
 
-	if(!Parameter[0]) SetError(10,"While",cp);
+	if(!Parameter[0]) compiler.errorMessenger.Output(10,"While",cp);
 
 	const PertialSchedule *pWhilePertialSchedule = NULL;
@@ -483,5 +483,5 @@
 	i=GetOneParameter(Parameter,0,temporary);
 	if(!Parameter[i]){
-		SetError(12,"For",cp);
+		compiler.errorMessenger.Output(12,"For",cp);
 		goto ErrorStep;
 	}
@@ -496,5 +496,5 @@
 		}
 		if(temporary[i2]=='\0'){
-			SetError(12,"For",cp);
+			compiler.errorMessenger.Output(12,"For",cp);
 			goto ErrorStep;
 		}
@@ -514,5 +514,5 @@
 	if(Parameter[i]){
 		i=GetOneParameter(Parameter,i,StepNum);
-		if(Parameter[i]) SetError(12,"For",cp);
+		if(Parameter[i]) compiler.errorMessenger.Output(12,"For",cp);
 	}
 	else lstrcpy(StepNum,"1");
@@ -578,5 +578,5 @@
 	if(szNextVariable[0]){
 		if(lstrcmp(szNextVariable,variable)!=0){
-			SetError(55,szNextVariable,cp);
+			compiler.errorMessenger.Output(55,szNextVariable,cp);
 		}
 	}
@@ -608,5 +608,5 @@
 	GetCustomToken( variable, Parameter, i, ESC_IN, true );
 	if(!Parameter[i]){
-		SetError(12,"Foreach",cp);
+		compiler.errorMessenger.Output(12,"Foreach",cp);
 		isError = true;
 		goto ErrorStep;
@@ -667,5 +667,5 @@
 	if(szNextVariable[0]){
 		if(lstrcmp(szNextVariable,variable)!=0){
-			SetError(55,szNextVariable,cp);
+			compiler.errorMessenger.Output(55,szNextVariable,cp);
 		}
 	}
@@ -691,5 +691,5 @@
 	int i,i2,i3;
 
-	if(Parameter[0]) SetError(10,"Do",cp);
+	if(Parameter[0]) compiler.errorMessenger.Output(10,"Do",cp);
 
 	//Continueアドレスのバックアップとセット
@@ -894,5 +894,5 @@
 void OpcodeExitSub(void){
 	if( UserProc::IsGlobalAreaCompiling() ){
-		SetError(12,"Exit Sub/Function",cp);
+		compiler.errorMessenger.Output(12,"Exit Sub/Function",cp);
 		return;
 	}
@@ -942,5 +942,5 @@
 			if(basbuf[i]=='\0'){
 				selectSchedules.pop_back();
-				SetError(22,"Select",cp);
+				compiler.errorMessenger.Output(22,"Select",cp);
 				return;
 			}
@@ -1163,5 +1163,5 @@
 
 	if(selectSchedules.back().typeSize==-1){
-		SetError(30,"Case",cp);
+		compiler.errorMessenger.Output(30,"Case",cp);
 		return;
 	}
@@ -1282,5 +1282,5 @@
 	i=GetOneParameter(Parameter,0,temporary);
 	if(!Parameter[i]){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return;
 	}
@@ -1291,5 +1291,5 @@
 	}
 	if(!resultType.IsWhole()){
-		SetError(11,Parameter,cp);
+		compiler.errorMessenger.Output(11,Parameter,cp);
 		return;
 	}
@@ -1300,5 +1300,5 @@
 	i=GetOneParameter(Parameter,i,temporary);
 	if(Parameter[i]){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/Compile_Var.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/Compile_Var.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/Compile_Var.cpp	(revision 465)
@@ -35,5 +35,5 @@
 	else{
 		//エラー
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return;
 	}
@@ -185,5 +185,5 @@
 	if( !pMember )
 	{
-		if(isErrorEnabled) SetError(103,VarName,cp);
+		if(isErrorEnabled) compiler.errorMessenger.Output(103,VarName,cp);
 		return false;
 	}
@@ -196,5 +196,5 @@
 		//同一クラスオブジェクトの場合はプライベートアクセスを容認する
 		if(pMember->IsNoneAccess()){
-			if(isErrorEnabled) SetError(107,VarName,cp);
+			if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp);
 			return false;
 		}
@@ -203,9 +203,9 @@
 		if((bPrivateAccess==0&&pMember->IsPrivate())||
 			pMember->IsNoneAccess()){
-			if(isErrorEnabled) SetError(107,VarName,cp);
+			if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp);
 			return false;
 		}
 		else if(bPrivateAccess==0&&pMember->IsProtected()){
-			if(isErrorEnabled) SetError(108,VarName,cp);
+			if(isErrorEnabled) compiler.errorMessenger.Output(108,VarName,cp);
 			return false;
 		}
@@ -219,5 +219,5 @@
 		){
 			//Const定義の変数に書き込みアクセスをしようとした場合
-			SetError(61,VarName,cp);
+			compiler.errorMessenger.Output(61,VarName,cp);
 	}
 
@@ -237,5 +237,5 @@
 	else{
 		if(lpPtrOffset[0]){
-			if(isErrorEnabled) SetError(16,member,cp);
+			if(isErrorEnabled) compiler.errorMessenger.Output(16,member,cp);
 			return false;
 		}
@@ -250,5 +250,5 @@
 		//配列オフセット
 		if(!GetArrayOffset(pMember->GetSubscripts(),array,pMember->GetType())){
-			if(isErrorEnabled) SetError(14,member,cp);
+			if(isErrorEnabled) compiler.errorMessenger.Output(14,member,cp);
 			return false;
 		}
@@ -263,5 +263,5 @@
 		if( resultType.IsObject() || resultType.IsStruct() ){
 			if( refType != RefDot ){
-				if(isErrorEnabled) SetError(104,member,cp);
+				if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp);
 				return false;
 			}
@@ -279,5 +279,5 @@
 				if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() )
 					&& refType != RefDot ){
-						if(isErrorEnabled) SetError(104,member,cp);
+						if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp);
 						return false;
 				}
@@ -293,5 +293,5 @@
 				if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() )
 					&& refType != RefPointer ){
-						if(isErrorEnabled) SetError(104,member,cp);
+						if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp);
 						return false;
 				}
@@ -307,5 +307,5 @@
 				//ppObj[n]->member
 				if( refType != RefPointer ){
-					if(isErrorEnabled) SetError(104,member,cp);
+					if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp);
 					return false;
 				}
@@ -321,5 +321,5 @@
 			}
 			else{
-				if(isErrorEnabled) SetError(104,member,cp);
+				if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp);
 				return false;
 			}
@@ -403,5 +403,5 @@
 			else{
 				if(lpPtrOffset[0]){
-					SetError(16,variable,cp);
+					compiler.errorMessenger.Output(16,variable,cp);
 					pRelativeVar->dwKind=NON_VAR;
 					return false;
@@ -485,5 +485,5 @@
 			compiler.pCompilingClass->IsCompilingDestructor() == false
 			){
-				SetError(131, NULL, cp );
+				compiler.errorMessenger.Output(131, NULL, cp );
 		}
 
@@ -577,5 +577,5 @@
 		}
 
-		if(isErrorEnabled) SetError(3,variable,cp);
+		if(isErrorEnabled) compiler.errorMessenger.Output(3,variable,cp);
 		pRelativeVar->dwKind=NON_VAR;
 		return false;
@@ -593,5 +593,5 @@
 		else{
 			if(lpPtrOffset[0]){
-				SetError(16,variable,cp);
+				compiler.errorMessenger.Output(16,variable,cp);
 				pRelativeVar->dwKind=NON_VAR;
 				return false;
@@ -619,9 +619,9 @@
 		if( resultType.IsObject() ){
 			//オブジェクト定数
-			SetError(130, VarName, cp );
+			compiler.errorMessenger.Output(130, VarName, cp );
 		}
 		else{
 			//一般のConst変数
-			SetError(61,VarName,cp);
+			compiler.errorMessenger.Output(61,VarName,cp);
 		}
 	}
@@ -647,5 +647,5 @@
 	if(array[0]){
 		if(!GetArrayOffset(*pSubscripts,array,resultType)){
-			SetError(14,variable,cp);
+			compiler.errorMessenger.Output(14,variable,cp);
 			pRelativeVar->dwKind=NON_VAR;
 			return false;
@@ -656,5 +656,5 @@
 			//実態オブジェクトのメンバを参照（obj.member）
 			if( refType != RefDot ){
-				SetError(104,VarName,cp);
+				compiler.errorMessenger.Output(104,VarName,cp);
 				pRelativeVar->dwKind=NON_VAR;
 				return false;
@@ -671,5 +671,5 @@
 				//pObj[n].member
 				if( refType != RefDot ){
-					SetError(104,VarName,cp);
+					compiler.errorMessenger.Output(104,VarName,cp);
 					pRelativeVar->dwKind=NON_VAR;
 					return false;
@@ -681,5 +681,5 @@
 				//pObj->member
 				if( refType != RefPointer ){
-					SetError(104,VarName,cp);
+					compiler.errorMessenger.Output(104,VarName,cp);
 					pRelativeVar->dwKind=NON_VAR;
 					return false;
@@ -698,5 +698,5 @@
 				//ppObj[n]->member
 				if( refType != RefPointer ){
-					SetError(104,VarName,cp);
+					compiler.errorMessenger.Output(104,VarName,cp);
 					pRelativeVar->dwKind=NON_VAR;
 					return false;
@@ -713,5 +713,5 @@
 			}
 			else{
-				SetError(104,VarName,cp);
+				compiler.errorMessenger.Output(104,VarName,cp);
 				pRelativeVar->dwKind=NON_VAR;
 				return false;
@@ -719,5 +719,5 @@
 		}
 		else{
-			SetError(102,VarName,cp);
+			compiler.errorMessenger.Output(102,VarName,cp);
 			pRelativeVar->dwKind=NON_VAR;
 			return false;
@@ -768,5 +768,5 @@
 				while(1){
 					if( subscripts[0] < i2 ){
-						SetError(41,0,cp);
+						compiler.errorMessenger.Output(41,0,cp);
 						return 0;
 					}
@@ -790,5 +790,5 @@
 			BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){
 				if(InitBuf[i]=='\0'){
-					SetError(41,0,cp);
+					compiler.errorMessenger.Output(41,0,cp);
 					return false;
 				}
@@ -806,5 +806,5 @@
 		}
 
-		SetError(41,0,cp);
+		compiler.errorMessenger.Output(41,0,cp);
 		return false;
 	}
@@ -816,5 +816,5 @@
 
 	if( subscripts.size() > 0 ){
-		SetError(41,0,cp);
+		compiler.errorMessenger.Output(41,0,cp);
 		return false;
 	}
@@ -931,5 +931,5 @@
 				while(1){
 					if( subscripts[0] < i2 ){
-						SetError(41,0,cp);
+						compiler.errorMessenger.Output(41,0,cp);
 						return 0;
 					}
@@ -953,5 +953,5 @@
 			BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){
 				if(InitBuf[i]=='\0'){
-					SetError(41,0,cp);
+					compiler.errorMessenger.Output(41,0,cp);
 					return false;
 				}
@@ -971,5 +971,5 @@
 		}
 
-		SetError(41,0,cp);
+		compiler.errorMessenger.Output(41,0,cp);
 		return false;
 	}
@@ -981,5 +981,5 @@
 
 	if( subscripts.size() > 0 ){
-		SetError(41,0,cp);
+		compiler.errorMessenger.Output(41,0,cp);
 		return false;
 	}
@@ -1105,5 +1105,5 @@
 		if( UserProc::CompilingUserProc().GetLocalVars().DuplicateCheck( Symbol( VarName ) ) ){
 			//２重定義のエラー
-			SetError(15,VarName,cp);
+			compiler.errorMessenger.Output(15,VarName,cp);
 			return;
 		}
@@ -1218,5 +1218,5 @@
 		else{
 			if( subscripts.size() > 1 ){
-				SetError(300,NULL,cp);
+				compiler.errorMessenger.Output(300,NULL,cp);
 			}
 			sprintf( objectSize, "%d", subscripts[0] );
@@ -1230,5 +1230,5 @@
 		GetVarOffset( true, false, VarName, &RelativeVar, Type() );
 		if( RelativeVar.dwKind == VAR_DIRECTMEM ){
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 		SetVariableFromEax( Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr() ), DEF_OBJECT, &RelativeVar );
@@ -1306,5 +1306,5 @@
 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar){
 	if( reg != REG_EAX ){
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 		//TODO: 未完成
 	}
@@ -1315,5 +1315,5 @@
 	const UserProc *pUserProc_AddGlobalRootPtr = GetClassMethod( "_System_CGarbageCollection", "AddGlobalRootPtr" );
 	if( !pUserProc_AddGlobalRootPtr ){
-		SetError(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 );
+		compiler.errorMessenger.Output(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 );
 		return false;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/MakePeHdr.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 465)
@@ -365,5 +365,5 @@
 		// 名前空間が初期化されているかをチェック
 		if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 
@@ -443,5 +443,5 @@
 		//With情報のメモリを解放
 		for(i=0;i<WithInfo.num;i++){
-			SetError(22,"With",WithInfo.pWithCp[i]);
+			compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i]);
 			HeapDefaultFree(WithInfo.ppName[i]);
 		}
@@ -451,5 +451,5 @@
 		// 名前空間が正しく閉じられているかをチェック
 		if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){
-			SetError(63,NULL,-1);
+			compiler.errorMessenger.Output(63,NULL,-1);
 		}
 
@@ -504,8 +504,7 @@
 	}
 
-	extern BOOL bError;
-	if( !bError )
+	if( !compiler.errorMessenger.HasError() )
 	{
-		CompileMessage( "リンク中..." );
+		compiler.messenger.Output( "リンク中..." );
 	}
 
@@ -558,5 +557,5 @@
 
 			if(!hLib){
-				SetError(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());
+				compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());
 			}
 		}
@@ -565,5 +564,5 @@
 			if(!GetProcAddress(hLib,pDllProc->GetAlias().c_str())){
 				FreeLibrary(hLib);
-				SetError(-107,pDllProc->GetAlias(),pDllProc->GetCodePos());
+				compiler.errorMessenger.Output(-107,pDllProc->GetAlias(),pDllProc->GetCodePos());
 			}
 			FreeLibrary(hLib);
@@ -712,5 +711,5 @@
 
 		if( pDllProc->GetDllFileName().size() > 16 ){
-			SetError(7,NULL,cp);
+			compiler.errorMessenger.Output(7,NULL,cp);
 			break;
 		}
@@ -831,12 +830,11 @@
 	CDebugSection *pobj_DebugSection;
 	pobj_DebugSection=new CDebugSection();
-	extern BOOL bError;
-	if( compiler.IsDebug() && bError == 0 )
+	if( compiler.IsDebug() && !compiler.errorMessenger.HasError() )
 	{
-		CompileMessage( "デバッグ情報を生成しています。" );
+		compiler.messenger.Output( "デバッグ情報を生成しています。" );
 
 		pobj_DebugSection->make();
 
-		CompileMessage( "デバッグ情報の生成が完了しました。" );
+		compiler.messenger.Output( "デバッグ情報の生成が完了しました。" );
 	}
 
@@ -1122,6 +1120,8 @@
 
 
-	extern BOOL bError;
-	if(bError) goto EndWriteOpcode;
+	if( compiler.errorMessenger.HasError() )
+	{
+		goto EndWriteOpcode;
+	}
 
 
@@ -1414,5 +1414,5 @@
 	hFile=CreateFile(OutputFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
 	if(hFile==INVALID_HANDLE_VALUE){
-		SetError(53,OutputFileName,-1);
+		compiler.errorMessenger.Output(53,OutputFileName,-1);
 		goto EndWriteOpcode;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp	(revision 465)
@@ -59,5 +59,5 @@
 	}
 	else{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 }
@@ -79,5 +79,5 @@
 void ExtendRegToBigType( int reg, int bigBasicType, int baseBasicType ){
 	if( reg != REG_EAX ){
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 	switch( Type::GetBasicSize( bigBasicType ) ){
@@ -190,5 +190,5 @@
 				// オブジェクトメンバのポインタをeaxにコピー
 				if( !VarToReg( tempRelativeVar, baseType, resultType ) ){
-					SetError(11,termFull,cp);
+					compiler.errorMessenger.Output(11,termFull,cp);
 				}
 
@@ -224,5 +224,5 @@
 			if( !leftType.IsStruct() )
 			{
-				SetError();
+				compiler.errorMessenger.OutputFatalError();
 			}
 
@@ -332,5 +332,5 @@
 	{
 		// 関数ポインタ
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 
 		///////////////////////////////////////////////////////////////////
@@ -342,5 +342,5 @@
 	}
 
-	SetError();
+	compiler.errorMessenger.OutputFatalError();
 
 	return false;
@@ -400,5 +400,5 @@
 			if( isProcedureCallOnly )
 			{
-				SetError(1,NULL,cp);
+				compiler.errorMessenger.Output(1,NULL,cp);
 			}
 			return false;
@@ -432,5 +432,5 @@
 		if( compiler.pCompilingClass == NULL )
 		{
-			SetError(142,NULL,cp);
+			compiler.errorMessenger.Output(142,NULL,cp);
 			return false;
 		}
@@ -465,5 +465,5 @@
 			{
 				//閉じカッコ")"に続く文字がNULLでないとき
-				SetError(42,NULL,cp);
+				compiler.errorMessenger.Output(42,NULL,cp);
 			}
 
@@ -525,5 +525,5 @@
 
 				//閉じカッコ")"に続く文字がNULLでないときはエラーにする
-				if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
+				if(termFull[i2+1+i4+1]!='\0') compiler.errorMessenger.Output(42,NULL,cp);
 
 				//マクロ関数の場合
@@ -629,5 +629,5 @@
 	if( isProcedureCallOnly )
 	{
-		SetError(3, termLeft, cp );
+		compiler.errorMessenger.Output(3, termLeft, cp );
 	}
 
@@ -645,5 +645,5 @@
 		// 変数の場合はeaxに変数ポインタを格納する
 		if( !VarToReg( relativeVar, baseType, resultType ) ){
-			SetError(11,term,cp);
+			compiler.errorMessenger.Output(11,term,cp);
 		}
 	}
@@ -658,5 +658,5 @@
 	if( !isVariable )
 	{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 
@@ -678,5 +678,5 @@
 	if( reg != REG_EAX ){
 		// TODO: 未実装
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 
@@ -708,5 +708,5 @@
 
 	if(expression[0]=='\0'){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		return false;
 	}
@@ -863,5 +863,5 @@
 						else GetCalcName(idCalc,temp2);
 						sprintf(temporary,"Operator %s",temp2);
-						SetError(27,temporary,cp);
+						compiler.errorMessenger.Output(27,temporary,cp);
 						goto error;
 					}
@@ -892,5 +892,5 @@
 					}
 					else{
-						SetError(3, term, cp );
+						compiler.errorMessenger.Output(3, term, cp );
 						goto error;
 					}
@@ -918,5 +918,5 @@
 						// 拡張版リテラル文字列（エスケープシーケンス可能）
 						if(!RemoveStringQuotes(term+2)){
-							SetError(43,NULL,cp);
+							compiler.errorMessenger.Output(43,NULL,cp);
 							goto error;
 						}
@@ -928,5 +928,5 @@
 						// 通常文字列
 						if(!RemoveStringQuotes(term)){
-							SetError(43,NULL,cp);
+							compiler.errorMessenger.Output(43,NULL,cp);
 							goto error;
 						}
@@ -976,5 +976,5 @@
 								}
 							}
-							SetError(38,term,cp);
+							compiler.errorMessenger.Output(38,term,cp);
 
 							goto error;
@@ -990,5 +990,5 @@
 						if( resultType.GetBasicType() & FLAG_CAST ){
 							// 型名のみ
-							SetError();
+							compiler.errorMessenger.OutputFatalError();
 						}
 						else{
@@ -1087,5 +1087,5 @@
 						}
 						else{
-							SetError(300,NULL,cp);
+							compiler.errorMessenger.Output(300,NULL,cp);
 							goto error;
 						}
@@ -1095,5 +1095,5 @@
 					//該当する識別子が見当たらないときはエラー扱いにする
 					bError=1;
-					SetError(3,term,cp);
+					compiler.errorMessenger.Output(3,term,cp);
 					type_stack[sp]=DEF_DOUBLE;
 				}
@@ -1243,5 +1243,5 @@
 				if( PTR_LEVEL( type_stack[sp-1] ) <= 0 ){
 					//ポインタ型ではないとき
-					SetError( 3, NULL, cp );
+					compiler.errorMessenger.Output( 3, NULL, cp );
 					goto error;
 				}
@@ -1252,5 +1252,5 @@
 
 			default:
-				SetError(300,NULL,cp);
+				compiler.errorMessenger.Output(300,NULL,cp);
 				goto error;
 		}
@@ -1260,5 +1260,5 @@
 
 	if(sp!=1){
-		SetError(1,NULL,cp);
+		compiler.errorMessenger.Output(1,NULL,cp);
 		goto error;
 	}
@@ -1266,5 +1266,5 @@
 	if(bLiteralCalculation){
 		//右辺値が数値の定数式の場合
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 	else{
Index: trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Arithmetic.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Arithmetic.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Arithmetic.cpp	(revision 465)
@@ -999,5 +999,5 @@
 	int castBasicType = type[sp-1];
 	if((castBasicType&FLAG_CAST)==0){
-		SetError(47,NULL,cp);
+		compiler.errorMessenger.Output(47,NULL,cp);
 		return 0;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Logical.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Logical.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Logical.cpp	(revision 465)
@@ -15,5 +15,5 @@
 	if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){
 		//いずれかの項が実数のとき
-		SetError(45,"xor",cp);
+		compiler.errorMessenger.Output(45,"xor",cp);
 		return 0;
 	}
@@ -158,5 +158,5 @@
 	if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){
 		//いずれかの項が実数のとき
-		SetError(45,"or",cp);
+		compiler.errorMessenger.Output(45,"or",cp);
 		return 0;
 	}
@@ -301,5 +301,5 @@
 	if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){
 		//いずれかの項が実数のとき
-		SetError(45,"and",cp);
+		compiler.errorMessenger.Output(45,"and",cp);
 		return 0;
 	}
@@ -441,5 +441,5 @@
 	if(IsRealNumberType(type[sp-1])){
 		//実数のとき
-		SetError(45,"Not",cp);
+		compiler.errorMessenger.Output(45,"Not",cp);
 		return 0;
 	}
Index: trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Relation.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Relation.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Relation.cpp	(revision 465)
@@ -24,5 +24,5 @@
 		}
 		else{
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 	}*/
Index: trunk/ab5.0/abdev/BasicCompiler32/OperatorProc.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/OperatorProc.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/OperatorProc.cpp	(revision 465)
@@ -7,5 +7,5 @@
 
 void FreeTempObject(int reg,const CClass *pobj_c){
-	if(!IsSafeReg(reg)) SetError(300,NULL,cp);
+	if(!IsSafeReg(reg)) compiler.errorMessenger.Output(300,NULL,cp);
 
 	const CMethod *method = pobj_c->GetDestructorMethod();
@@ -231,5 +231,5 @@
 	if(bCalcUseHeap){
 		//未解放のインスタンスが存在する旨を示す警告
-		SetError(-105,NULL,cp);
+		compiler.errorMessenger.Output(-105,NULL,cp);
 	}
 
@@ -255,5 +255,5 @@
 
 	//エラーを発行
-	SetError(-1,"キャスト演算子がオーバーロードされていません。",cp);
+	compiler.errorMessenger.Output(-1,"キャスト演算子がオーバーロードされていません。",cp);
 }
 void CallIndexerGetterProc( const Type &classType, const char *ObjectName, char *Parameter,Type &resultType, DWORD dwProcFlags ){
Index: trunk/ab5.0/abdev/BasicCompiler32/stdafx.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/stdafx.h	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/stdafx.h	(revision 465)
@@ -22,4 +22,5 @@
 #include <jenga/include/common/File.h>
 #include <jenga/include/common/CmdLine.h>
+#include <jenga/include/common/Path.h>
 
 #include "../BasicCompiler_Common/common.h"
Index: trunk/ab5.0/abdev/BasicCompiler32/x86CodeGenerator.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler32/x86CodeGenerator.cpp	(revision 464)
+++ trunk/ab5.0/abdev/BasicCompiler32/x86CodeGenerator.cpp	(revision 465)
@@ -30,9 +30,9 @@
 		|| mod == MOD_REG ) )
 	{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 	if( isPertialSchedule && !( mod == MOD_DISP32 || mod == MOD_BASE_DISP32 ) )
 	{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 
@@ -972,5 +972,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	if(base_reg==REG_ESP){
@@ -993,5 +993,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	//オペコード、レジスタ
@@ -1027,5 +1027,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	int reg=0;
@@ -1069,5 +1069,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	if(base_reg==REG_ESP){
@@ -1090,5 +1090,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	//オペコード、レジスタ
@@ -1124,5 +1124,5 @@
 	if(type==DEF_DOUBLE)		pNativeCode->Put( (char)0xDD );
 	else if(type==DEF_SINGLE)	pNativeCode->Put( (char)0xD9 );
-	else SetError(300,NULL,cp);
+	else compiler.errorMessenger.Output(300,NULL,cp);
 
 	int reg=0;
@@ -1182,5 +1182,5 @@
 	}
 	else{
-		SetError();
+		compiler.errorMessenger.OutputFatalError();
 	}
 }
