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 には空文字以外の部分文字列が設定されているとします。ここで、(quit:$extract(ln,1,$length(sub))'=sub) と記述し、“ln の先頭が sub に一致しない場合ループを Quit します”。また、ln = "" がある名前の最後に $Order がアクセスする場合も処理します。つまり、ln が空文字列の場合は ln$Extract が空文字列で、sub は空文字列でないため、Quit が発生し、ループが終了します。以下にいくつか例を挙げます。

SAMPLES>set sub = "J"

SAMPLES>set ln = "Jones"

SAMPLES>if $extract(ln, 1, $length(sub)) '= sub { write "No Match" }

SAMPLES>set sub = "J"

SAMPLES>set ln = "Swoboda"

SAMPLES>if $extract(ln, 1, $length(sub)) '= sub { write "No Match" }
No Match
SAMPLES>set sub = "J"

SAMPLES>set ln = "" 

SAMPLES>if $extract(ln, 1, $length(sub)) '= sub { write "No Match" }
No Match
SAMPLES>do ^loopend
Search for: J
Jones
SAMPLES>

終了したループ (loopend.mac) のコードは以下のとおりです。

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