Index: BasicCompiler64/Compile_CallProc.cpp
===================================================================
--- BasicCompiler64/Compile_CallProc.cpp	(revision 29)
+++ BasicCompiler64/Compile_CallProc.cpp	(revision 31)
@@ -68,5 +68,9 @@
 
 
-		ret_type=Opcode_CallProc(Parameter,psi,plpRetIndex,0,ObjectName,RefType);
+		Opcode_CallProc(Parameter,psi,0,ObjectName,RefType);
+		if( plpRetIndex ){
+			*plpRetIndex = psi->u.ReturnIndex;
+		}
+		return psi->ReturnType;
 	}
 	else if(idProc==PROC_DLL){
@@ -139,11 +143,9 @@
 	if(psi){
 		//呼び出し
-		int type;
-		LONG_PTR lpIndex;
-		type=Opcode_CallProc(Parameter,psi,&lpIndex,0,ObjectName,RefType);
-
-		if(pRetTypeInfo){
-			pRetTypeInfo->type=type;
-			pRetTypeInfo->u.lpIndex=lpIndex;
+		Opcode_CallProc(Parameter,psi,0,ObjectName,RefType);
+
+		if( pRetTypeInfo ){
+			pRetTypeInfo->type = psi->ReturnType;
+			pRetTypeInfo->u.lpIndex = psi->u.ReturnIndex;
 		}
 	}
@@ -175,5 +177,8 @@
 
 	//エラーチェック
-	pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum);
+	if( !pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum) ){
+		//パラメータにエラーがあるときは処理を終える
+		return pi->ReturnType;
+	}
 
 	//スタックフレームに存在する既存のパラメータをバックアップ
@@ -213,10 +218,8 @@
 	delete pobj_parameter;
 
-	if(plpIndex) *plpIndex=pi->u.ReturnIndex;
-
 	return pi->ReturnType;
 }
 
-int Opcode_CallProc(char *Parameter,SUBINFO *psi,LONG_PTR *plpIndex,DWORD dwFlags,char *ObjectName,int RefType){
+void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType){
 	int i,i2;
 
@@ -224,13 +227,13 @@
 		if(lstrcmpi(psi->name,"Print")==0){
 			Opcode_Print(Parameter,0);
-			return -1;
+			return;
 		}
 		if(lstrcmpi(psi->name,"Input")==0){
 			Opcode_Input(Parameter);
-			return -1;
+			return;
 		}
 		if(lstrcmpi(psi->name,"Write")==0){
 			Opcode_Print(Parameter,1);
-			return -1;
+			return;
 		}
 	}
@@ -282,5 +285,5 @@
 			if( !pMethod ){
 				SetError(300,NULL,cp);
-				return -1;
+				return;
 			}
 
@@ -301,5 +304,5 @@
 				if(dwAccess==ACCESS_NON){
 					SetError(109,psi->name,cp);
-					return -1;
+					return;
 				}
 			}
@@ -308,9 +311,9 @@
 					dwAccess==ACCESS_NON){
 					SetError(109,psi->name,cp);
-					return -1;
+					return;
 				}
 				if(dwAccess==ACCESS_PROTECTED){
 					SetError(110,psi->name,cp);
-					return -1;
+					return;
 				}
 			}
@@ -320,5 +323,5 @@
 			if(dwAccess==ACCESS_NON){
 				SetError(109,psi->name,cp);
-				return -1;
+				return;
 			}
 		}
@@ -355,5 +358,8 @@
 
 	//エラーチェック
-	pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum);
+	if( !pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum) ){
+		//パラメータにエラーがあるときは処理を終える
+		return;
+	}
 
 	if(psi->dwType==SUBTYPE_MACRO){
@@ -425,9 +431,9 @@
 				if( pMethod->isConst ){
 					//Constアクセスが可能なメソッドの場合
-					if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;
+					if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return;
 				}
 				else{
 					//Constアクセスが不可能なメソッドの場合
-					if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;
+					if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return;
 				}
 
@@ -509,8 +515,4 @@
 	//パラメータオブジェクトを破棄
 	delete pobj_parameter;
-
-	if(plpIndex) *plpIndex=psi->u.ReturnIndex;
-
-	return psi->ReturnType;
 }
 
@@ -536,5 +538,8 @@
 
 	//エラーチェック
-	pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum);
+	if( !pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum) ){
+		//パラメータにエラーがあるときは処理を終える
+		return pdi->ReturnType;
+	}
 
 	//スタックフレームに存在する既存のパラメータをバックアップ
