Hi Krishnaveni


There are 2 answers to this. The easy but wrong way , and the more correct way


The easy way would be to take the piece of the string before the space character, and then remove all nonNumeric chars

set output = $ZSTRIP($PIECE(input," ",1),"*AP")

The better was is to convert to the canonical date format, then convert back to the format you want.  Relevant documentation page: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

set internaldate = $ZDATETIMEH(input,3)

set outputdate = $ZDATE(internaldate,8)

So, there's 2 ways to read this, either we want an "exists" check, or following the SQL, we want a count of all instances.   This snippet can be set to do either case based on the existscheck boolean.  Ideally though, you would have an index defined, and this could be read much more efficiently than having to scan an entire global

set count=0
set existscheck=0 //Set to 1 if we only want to find first instance
set targetValue=1329
set key = ""
for   {
    set key = $ORDER(^DataTest(key))
    quit:key=""
    if targetvalue = +$LG(^DataTest(key),2) do $INCREMENT(count)
    quit:existscheck&&count
}
w !,"Count value is "_count

I haven't put a massive amount of thought into this so it might be garbage for time/space complexity....

Set y = "Red, Green, Orange, Yellow"
Set x = "Purple, Black, Yellow, Pink"
set x=$ZSTRIP(x,"*W")
set y=$ZSTRIP(y,"*W")
k ^||members
for i=1:1:$L(x,","){
    set ^||Members($P(x,",",i),1)=""
}

for j=1:1:$L(y,","){
    set ^||Members($P(y,",",j),2)=""
}

//Now do a quick traverse of our members
set key=""
set both=""
for   {
    set key=$O(^||Members(key))
    quit:key=""
    set key2=""
    set key2=$O(^||Members(key,key2))
    if ($O(^||Members(key,key2))'="" set both=both_key_","
}

w !,"These records are in both lists "_both