<< 前へ        次へ >>

ID : 565

配列をプロシージャの引数にする

プロシージャの引数に配列を指定することができます。

下記の例1の"SJoin"プロシージャは要素数3の配列(ccc(2))を要求しています。Mainプロシージャから呼び出しているPrintDbg SJoin(aaa, "-")では要素数3で定義した配列aaaを引数として渡しています。

例1

Sub Main
	Dim aaa(2) As String
	aaa(0) = "Tom"
	aaa(1) = "Jessica"
	aaa(2) = "George"
	PrintDbg SJoin(aaa, "-")
End Sub

Function SJoin(ByVal ccc(2) As String, ByVal Separator As String) As String
	Dim ddd As String
	ddd = ""
	SJoin = ccc(0) & Separator & ccc(1) & Separator & ccc(2)  
End Function

要素未定の配列

プロシージャの引数には要素未定の配列を指定することができます。

Function AAA(ByVal aaa() As Integer) As String

上記例の引数"aaa()"は整数型の配列で要素数と次元数は未定です。渡された引数の要素数に応じた処理を記述します。

下記の例の"RateB"プロシージャは要素数未定の"bbb()"配列変数を要求しています。"Main"プロシージャでは"RateB"プロシージャを読み出すときに"aaa(1000)"を渡しています。

'!TITLE "配列内にあるnの倍数の数の割合を表示"

Sub Main
	Dim aaa(1000) As integer
	Dim n As Integer
	For n = LBound(aaa) To UBound(aaa)
		aaa(n) = 7 * (n + 1) 
	Next
	PrintDbg RateB(aaa, 3) * 100 & "%" 
End Sub

Function RateB(ByVal bbb() as Integer, ByVal k As Integer) As Single
	Dim n As Integer
	Dim m As Integer
	m = 0
	For n = LBound(bbb) To UBound(bbb)
		If bbb(n) Mod k = 0 Then
			m = m + 1
		End If
	Next
	RateB = m / (Ubound(bbb) - Lbound(bbb) + 1)
End Function

プロシージャの引数のまとめ

プロシージャの引数には同じ型のデータを代入しなければなりません。同じ型のデータを代入するか、もしくはデータ型の自動変換(キャスト)可能なデータを指定しなければなりません。

配列は自動変換されませんので同じデータ型を渡さなければなりません。

 

呼び出し元
配列 配列でない
要素確定 要素未定
呼び出し先 配列 要素確定 要素数、次元数が同じときのみOK NG NG
要素未定 OK OK NG
配列でない NG NG OK
  • RC8シリーズロボットコントローラVer. 1.3.7未満ではStatic属性の2次元配列以上をプロシージャの引数に指定できません。
  • Dim宣言では要素未定の配列は定義できません。

ID : 565

<< 前へ        次へ >>