Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/Procedure.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/Procedure.h	(revision 574)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/Procedure.h	(revision 575)
@@ -542,5 +542,4 @@
 	}
 
-	int Add( const std::string &typeExpression );
 	void Clear();
 	void PullOutAll()
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 574)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 575)
@@ -78,9 +78,28 @@
 	if( typeName[0] == '*' ){
 		if( typeName.size() >= 3
-			&& typeName[1] == 1 && ( typeName[2] == ESC_FUNCTION || typeName[2] == ESC_SUB ) ){
-				//関数ポインタ（*Function）
-				type.SetBasicType( DEF_PTR_PROC );
-				type.SetIndex( this->GetObjectModule().meta.GetProcPointers().Add( typeName ) );
-				return true;
+			&& typeName[1] == 1 && ( typeName[2] == ESC_FUNCTION || typeName[2] == ESC_SUB ) )
+		{
+			// 関数ポインタを追加する
+			{
+				DWORD dwProcType = (DWORD)typeName[2];
+				const std::string &paramStr = typeName.substr( 3 );
+
+				Procedure::Kind kind = ( dwProcType == ESC_FUNCTION )
+					? Procedure::Function
+					: Procedure::Sub;
+
+				ProcPointer *pProcPointer = new ProcPointer( kind );
+
+				//buffer[0]は'('となっている
+				extern int cp;
+				ActiveBasic::Compiler::LexicalAnalyzer::SetParamsAndReturnType( pProcPointer, paramStr.c_str(), false, cp );
+
+				this->GetObjectModule().meta.GetProcPointers().push_back( pProcPointer );
+			}
+
+			//関数ポインタ（*Function）
+			type.SetBasicType( DEF_PTR_PROC );
+			type.SetIndex( this->GetObjectModule().meta.GetProcPointers().size() - 1 );
+			return true;
 		}
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp	(revision 574)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Procedure.cpp	(revision 575)
@@ -118,25 +118,4 @@
 }
 
-int ProcPointers::Add( const std::string &typeExpression )
-{
-	DWORD dwProcType = (DWORD)typeExpression[2];
-	const std::string &paramStr = typeExpression.substr( 3 );
-
-	Procedure::Kind kind = Procedure::Sub;
-	if( dwProcType == ESC_FUNCTION ){
-		kind = Procedure::Function;
-	}
-
-	ProcPointer *pProcPointer = new ProcPointer( kind );
-
-	//buffer[0]は'('となっている
-	extern int cp;
-	LexicalAnalyzer::SetParamsAndReturnType( pProcPointer, paramStr.c_str(), false, cp );
-
-	this->push_back( pProcPointer );
-
-	return (int)this->size()-1;
-}
-
 void ProcPointers::Clear()
 {
