Traverse ループの終了
ここでは、ループの終了方法について学習します。ここで再度、変数 substr には空文字以外の部分文字列が設定されているとします。ここで、(if left(ln ,len(sub)) <> substr then exit do) は、“ln の開始が substr と一致しない場合、ループを終了する” ことを意味します。また、ln = "" がある名前の最後に Traverse() が到達する場合も処理します。つまり、ln が空文字列の場合は ln の Mid() が空文字列で、substr は空文字列でないため、ループが終了します。以下にいくつか例を挙げます。
println "first test: "
substr = "J" : ln = "Jones"
if left(ln, len(substr)) <> substr then println "No Match"
println "second test: "
substr = "J" : ln = "Swoboda"
if left(ln, len(substr)) <> substr then println "No Match"
println "third test: "
substr = "J" : ln = ""
if left(ln, len(substr)) <> substr then println "No Match"
substr = "J"
ln = traverse( ^PersonI("Name", substr), -1)
do
ln = traverse( ^PersonI("Name", ln) )
if left(ln, len(substr)) <> substr then exit do
println ln
loop
コード例は、BAStraverse.BAS の loopend サブルーチンにあります。ターミナルを使用して、substr を渡すコードを実行します。
SAMPLES>do loopend^BAStraverse("J")
SAMPLES>do loopend^BAStraverse("Jones")