Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Traverse ループの開始

ここでは、ループの開始について学習します。変数 substr は、空でない部分文字列を格納すると想定します。前の例では ln を "" に設定しましたが、今度は、部分文字列に基づいて Traverse() ループが開始されるようにします。しかし、ln を部分文字列に単純に設定することはできません。substr に一致する姓がデータベースに既に存在する場合、どうなるでしょうか。このような場合、ループは次の名前から開始されます。これは、初期 Traverse() が原因で、インデックスに substr と完全に一致する名前が存在しても同様です。

対処法として、Traverse() を一度逆の順序で使用して、ln を、substr前にある姓に設定します。その後ループは処理を継続し、substr に続く名前を生成します。しかし、ループの終了に焦点を置いて、“Swoboda” の値を取得しないようにする必要があります。


substr = "J"
ln = traverse(^PersonI("Name", substr), -1)
do
    ln = traverse(^PersonI("Name", ln) )
    if ln = "" then exit do
    println ln
loop

コード例は、BAStraverse.BASloopstart サブルーチンにあります。ターミナルを使用して、substr を渡すコードを実行します。


SAMPLES>do loopstart^BAStraverse("J")
SAMPLES>do loopstart^BAStraverse("Jones")

FeedbackOpens in a new tab