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

XTLKKSCH.m

Go to the documentation of this file.
  1. XTLKKSCH ; IHS/OHPRD/ACC,SFISC/JC - "AND"ING INVERTED LIST SEARCH ;07/22/93 15:45
  1. ;;7.3;TOOLKIT;;Apr 25, 1995
  1. ; XTLKNWDS,XTLKREF1,XTLKREF4,XTLKWORD() ARE PASSED IN AND
  1. ; SHOULD NOT BE KILLED
  1. K ^TMP("XTLKHITS",$J) S ^TMP("XTLKHITS",$J)=0
  1. I $D(XTLKHLIM) S XTLKHLM1=XTLKHLIM+1
  1. E S XTLKHLM1=0
  1. S XTLKCMAX=XTLKDFN(1) F XTLKI=1:1:XTLKNWDS S:XTLKDFN(XTLKI)<XTLKCMAX XTLKCMAX=XTLKDFN(XTLKI)
  1. RESTRT ;
  1. S XTLKI=0,XTLKEMTY=0
  1. SCLOOP ;
  1. S XTLKI=XTLKI+1
  1. G:XTLKI>XTLKNWDS!(XTLKEMTY) ENDCHK
  1. CMP S XTLKLOW=XTLKDFN(XTLKI)<XTLKCMAX,XTLKHIGH=XTLKDFN(XTLKI)>XTLKCMAX
  1. I XTLKLOW D INCSTK:XTLKPRTL(XTLKI),INCONE:'XTLKPRTL(XTLKI) G:'XTLKEMTY CMP
  1. I XTLKHIGH S XTLKCMAX=XTLKDFN(XTLKI),XTLKI=0
  1. G SCLOOP
  1. ENDCHK ;
  1. G:XTLKEMTY EXIT
  1. D NOTCHK W:XTLKSAY=1 "." D:'XTLKELIM CHKSCRN
  1. I 'XTLKELIM S ^TMP("XTLKHITS",$J)=^TMP("XTLKHITS",$J)+1,^TMP("XTLKHITS",$J,^TMP("XTLKHITS",$J))=XTLKCMAX,XTLKHLM1=XTLKHLM1-1 G:XTLKHLM1=0 STOP
  1. S XTLKCMAX=XTLKCMAX+1
  1. G RESTRT
  1. STOP W !,"Too many terms meet your criteria; please refine your search.",! K ^TMP("XTLKHITS",$J) S ^TMP("XTLKHITS",$J)=0
  1. EXIT K XTLKEMTY,XTLKHIGH,XTLKLOW,XTLKMDFN,XTLKNUM,XTLKCMAX,XTLKHLM1
  1. K XTLKPRTL,XTLKWORD,XTLKAWRD,XTLKDFN,XTLKADFN,XTLKELIM
  1. K XTLKWD,XTLKD,XTLKI,XTLKJ,XTLKQ
  1. Q
  1. ;
  1. NOTCHK ; CHECK POSSIBLE HIT FOR ELIMINATION BY "NOT"
  1. S XTLKELIM=0,XTLKD=XTLKCMAX
  1. S XTLKJ="" F XTLKQ=0:0 S XTLKJ=$O(^TMP($J,"AWRD",0,XTLKJ)) Q:XTLKJ="" S XTLKWD=^TMP($J,"AWRD",0,XTLKJ) I $D(@XTLKREF4) S XTLKELIM=1 Q
  1. Q
  1. ;
  1. CHKSCRN ; CHECK SCREEN
  1. S Y=XTLKCMAX I $D(@(XTLKREF1_"Y,0)")) X:$D(DIC("S")) DIC("S") E S XTLKELIM=1
  1. Q
  1. ;
  1. INCONE ; ADVANCE DFN FOR EXACT MATCH CASE
  1. S XTLKD=XTLKDFN(XTLKI),XTLKWD=XTLKWORD(XTLKI)
  1. S:XTLKD<XTLKCMAX XTLKD=XTLKCMAX-1
  1. F XTLKQ=0:0 S XTLKD=$O(@XTLKREF4) Q:XTLKD=""!(XTLKD'<XTLKCMAX)
  1. S XTLKDFN(XTLKI)=XTLKD
  1. S:XTLKD="" XTLKEMTY=1
  1. Q
  1. ;
  1. INCSTK ; ADVANCE COMPOSITE DFN FOR PARTIAL MATCH CASE
  1. S XTLKJ=0
  1. F XTLKQ=0:0 S XTLKJ=$O(^TMP($J,"AWRD",XTLKI,XTLKJ)) Q:XTLKJ="" D INC1 Q:XTLKD'=""
  1. I XTLKJ="" S (XTLKD,XTLKDFN(XTLKI))="",XTLKEMTY=1 Q
  1. S XTLKMDFN=XTLKD
  1. F XTLKQ=0:0 S XTLKJ=$O(^TMP($J,"AWRD",XTLKI,XTLKJ)) Q:XTLKJ="" D INC1 S:XTLKD'=""&(XTLKD<XTLKMDFN) XTLKMDFN=XTLKD
  1. S XTLKDFN(XTLKI)=XTLKMDFN
  1. Q
  1. INC1 ;
  1. S XTLKD=^TMP($J,"ADFN",XTLKI,XTLKJ),XTLKWD=^TMP($J,"AWRD",XTLKI,XTLKJ)
  1. Q:^TMP($J,"ADFN",XTLKI,XTLKJ)'<XTLKCMAX
  1. S XTLKD=XTLKCMAX-1
  1. F XTLKQ=0:0 S XTLKD=$O(@XTLKREF4) Q:XTLKD=""!(XTLKD'<XTLKCMAX)
  1. S:XTLKD'="" ^TMP($J,"ADFN",XTLKI,XTLKJ)=XTLKD
  1. K:XTLKD="" ^TMP($J,"AWRD",XTLKI,XTLKJ),^TMP($J,"ADFN",XTLKI,XTLKJ)
  1. Q