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

入れ子になった $Order ループ (ツリーの枝内の各レベルに 1 つ) を使用すると、ID 番号を示す葉ノードに到達できます。その後 ID 番号を使用してデータ配列に戻り、必要な情報を取得します。例として、名前インデックスを使用します。ここでは、各姓データに対応する名前すべてを検索するために、新規のループを呼んでいます。また、そのフルネームに対し、新規ループで該当するすべての ID 番号を検索します。ID を使用して、^PersonD の残りのデータを取得します。

SAMPLES>do ^nameloop

Agee,Tommie    617-333-3333   08/09/42
Jones,Cleon    111-111-1111   08/04/42
Swoboda,Ron    222-222-2222   06/08/44
SAMPLES>

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

nameloop ; loop through the name index
    set ln = ""
    For {
        set ln = $order( ^PersonI("Name", ln) )
        quit:(ln = "")
        set fn = ""
        for {
            set fn = $order( ^PersonI("Name", ln, fn) )
            quit:(fn = "")
            set id = ""
            for {
                set id = $order( ^PersonI("Name", ln, fn, id) )
                quit:(id = "")
                set rec = ^PersonD(id)
                write !, $piece( rec, "^", 1), ?15, $piece( rec, "^", 2),
                    ?30, $zdate( $piece( rec, "^", 3) )
                }
            }
        }
FeedbackOpens in a new tab