忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
ユーザ関数の引数の仮変数を普通の変数の様に使用することができます。 但し、文字列型変数の場合文字列長に関して注意する点があります。

今回は仮のユーザ関数として以下の様なものを宣言します。
'---------------------------------------
'引き数の仮変数のテスト
'---------------------------------------
'Sub MsTest(Byval pstrCD$)
'引 数:
'	pstrCD$		:コード
'---------------------------------------
	Sub MsTest(Byval pstrCD$)
		'エラー処理宣言
		On Error Goto MsTest.ErrProc
		'3文字を設定
		pstrCD$ = "123"
		PRINT "3文字を設定:" + pstrCD$
		'4文字を設定
		pstrCD$ = "1234"
		PRINT "4文字を設定:" + pstrCD$
		'5文字を設定
		pstrCD$ = "12345"
		PRINT "5文字を設定:" + pstrCD$
MsTest.Return	'関数戻り
		On Error Goto 0
		Exit Sub
MsTest.ErrProc
		'エラー発生時にエラーコード表示
		PRINT "ERR=" + RIGHT$("00" + HEX$(ERR), 2)
		Resume MsTest.Return
	End Sub

この関数は仮変数である pstrCD$ に3文字~5文字までのテストデータを代入し 単にその内容を表示しています。
尚、エラー処理では発生したエラーコードを表示させています。

上記の関数の動作をテストするソースを以下に記します。
	SCREEN 1	'漢字モード
	LOCATE , , 2	'カーソルをブロック表示

	PRIVATE W$
	W$ = "0001"	'4文字データを代入
	CALL MsTest(W$)	'4文字データの変数の値を渡す

	WAIT 0, &h01 'キー入力待ち
	END

関数 MsTest の中でブレークポイントを設定し pstrCD$ の 内容を表示させてみます。 以下の図は MsTest に制御が移った直後の pstrCD$ ですが 文字列のサイズが4文字になっています。

呼出し元の変数 W$ はサイズが40文字のはずですが、 引き数としては4文字になっています。

さらにステップ実行すると以下の図になります。  pstrCD$ に"123"が設定されている様子です。
そのまま実行を継続すると、以下の図の表示なります。

5文字の設定のところでエラーが発生し、エラーコードが 0F(16進数) と表示されます。 このエラー内容は 「文字列長が範囲外です。」 です。
※結果的に、ユーザ関数の引数の文字列型仮変数に代入する場合は文字列長に注意が必要だということになります。



=====
2016/04/02:の時の情報











PR

コメント

コメントを書く