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 ループ

generated description: personi

前ページの例では、Traverse() を繰り返し使用してツリーの検索を実行しました。ループを使用するとより簡単に取得でき、ツリーの他のレベルの検索もできます。以下の例は、グローバルで頻繁に使用するコードで、学習すると役立ちます。

最初に、変数 ln を初期化して空文字列にします。その後 Do/Loop ループを開始します。割り当て文では、Traverse() を使用して ^PersonI("Name") ノードで最初の子、つまり姓の添え字値を生成します。次に、If コマンドは、ループを終了させるかどうかを判断し、空文字と等しい姓を検索します。最後に、値に対してどのような処理を実行するかを指定します。その後、ループは同じ処理を繰り返し、次の姓を検索します。電話番号は姓とは兄弟でないため、姓の “隣に” 電話番号の添え字が存在してもその値は取得しません。

Traverse() を使用する割り当て文は、典型的なプログラミング・コード i = i + 1 と類似しています。このコードは、変数値の現在の値を使用して新規の値を生成します。


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

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


SAMPLES>do simpleloop^BAStraverse()

FeedbackOpens in a new tab