[613] | 1 | FSCQS ;SLC/STAFF-NOIS Query Search ;5/25/98 19:00
|
---|
| 2 | ;;1.1;NOIS;;Sep 06, 1998
|
---|
| 3 | ;
|
---|
| 4 | SEARCH(LISTCNT,CRITERIA) ; from FSCQR
|
---|
| 5 | S LIST=$$LIST(LISTCNT)
|
---|
| 6 | I '$D(CRITERIA("O")) D OPTIMIZE^FSCQO(.CRITERIA)
|
---|
| 7 | K ^TMP("FSC NEWLIST",$J) N ACTION,CVALUE,FCOND,QUERY,STEP
|
---|
| 8 | I $P(CRITERIA(0),U,2)=1 D Q
|
---|
| 9 | .S STEP=$O(CRITERIA(0))
|
---|
| 10 | .I CRITERIA(STEP)=1 D Q
|
---|
| 11 | ..S ACTION="S ^TMP(""FSC NEWLIST"",$J,CALL)="""""
|
---|
| 12 | ..S QUERY=CRITERIA(STEP,+$O(CRITERIA(STEP,0)))
|
---|
| 13 | ..D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3))
|
---|
| 14 | .S ACTION="D MULT^FSCQSM(CALL)"
|
---|
| 15 | .D SETUP^FSCQSS
|
---|
| 16 | .D CHECK(LIST,$P(QUERY,U),$P(QUERY,U,2),$P(QUERY,U,3))
|
---|
| 17 | S ACTION="D MMULT^FSCQSM(CALL)"
|
---|
| 18 | D SETUP^FSCQSSM
|
---|
| 19 | D ALL^FSCQSA
|
---|
| 20 | Q
|
---|
| 21 | CHECK(LIST,FIELD,COND,VALUE) ; *** needs to handle special code, word processing
|
---|
| 22 | N TYPE,INDEX,CODE
|
---|
| 23 | S TYPE=$P(CRITERIA("F",FIELD),U),CODE=$P(CRITERIA("F",FIELD),U,2),INDEX=$P(CRITERIA("F",FIELD),U,3)
|
---|
| 24 | ;I CODE["7100.6," Q ;**** fix for personal field search
|
---|
| 25 | I TYPE="W" D Q
|
---|
| 26 | .I COND="[" D CON^FSCQSW Q
|
---|
| 27 | .I COND="exists" D EX^FSCQSW Q
|
---|
| 28 | .I COND="'[" D NCON^FSCQSW Q
|
---|
| 29 | .I COND="not exists" D NEX^FSCQSW Q
|
---|
| 30 | I '$L(INDEX) D Q
|
---|
| 31 | .I COND="exists" D EX^FSCQSN Q
|
---|
| 32 | .I COND="not exists" D NEX^FSCQSN Q
|
---|
| 33 | .I COND="range" D R^FSCQSR Q
|
---|
| 34 | .I COND="not range" D NR^FSCQSR Q
|
---|
| 35 | .D OTHER^FSCQSN Q
|
---|
| 36 | I COND="=" D EQ^FSCQSE Q
|
---|
| 37 | I COND=">" D GT^FSCQSG Q
|
---|
| 38 | I COND="<" D LT^FSCQSL Q
|
---|
| 39 | I COND="[" D CON^FSCQSC Q
|
---|
| 40 | I COND="exists" D EX^FSCQSX Q
|
---|
| 41 | I COND="range" D R^FSCQSR Q
|
---|
| 42 | I COND="'=" D NEQ^FSCQSE Q
|
---|
| 43 | I COND="'>" D NGT^FSCQSG Q
|
---|
| 44 | I COND="'<" D NLT^FSCQSL Q
|
---|
| 45 | I COND="'[" D NCON^FSCQSC Q
|
---|
| 46 | I COND="not exists" D NEX^FSCQSX Q
|
---|
| 47 | I COND="not range" D NR^FSCQSR Q
|
---|
| 48 | Q
|
---|
| 49 | ;
|
---|
| 50 | LIST(CNT) ; $$(list count) -> "" if 0, 0 if count is >1000, else 1
|
---|
| 51 | Q $S(CNT=0:"",CNT>1000:0,1:1)
|
---|