Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 536)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 537)
@@ -222,18 +222,24 @@
 }
 
+void Compiler::SetCompilingUserProc( const UserProc *pUserProc )
+{
+	this->pCompilingUserProc = pUserProc;
+
+	this->SetCompilingClass( pUserProc->GetParentClassPtr() );
+}
+
+void Compiler::StartGlobalAreaCompile()
+{
+	ClearCompilingUserProcAndClass();
+}
+
 void Compiler::StartProcedureCompile( const UserProc *pUserProc )
 {
 	//コンパイル中の関数
-	this->pCompilingUserProc = pUserProc;
-
-	//コンパイル中の関数が属するクラス
-	this->SetCompilingClass( pUserProc->GetParentClassPtr() );
+	this->SetCompilingUserProc( pUserProc );
 
 	//コンパイルスタートをクラス管理クラスに追加
 	this->GetObjectModule().meta.GetClasses().StartCompile( pUserProc );
 
-	//コンパイル中の関数
-	UserProc::CompileStartForUserProc( pUserProc );
-
 	// コンパイル中の関数が属する名前空間
 	this->GetNamespaceSupporter().SetLivingNamespaceScopes( pUserProc->GetNamespaceScopes() );
@@ -255,4 +261,8 @@
 	return ( pCompilingUserProc == NULL );
 }
+bool Compiler::IsLocalAreaCompiling()
+{
+	return ( pCompilingUserProc != NULL );
+}
 const UserProc &Compiler::GetCompilingUserProc()
 {
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Exception.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Exception.cpp	(revision 536)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Exception.cpp	(revision 537)
@@ -222,6 +222,6 @@
 
 			// Catchアドレス
-			const UserProc *pUserProc = &UserProc::CompilingUserProc();
-			if( UserProc::IsGlobalAreaCompiling() )
+			const UserProc *pUserProc = &compiler.GetCompilingUserProc();
+			if( compiler.IsGlobalAreaCompiling() )
 			{
 				pUserProc = UserProc::pGlobalProc;
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalScope.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalScope.cpp	(revision 536)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalScope.cpp	(revision 537)
@@ -71,7 +71,7 @@
 	CallDestructorsOfScopeEnd();
 
-	Variables *pVars = UserProc::IsGlobalAreaCompiling() ?
+	Variables *pVars = compiler.IsGlobalAreaCompiling() ?
 		&compiler.GetObjectModule().meta.GetGlobalVars() :
-		&UserProc::CompilingUserProc().GetLocalVars();
+		&compiler.GetCompilingUserProc().GetLocalVars();
 
 	//使用済みローカル変数の生存チェックを外す
@@ -98,7 +98,7 @@
 void LexicalScopes::CallDestructorsOfScopeEnd(){
 
-	Variables *pVariabls = UserProc::IsGlobalAreaCompiling() ?
+	Variables *pVariabls = compiler.IsGlobalAreaCompiling() ?
 		&compiler.GetObjectModule().meta.GetGlobalVars() :
-		&UserProc::CompilingUserProc().GetLocalVars();
+		&compiler.GetCompilingUserProc().GetLocalVars();
 
 
@@ -109,5 +109,5 @@
 		Variable *pVar = (*pVariabls)[i3];
 
-		if( UserProc::IsGlobalAreaCompiling() && GetNowLevel() == 0 ){
+		if( compiler.IsGlobalAreaCompiling() && GetNowLevel() == 0 ){
 			if( pVar->GetName() == "_System_GC" ){
 				indexSystemGC=i3;
@@ -152,5 +152,5 @@
 
 
-			if( UserProc::IsGlobalAreaCompiling() ){
+			if( compiler.IsGlobalAreaCompiling() ){
 				//ここには来ないハズ
 				compiler.errorMessenger.Output(300,NULL,cp);
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/NativeCode.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/NativeCode.cpp	(revision 536)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/NativeCode.cpp	(revision 537)
@@ -85,6 +85,6 @@
 	if( scheduleType == Schedule::CatchAddress )
 	{
-		const UserProc *pUserProc = &UserProc::CompilingUserProc();
-		if( UserProc::IsGlobalAreaCompiling() )
+		const UserProc *pUserProc = &compiler.GetCompilingUserProc();
+		if( compiler.IsGlobalAreaCompiling() )
 		{
 			pUserProc = UserProc::pGlobalProc;
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp	(revision 536)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp	(revision 537)
@@ -483,5 +483,4 @@
 }
 
-const UserProc *UserProc::pCompilingUserProc = NULL;
 const UserProc *UserProc::pGlobalProc = NULL;
 
