Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: APCUKWL

APCUKWL.m

Go to the documentation of this file.
  1. APCUKWL ; LOOKUP DRIVER PROGRAM FOR "AND"ING INVERTED SEARCH ; [ 11/13/86 9:39 AM ]
  1. ; ASSUMES LINE(L=TYPE^LINE),DICTIONARY(DIC),INDEX(DIC("X"))
  1. K Y
  1. S T=$P(L,"^",1),HITLIMIT=$P(L,"^",3),L=$P(L,"^",2,999)
  1. K:HITLIMIT="" HITLIMIT
  1. I '$D(^APCUKWLC("B",T)) W *7,"<WARNING: SYNONYM/REPLACEMENT TABLE MISSING>",! S KWCT=0
  1. E S KWCT=$O(^APCUKWLC("B",T,""))
  1. INIT I DIC'["^",DIC'?1N.N,DIC'?1N.N1"."1N.N S DIC=$O(^DIC("B",DIC,""))
  1. S:DIC'["^" DIC=^DIC(DIC,0,"GL")
  1. S REF=DIC_""""_DIC("X")_""",WD)"
  1. S REF1=DIC
  1. S REF2=$E(REF,1,$L(REF)-1)_","""")"
  1. S REF3=DIC_"HITS(H),0)"
  1. S REF4=$E(REF,1,$L(REF)-1)_",D)"
  1. CHKSHRT I $D(^APCUKWLC(KWCT,3,"B",L)) S I=$O(^(L,"")),L=$P(^APCUKWLC(KWCT,3,I,0),"^",2) S Y=$S($D(@(REF1_"""B"",L)")):$O(^(L,"")),1:-1) Q:Y=-1 K HITS S HITS=1,HITS(1)=Y G VERIFY
  1. D ^APCUTOKN
  1. K WORD,DFN,AWORD,ADFN,UNUSED S UNUSED=0
  1. D PREPSCH^APCUKWL1
  1. I UNUSED>0 W !,"The following word",$S(UNUSED=1:" was",1:"s were")," not used in this search:",! S WD="" F Q=0:0 S WD=$O(UNUSED(WD)) Q:WD="" W ?5,WD,!
  1. K UNUSED
  1. S HITS=0 D:NWDS ^APCUKSCH
  1. I HITS=0 W "Search was unsuccessful.",! S Y=-1 G EXIT
  1. VERIFY ;
  1. D ASKONE:HITS=1,ASKSEL:HITS>1
  1. EXIT ;
  1. K HITS,WD,NWDS
  1. K REF,REF1,REF2,REF3,REF4
  1. Q
  1. ;
  1. ASKONE ; ASK IF SINGLE HIT IS ACCEPTABLE
  1. W !
  1. S H=1,NUM=0
  1. D DSPLY
  1. F Q=0:0 R " OK? Y// ",X,! S X=$E(X_"Y") S:X?1L X=$C($A(X)-32) Q:"YN"[X W $C(7)
  1. I X="N" S Y=-1
  1. E S Y=HITS(1)
  1. K H,NUM,DESC,F
  1. Q
  1. ;
  1. ASKSEL ; ASK FOR SELECTION AMONG HITS
  1. W !!,"The following matches were found:",!!
  1. S NUM=1,GRP=1
  1. DSPGRP S H2=$S((GRP+4)'>HITS:GRP+4,1:HITS)
  1. F H=GRP:1:H2 D DSPLY
  1. W !
  1. F Q=0:0 W "Select 1-",HITS,": " R X,! Q:X["^"!(X="")!(X="-") Q:X?1N.N&(X>0)&(X'>HITS) W $C(7)
  1. I X="" S GRP=$S((GRP+5)'>HITS:GRP+5,1:1) G DSPGRP
  1. I X="-" S GRP=$S(GRP'=1:GRP-5,1:HITS-1\5*5+1) G DSPGRP
  1. I X?1"^"1N.N S I=($E(X,2,255)-1)\5*5+1 I I'>HITS S GRP=I G DSPGRP
  1. I X["^" S Y=-1
  1. E S Y=HITS(X)
  1. K H,NUM,H2,GRP,DESC,F
  1. Q
  1. ;
  1. DSPLY ; DISPLAY CODE AND TEXT
  1. S I=HITS(H)
  1. W:NUM $J(H,4),": "
  1. W $P(@(REF1_"I,0)"),"^",1)," ","(",$P(^(0),"^",3),")",!
  1. S DESC=^(1)
  1. F Q=0:0 Q:DESC="" D GETFRAG W:NUM ?7 W F,!
  1. W !
  1. Q
  1. GETFRAG I $L(DESC)<66 S F=DESC,DESC="" Q
  1. F C=66:-1:1 Q:$E(DESC,C)=" "
  1. S F=$E(DESC,1,C-1),DESC=$E(DESC,C+1,255)
  1. Q