RGUTMTL ;CAIRO/DKM - Multi-term lookup support ;04-Sep-1998 11:26;DKM ;;2.1;RUN TIME LIBRARY;;Mar 22, 1999 ;================================================================= ; Parse term into component words (KWIC) PARSE2(RGTRM,RGRTN,RGMIN) ; N X,L,C,% K RGRTN S %="RGRTN(I)",X=$$UP^XLFSTR(RGTRM),RGMIN=+$G(RGMIN) D S^XTLKWIC S L="",C=0 F S L=$O(RGRTN(L)) Q:L="" D .I $L(L)1 Q:RGL>RGM ...S:RGL=-1 RGL=0 ...S RGL=RGL+$G(^(RGTRM1)) ...S RGTRM1=RGTRM1_$C(255) ..S RGW(RGL,RGTRM)="" ..I RGL>0,RGL1 RGF=-1 ..E D ...S RGTRM1="",RGF=1 ...F S RGTRM1=$$STEM(RGTRM1,RGTRM,RGX) Q:RGTRM1="" M @RGRTN=^(RGTRM1) ...S:$D(@RGRTN)'>1 RGF=-1 Q $D(@RGRTN)>1 LKP2 K @RGRTN Q -1 ; Check for user abort ABORT N RGZ R RGZ#1:0 D:RGZ=U RAISE^RGZOSF() Q ; Return in successive calls all terms sharing common stem ; (sets naked reference) STEM(RGLAST,RGSTEM,RGF) ; D:RGABR ABORT I RGLAST="" S RGLAST=RGSTEM Q:$D(@RGRT@(RGLAST)) RGLAST Q:$G(RGF) "" S RGLAST=$O(@RGRT@(RGLAST)) Q $S($E(RGLAST,1,$L(RGSTEM))=RGSTEM:RGLAST,1:"")