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

APCUKSCH.m

Go to the documentation of this file.
  1. APCUKSCH ; "AND"ING INVERTED LIST SEARCH ; [ 11/13/86 9:50 AM ]
  1. K HITS S HITS=0
  1. I $D(HITLIMIT) S HLIM=HITLIMIT+1
  1. E S HLIM=0
  1. S CMAX=DFN(1) F I=1:1:NWDS S:DFN(I)<CMAX CMAX=DFN(I)
  1. RESTRT ;
  1. S I=0,EMPTY=0
  1. SCLOOP ;
  1. S I=I+1
  1. G:I>NWDS!(EMPTY) ENDCHK
  1. CMP S LOW=DFN(I)<CMAX,HIGH=DFN(I)>CMAX
  1. I LOW D INCSTK:PARTIAL(I),INCONE:'PARTIAL(I) G:'EMPTY CMP
  1. I HIGH S CMAX=DFN(I),I=0
  1. G SCLOOP
  1. ENDCHK ;
  1. G:EMPTY EXIT
  1. D NOTCHK W "." D:'ELIM CHKSCRN
  1. I 'ELIM S HITS=HITS+1,HITS(HITS)=CMAX,HLIM=HLIM-1 G:HLIM=0 STOP
  1. S CMAX=CMAX+1
  1. G RESTRT
  1. STOP W !,"Too many terms meet your criteria; please refine your search.",! K HITS S HITS=0
  1. EXIT K EMPTY,HIGH,LOW,MINDFN,NUM,CMAX
  1. K PARTIAL,WORD,AWORD,DFN,ADFN
  1. K WD,D,J
  1. Q
  1. ;
  1. NOTCHK ; CHECK POSSIBLE HIT FOR ELIMINATION BY "NOT"
  1. S ELIM=0,D=CMAX
  1. S J="" F Q=0:0 S J=$O(AWORD(0,J)) Q:J="" S WD=AWORD(0,J) I $D(@REF4) S ELIM=1 Q
  1. Q
  1. ;
  1. CHKSCRN ; CHECK SCREEN
  1. S Y=CMAX I 1,$D(@(REF1_"Y,0)")) X:$D(DIC("S")) DIC("S") E S ELIM=1
  1. Q
  1. ;
  1. INCONE ; ADVANCE DFN FOR EXACT MATCH CASE
  1. S D=DFN(I),WD=WORD(I)
  1. S:D<CMAX D=CMAX-1
  1. F Q=0:0 S D=$O(@REF4) Q:D=""!(D'<CMAX)
  1. S DFN(I)=D
  1. S:D="" EMPTY=1
  1. Q
  1. ;
  1. INCSTK ; ADVANCE COMPOSITE DFN FOR PARTIAL MATCH CASE
  1. S J=0
  1. F Q=0:0 S J=$O(AWORD(I,J)) Q:J="" D INC1 Q:D'=""
  1. I J="" S (D,DFN(I))="",EMPTY=1 Q
  1. S MINDFN=D
  1. F Q=0:0 S J=$O(AWORD(I,J)) Q:J="" D INC1 S:D'=""&(D<MINDFN) MINDFN=D
  1. S DFN(I)=MINDFN
  1. Q
  1. INC1 ;
  1. S D=ADFN(I,J),WD=AWORD(I,J)
  1. Q:ADFN(I,J)'<CMAX
  1. S D=CMAX-1
  1. F Q=0:0 S D=$O(@REF4) Q:D=""!(D'<CMAX)
  1. S:D'="" ADFN(I,J)=D
  1. K:D="" AWORD(I,J),ADFN(I,J)
  1. Q