プロが教えるわが家の防犯対策術!

お世話になっております。カナと申します。
宜しくお願いいたします。

・windowsXP
・Vbscript
・IIS5.0

インクルードしたaspファイルに、関数があるのですが、
それを実行し戻り値を取得して呼び出し元の関数に戻った際に、
エラー「この変数は宣言されていません。」が出てしまいます。

以下ソースです。


'~~~~~TEST_1.asp~~~~~~~~~


<%@ LANGUAGE="VBScript" %>
<% option explicit %>
<!-- #include file="TEST_2.asp" -->
<%

call TEST_1()

%>

<%
public function TEST_1(Data)
Dim Data

On Error Resume Next

Data=27

Call TEST_2(Data)

Response.Write(Data)%><br><%
     '↑きちんと30が取得できます

Response.Write(Err内容:" & Err.Description)%><br><%
'↑ここでエラーの確認をしています。
     '「この変数は宣言されていません。」になります。


End Function

%>

~~~~~TEST_2.asp~~~~~~~~~
<%

Public Sub TEST_2(ByRef Data)

On Error Resume Next

Response.Write("Data)%><br><%
     '↑27が表示されます

    Data=Data+3

End Sub

%>

-------------------------------------------------------
以上です。

callで関数を呼んで、実行結果は正しく取得できるのですが、戻ってきたときにエラーになるので、この先のコードを書いていったときにエラー処理等に問題が出てしまいます。

もっと長いソースを書いているときも同様のエラーが出るので、ファイルのインクルードの仕方か関数の呼び出し方など、根本的になにか問題があるのだと思うのですが・・・。

何かおかしい点があるのでしょうか?
大変困っています。
申し訳ありませんが、どなたかご教授ください。

A 回答 (2件)

すいません、このソースコードのミスを見つけたのでご指摘します。


もうだいぶ時間が経ってしまったので、解決されているかもしれませんが・・・

まず、call TEST_1() を呼んでますよね?
しかし、TEST_1の関数を見ると、「public function TEST_1(Data)」
となっており、Dataに該当する引数を渡さないで実行しているために、
エラーになってます。

Easyミスなので、FunctionやSubの呼び出し元と呼び出し先の
引数の数があっているか、全体的に見直すことをお勧めします!
    • good
    • 0

『On Error Resume Next』をコメントアウトして実行してみるとどこでエラーになっているのかの詳細が表示される場合がありますよ



TEST_1.aspで『Option Explicit』を宣言しているので
Dim宣言していない変数は使用出来ないことになります

このエラーが発生しても On Errorでトラップされてしまうので原因箇所の特定が難しくなります

投稿のソースでおかしな点は Response.Writeの引数の""の整合ぐらいのように思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!