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?

$Order ループの開始

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

対処法として、$Order を一度逆の順序で使用して、ln を、sub前にある姓に設定します。それにより、後続の名前からループを開始し、名前を生成できます。しかし、ループの終了に焦点を置いて、“Swoboda” の値を取得しないようにする必要があります。

SAMPLES>do ^loopstart
Search for: J
Jones
Swoboda
SAMPLES>

以下は、loopstart.mac コードです。

loopstart ; loop through last names
    read "Search for: ",sub
    set ln = $order( ^PersonI("Name", sub), -1)
    for {
        set ln = $order( ^PersonI("Name", ln) )
        quit:(ln = "")
        write !, ln
    }
FeedbackOpens in a new tab