Index: trunk/ab5.0/abdev/BasicCompiler64/MakePeHdr.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 460)
+++ trunk/ab5.0/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 468)
@@ -94,5 +94,4 @@
 	extern int obp_AllocSize;
 	extern char *basbuf;
-	extern char OutputFileName[MAX_PATH];
 	int i,i2,i3,i4,i5;
 	char temporary[MAX_PATH],*temp2;
@@ -325,5 +324,5 @@
 		// 名前空間が初期化されているかをチェック
 		if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){
-			SetError();
+			compiler.errorMessenger.OutputFatalError();
 		}
 
@@ -409,5 +408,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]);
 		}
@@ -417,5 +416,5 @@
 		// 名前空間が正しく閉じられているかをチェック
 		if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){
-			SetError(63,NULL,-1);
+			compiler.errorMessenger.Output(63,NULL,-1);
 		}
 
@@ -467,9 +466,9 @@
 
 		// 格納先ディレクトリを作る
-		Jenga::Common::Path path( OutputFileName );
+		Jenga::Common::Path path( program.GetOutputFilePath() );
 		Jenga::Common::Directory dir( path.GetDriveName() + path.GetDirName(), true );
 
 		// 書き込む
-		if( !compiler.GetObjectModule().Write( OutputFileName ) )
+		if( !compiler.GetObjectModule().Write( program.GetOutputFilePath() ) )
 		{
 			MessageBox(0,"XML書き込みに失敗","test",0);
@@ -478,8 +477,7 @@
 	}
 
-	extern BOOL bError;
-	if( !bError )
+	if( !compiler.errorMessenger.HasError() )
 	{
-		CompileMessage( "リンク中..." );
+		compiler.messenger.Output( "リンク中..." );
 	}
 
@@ -522,7 +520,6 @@
 		hLib=LoadLibrary( pDllProc->GetDllFileName().c_str() );
 		if(!hLib){
-			extern char OutputFileName[MAX_PATH];
 			char temp2[MAX_PATH],temp3[MAX_PATH];
-			_splitpath(OutputFileName,temp2,temp3,NULL,NULL);
+			_splitpath(program.GetOutputFilePath().c_str(),temp2,temp3,NULL,NULL);
 			lstrcat(temp2,temp3);
 			lstrcpy(temp3,pDllProc->GetDllFileName().c_str());
@@ -531,5 +528,5 @@
 
 			if(!hLib){
-				SetError(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());
+				compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());
 			}
 		}
@@ -538,5 +535,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);
@@ -574,5 +571,5 @@
 
 	if(bUse_ExportSection){
-		_splitpath(OutputFileName,NULL,NULL,lpExportNames,temporary);
+		_splitpath(program.GetOutputFilePath().c_str(),NULL,NULL,lpExportNames,temporary);
 		lstrcat(lpExportNames,temporary);
 		ExportNamesLength=lstrlen(lpExportNames)+1;
@@ -700,5 +697,5 @@
 
 		if( pDllProc->GetDllFileName().size() > 16 ){
-			SetError(7,NULL,cp);
+			compiler.errorMessenger.Output(7,NULL,cp);
 			break;
 		}
@@ -832,12 +829,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( "デバッグ情報の生成が完了しました。" );
 	}
 
@@ -1121,6 +1117,8 @@
 
 
-	extern BOOL bError;
-	if(bError) goto EndWriteOpcode;
+	if( compiler.errorMessenger.HasError() )
+	{
+		goto EndWriteOpcode;
+	}
 
 
@@ -1411,7 +1409,7 @@
 
 
-	hFile=CreateFile(OutputFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
+	hFile=CreateFile(program.GetOutputFilePath().c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
 	if(hFile==INVALID_HANDLE_VALUE){
-		SetError(53,OutputFileName,-1);
+		compiler.errorMessenger.Output(53,program.GetOutputFilePath().c_str(),-1);
 		goto EndWriteOpcode;
 	}
