Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h	(revision 708)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h	(revision 710)
@@ -178,5 +178,5 @@
 
 	// グローバルエリアが置かれる関数名
-	std::string globalAreaProcName;
+	const std::string &GetGlobalAreaProcName() const;
 
 	// 列挙型
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 708)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 710)
@@ -52,4 +52,28 @@
 		this->GetObjectModule().StaticLink( *pStaticLibrary, this->IsSll() );
 	}
+}
+
+const std::string &Compiler::GetGlobalAreaProcName() const
+{
+	static std::string globalAreaProcName;
+
+	if( globalAreaProcName.empty() )
+	{
+		// 初期化
+		_ASSERTE( !this->GetModuleName().empty() );
+
+		std::string originalName = this->GetModuleName();
+
+		// モジュール名がシンボル名として使えない場合があるので、16進数文字列に変換する
+		char temporary[VN_SIZE*2] = "";
+		for( int i=0; i<originalName.size(); i++ )
+		{
+			sprintf( temporary + strlen(temporary), "%2x", originalName[i] );
+		}
+
+		globalAreaProcName = (std::string)"_GlobalArea_" + temporary;
+	}
+
+	return globalAreaProcName;
 }
 
@@ -442,5 +466,5 @@
 		return true;
 	}
-	return ( pCompilingUserProc->GetName() == this->globalAreaProcName );
+	return ( pCompilingUserProc->GetName() == this->GetGlobalAreaProcName() );
 }
 bool Compiler::IsLocalAreaCompiling()
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 708)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 710)
@@ -1027,6 +1027,5 @@
 	compiler.GetNamespaceSupporter().ClearImportedNamespaces();
 
-	compiler.globalAreaProcName = "_GlobalArea_" + compiler.GetModuleName();
-	sprintf(temporary,"%c%c%s()",1,ESC_SUB,compiler.globalAreaProcName.c_str());
+	sprintf(temporary,"%c%c%s()",1,ESC_SUB,compiler.GetGlobalAreaProcName().c_str());
 	UserProc *pUserProc = ParseUserProc( namespaceScopes, compiler.GetNamespaceSupporter().GetImportedNamespaces(), temporary, 0, false, NULL, false );
 
