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

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


ln = ""
do
    ln = traverse(^PersonI("Name", ln) )
    if ln = "" then exit do
    fn = ""
    do
        fn = traverse(^PersonI("Name", ln, fn) )
        if fn = "" then exit do
        id = ""
        do
            id = traverse(^PersonI("Name", ln, fn, id) )
            if id = "" then exit do
            rec = ^PersonD(id)
            print piece(rec, "^", 1), space(2), 
            print piece(rec, "^", 2), space(2)
            println DateConvert(piece(rec, "^", 3), vbToExternal)
        loop
    loop
loop

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


SAMPLES>do nameloop^BAStraverse()

FeedbackOpens in a new tab