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

LEXRXC3.m

Go to the documentation of this file.
  1. LEXRXC3 ;ISL/KER - Re-Index 757.01 AWRD ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**81,86,103**;Sep 23, 1996;Build 2
  1. ;
  1. ;
  1. ; Global Variables
  1. ; ^TMP("LEXRXASL") SACC 2.3.2.5.1
  1. ; ^TMP("LEXRXASLU") SACC 2.3.2.5.1
  1. ; ^TMP("LEXRXAWRD") SACC 2.3.2.5.1
  1. ; ^TMP("LEXRXERR") SACC 2.3.2.5.1
  1. ; ^TMP("LEXRXPRO") SACC 2.3.2.5.1
  1. ; ^TMP("LEXTKN") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$FMDIFF^XLFDT ICR 10103
  1. ; $$NOW^XLFDT ICR 10103
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; LEXNAM Task name NEWed/KILLed by LEXRXXT
  1. ; LEXTEST Test variable NEWed/KILLed by Developer
  1. ; ZTQUEUED Task flag NEWed/KILLed by Taskman
  1. ;
  1. ; The AWRD cross-references is used to create the ASL
  1. ; cross-reference, hence the AWRD cross-reference must
  1. ; be repaired/re-indexed before ASL.
  1. ;
  1. Q
  1. EN ; Main Entry Point
  1. R75701 ; Repair file 757.01
  1. D KGBL,RAWRD,RASL^LEXRXC4,KGBL
  1. D:'$D(ZTQUEUED) LEX
  1. Q
  1. ;
  1. RAWRD ; Index ^LEX(757.01,"AWRD",WORD,MC,EXP)
  1. S:$D(ZTQUEUED) ZTREQ="@" N DA,DIK,LEX0P3,LEX0P4,LEXBEG,LEXCHR,LEXCHRS,LEXCTL,LEXDATA,LEXDIF,LEXE,LEXELP,LEXEND,LEXERR,LEXEX,LEXEXCL,LEXEXP
  1. N LEXFI,LEXFUL,LEXHI,LEXI,LEXIDX,LEXIDXT,LEXIT,LEXL,LEXLO,LEXLTKN,LEXM,LEXMC,LEXMCE,LEXMCEI,LEXMCI,LEXND,LEXNDS
  1. N LEXNOD,LEXRI,LEXRT,LEXRT1,LEXRT2,LEXRXTMP,LEXS,LEXS1,LEXS2,LEXS3,LEXS4,LEXSI,LEXSP,LEXSTR,LEXT,LEXTC
  1. N LEXTK,LEXTKC,LEXTKN,LEXTMP,LEXTNG,LEXTTKN,LEXW,LEXWDS,X S LEXRXTMP=$D(^TMP("LEXRX",$J))
  1. S LEXTC=$$UPD^LEXRXXT3($G(LEXNAM),,"Repairing File #757.01 ""AWRD""")
  1. Q:LEXTC=1 S (LEX0P3,LEX0P4)=0,LEXBEG=$$NOW^XLFDT,(LEXNDS,LEXERR)=0,LEXFI=757.01
  1. K ^TMP("LEXRXPRO",$J,"AWRD"),^TMP("LEXRXERR",$J,"AWRD"),^TMP("LEXRXAWRD",$J),^TMP("LEXRXAWRDK",$J),^TMP("LEXRXAWRDU",$J)
  1. S LEXIDX="AWRD",LEXIDXT="^LEX(757.01,""AWRD"",WORD,MC,EXP)"
  1. ; Build
  1. N LEXEX S LEXEX=0 F S LEXEX=$O(^LEX(757.01,LEXEX)) Q:+LEXEX'>0 D
  1. . N X,LEXEXP,LEXIDX,LEXMC,LEXMCI,LEXMCEI,LEXRI,LEXSI,LEXTKN,LEXTKC,LEXTMP,LEXDEA,LEXTTYP
  1. . S LEXDEA=$$DEA(+LEXEX) Q:LEXDEA>0 S LEXTTYP=$P($G(^LEX(757.01,LEXEX,1)),"^",2) Q:LEXTTYP=8
  1. . S ^TMP("LEXRXPRO",$J,"AWRD","BUILD","IEN")=+LEXEX,LEX0P3=+LEXEX,LEX0P4=LEX0P4+1
  1. . S LEXEXP=$$UP^XLFSTR($G(^LEX(757.01,LEXEX,0))) Q:'$L(LEXEXP)
  1. . S LEXMCI=$P($G(^LEX(757.01,LEXEX,1)),"^",1) Q:+LEXMCI'>0
  1. . S LEXMCEI=$P($G(^LEX(757,LEXMCI,0)),"^",1) Q:+LEXMCEI'>0
  1. . ; Words (main)
  1. . K ^TMP("LEXTKN",$J) S LEXIDX="",X=LEXEXP D PTX^LEXTOKN
  1. . I $D(^TMP("LEXTKN",$J,0)),^TMP("LEXTKN",$J,0)>0 D
  1. . . S LEXTKN="",LEXTKC=0
  1. . . F S LEXTKC=$O(^TMP("LEXTKN",$J,LEXTKC)) Q:+LEXTKC'>0 D
  1. . . . N LEXND,LEXTKN S LEXTKN=$O(^TMP("LEXTKN",$J,LEXTKC,"")) Q:'$L(LEXTKN)
  1. . . . I +($G(LEXEACT))>0 K ^LEX(757.01,"AWRD",LEXTKN,+($G(LEXMCEI)),+($G(LEXEX))) Q
  1. . . . S LEXND="^LEX(757.01,""AWRD"","_$$QQ(LEXTKN)_","_LEXMCEI_")" I '$D(@LEXND) D
  1. . . . . N LEXND S LEXND="^LEX(757.01,"_+LEXEX_",4,""B"","_$$QQ(LEXTKN)_")" Q:$D(@LEXND)
  1. . . . . S LEXND="^LEX(757.01,"_+LEXMCEI_",4,""B"","_$$QQ(LEXTKN)_")" Q:$D(@LEXND)
  1. . . . . S LEXERR=+($G(LEXERR))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",0)=$G(^TMP("LEXRXERR",$J,"AWRD",0))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",1)=$G(^TMP("LEXRXERR",$J,"AWRD",1))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",1,0)="Missing word in ""AWRD"" index"
  1. . . . . S LEXND="^TMP(""LEXRXERR"","_$J_",""AWRD"",1,""ERR"","_$$QQ(LEXTKN)_","_LEXMCEI_","_LEXEX_")" S @LEXND=""
  1. . . . . S ^TMP("LEXRXPRO",$J,"AWRD","ERR")=+($G(^TMP("LEXRXPRO",$J,"AWRD","ERR")))+1
  1. . . . I $L($G(LEXTKN)),+($G(LEXMCI))>0,+($G(LEXMCEI))>0,+($G(LEXEX))>0 D
  1. . . . . N LEXND S LEXND="^LEX(757.01,"_LEXEX_",4,""B"","_$$QQ(LEXTKN)_")" Q:$D(@LEXND)
  1. . . . . S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_+LEXMCEI_")" Q:$D(@LEXND)
  1. . . . . S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_+LEXMCEI_","_LEXEX_")" S @LEXND=""
  1. . K ^TMP("LEXTKN",$J)
  1. . ; Supplemental Words
  1. . S LEXSI=0 F S LEXSI=$O(^LEX(757.01,LEXEX,5,LEXSI)) Q:+LEXSI'>0 D
  1. . . N LEXTKN S LEXTKN=$$UP^XLFSTR($G(^LEX(757.01,LEXEX,5,LEXSI,0))) Q:'$L(LEXTKN)
  1. . . I +($G(LEXEACT))>0 K ^LEX(757.01,"AWRD",LEXTKN,+($G(LEXEX)),+($G(LEXMCEI)),+($G(LEXSI))) Q
  1. . . N LEXND S LEXND="^LEX(757.01,"_LEXEX_",4,""B"","_$$QQ(LEXTKN)_")" Q:$D(@LEXND)
  1. . . I $D(LEXUNQ) S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_+LEXEX_")" Q:$D(@LEXND)
  1. . . S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_+LEXEX_","_+LEXMCEI_","_LEXSI_")" S @LEXND=""
  1. . . S LEXND="^LEX(757.01,""AWRD"","_$$QQ(LEXTKN)_","_+LEXEX_","_+LEXMCEI_","_LEXSI_")" I '$D(@LEXND) D
  1. . . . N LEXND,LEXUNQ S LEXERR=+($G(LEXERR))+1
  1. . . . S ^TMP("LEXRXERR",$J,"AWRD",0)=$G(^TMP("LEXRXERR",$J,"AWRD",0))+1
  1. . . . S ^TMP("LEXRXERR",$J,"AWRD",2)=$G(^TMP("LEXRXERR",$J,"AWRD",2))+1
  1. . . . S ^TMP("LEXRXERR",$J,"AWRD",2,0)="Missing supplemental word in ""AWRD"" index"
  1. . . . S LEXND="^TMP(""LEXRXERR"","_$J_",""AWRD"",2,""ERR"","_$$QQ(LEXTKN)_","_+LEXEX_","_+LEXMCEI_","_+LEXSI_")" S @LEXND=""
  1. . . . S ^TMP("LEXRXPRO",$J,"AWRD","ERR")=+($G(^TMP("LEXRXPRO",$J,"AWRD","ERR")))+1
  1. . ; Linked Words
  1. . I $D(^LEX(757.05,"AEXP",LEXEX)) D
  1. . . N LEXRI S LEXRI=0
  1. . . F S LEXRI=$O(^LEX(757.05,"AEXP",LEXEX,LEXRI)) Q:+LEXRI=0 D
  1. . . . N LEXTKN,LEXMC,LEXND S LEXTKN=$$UP^XLFSTR($P(^LEX(757.05,LEXRI,0),U,1)) Q:'$L(LEXTKN)
  1. . . . I +($G(LEXEACT))>0 K ^LEX(757.01,"AWRD",LEXTKN,+($G(LEXEX)),"LINKED") Q
  1. . . . S LEXND="^LEX(757.01,"_LEXEX_",4,""B"","_$$QQ(LEXTKN)_")" Q:$D(@LEXND)
  1. . . . S LEXMC=$P($G(^LEX(757.01,LEXEX,1)),U,1) Q:+LEXMC'>0
  1. . . . I $D(LEXUNQ) S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_LEXEX_")" Q:$D(@LEXND)
  1. . . . S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTKN)_","_LEXEX_",""LINKED"")" S @LEXND=""
  1. . . . S LEXND="^LEX(757.01,""AWRD"","_$$QQ(LEXTKN)_","_LEXEX_",""LINKED"")" I '$D(@LEXND) D
  1. . . . . N LEXND,LEXUNQ S LEXERR=+($G(LEXERR))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",0)=$G(^TMP("LEXRXERR",$J,"AWRD",0))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",3)=$G(^TMP("LEXRXERR",$J,"AWRD",3))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",3,0)="Missing linked word in ""AWRD"" index"
  1. . . . . S LEXND="^TMP(""LEXRXERR"","_$J_",""AWRD"",3,""ERR"","_$$QQ(LEXTKN)_","_+LEXEX_",""LINKED"")" S @LEXND=""
  1. . . . . S ^TMP("LEXRXPRO",$J,"AWRD","ERR")=+($G(^TMP("LEXRXPRO",$J,"AWRD","ERR")))+1
  1. ; Replace
  1. N LEXCHR,LEXCHRS,LEXCTL,LEXDATA,LEXIT,LEXNOD,LEXRT,LEXRT1,LEXRT2 D CHRS
  1. S LEXIT=0,LEXCHR="" F S LEXCHR=$O(LEXCHRS(LEXCHR)) Q:'$L(LEXCHR) D
  1. . S:$L(LEXCHR) ^TMP("LEXRXPRO",$J,"AWRD","REPLACE","CHR")=LEXCHR
  1. . N LEXLTKN,LEXTTKN,LEXTK1,LEXTK2,LEXTK3,LEXTK4,LEXTK5,LEXTK,LEXIT
  1. . S (LEXTK1,LEXTK2,LEXTK3,LEXTK4,LEXTK5)="",LEXIT=0
  1. . S LEXTK1=$C($A(LEXCHR)-1)_"~",LEXTK2=LEXCHR,LEXTK3=LEXCHR_" "
  1. . S:LEXCHR?1N LEXTK4=LEXCHR-.00000001 S:LEXCHR="." LEXTK5=.00000001
  1. . F LEXTK=LEXTK1,LEXTK2,LEXTK3,LEXTK4,LEXTK5 D
  1. . . Q:'$L(LEXTK) N LEXIT S LEXIT=0 S (LEXLTKN,LEXTTKN)=LEXTK
  1. . . F S LEXLTKN=$O(^LEX(757.01,"AWRD",LEXLTKN)) D Q:LEXIT>0
  1. . . . S:$L(LEXLTKN) ^TMP("LEXRXPRO",$J,"AWRD","REPLACE","WORD")=LEXLTKN
  1. . . . S:'$L(LEXLTKN) LEXIT=1
  1. . . . S:LEXCHR'?1N&($E(LEXLTKN,1)'=LEXCHR) LEXIT=1
  1. . . . S:LEXCHR?1N&($E(LEXLTKN,1)'?1N) LEXIT=1
  1. . . . Q:LEXIT>0
  1. . . . N LEXND
  1. . . . I $L(LEXLTKN) Q:$D(^TMP("LEXRXAWRDU",$J,LEXLTKN))
  1. . . . S:$L(LEXLTKN) ^TMP("LEXRXAWRDU",$J,LEXLTKN)=""
  1. . . . N LEXDATA,LEXND
  1. . . . I $D(LEXFUL) D
  1. . . . . N LEXNOD,LEXCTL,LEXIT,LEXND S LEXIT=0
  1. . . . . S LEXNOD="^LEX(757.01,""AWRD"","""_LEXLTKN_""")"
  1. . . . . S LEXCTL="^LEX(757.01,""AWRD"","""_LEXLTKN_""","
  1. . . . . F S LEXNOD=$Q(@LEXNOD) D Q:LEXIT>0
  1. . . . . . S:'$L(LEXNOD) LEXIT=1 S:LEXNOD'[LEXCTL LEXIT=1
  1. . . . . . Q:LEXIT>0 N LEXFUL
  1. . . . ; Error: Word in LEX and not in TMP
  1. . . . S LEXND="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXLTKN)_")"
  1. . . . I '$D(@LEXND) D
  1. . . . . N LEXND S LEXERR=+($G(LEXERR))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",0)=$G(^TMP("LEXRXERR",$J,"AWRD",0))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",7)=$G(^TMP("LEXRXERR",$J,"AWRD",7))+1
  1. . . . . S ^TMP("LEXRXERR",$J,"AWRD",7,0)="Invalid word found in ""AWRD"" index"
  1. . . . . S LEXND="^TMP(""LEXRXERR"","_$J_",""AWRD"",7,""ERR"","_$$QQ(LEXLTKN)_")" S @LEXND=""
  1. . . . . S ^TMP("LEXRXPRO",$J,"AWRD","ERR")=+($G(^TMP("LEXRXPRO",$J,"AWRD","ERR")))+1
  1. . . . S LEXND="^LEX(757.01,""AWRD"","_$$QQ(LEXLTKN)_")" K @LEXND
  1. . . S LEXIT=0 F S LEXTTKN=$O(^TMP("LEXRXAWRD",$J,LEXTTKN)) D Q:LEXIT>0
  1. . . . S:'$L(LEXTTKN) LEXIT=1
  1. . . . S:LEXCHR'?1N&($E(LEXTTKN,1)'=LEXCHR) LEXIT=1
  1. . . . S:LEXCHR?1N&($E(LEXTTKN,1)'?1N) LEXIT=1
  1. . . . Q:LEXIT>0
  1. . . . N LEXND,LEXNOD,LEXCTL,LEXKEY
  1. . . . S LEXNOD="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTTKN)_")"
  1. . . . S LEXCTL="^TMP(""LEXRXAWRD"","_$J_","_$$QQ(LEXTTKN)_","
  1. . . . F S LEXNOD=$Q(@LEXNOD) Q:'$L(LEXNOD)!(LEXNOD'[LEXCTL) D
  1. . . . . ; Copy Index from ^TMP to ^LEX
  1. . . . . ; ^TMP("LEXRXAWRD",$J,WORD,MCIEN,EXIEN,SPIEN)
  1. . . . . ; ^LEX(757.01,"AWRD",WORD,MCIEN,EXIEN,SPIEN)
  1. . . . . N LEXND,LEXTKN,LEXMC,LEXEX,LEXSP,LEXTND,LEXKEY
  1. . . . . S LEXTND=$TR(LEXNOD,"""","")
  1. . . . . S LEXTKN=$P(LEXTND,",",3)
  1. . . . . S LEXMC=$P(LEXTND,",",4) Q:+LEXMC'>0
  1. . . . . S LEXEX=$P($P(LEXNOD,",",5),")",1) Q:'$L(LEXEX)
  1. . . . . S LEXSP=$P($P(LEXTND,",",6),")",1)
  1. . . . . S LEXND="^LEX(757.01,""AWRD"","_$$QQ(LEXTKN)
  1. . . . . S LEXND=LEXND_","_LEXMC_","_$$QQ(LEXEX)
  1. . . . . S:$L(LEXSP) LEXND=LEXND_","_$$QQ(LEXSP)
  1. . . . . S LEXND=LEXND_")",LEXKEY=$TR(LEXND,"""","")
  1. . . . . S @LEXND="" S:'$D(^TMP("LEXRXAWRDK",$J,LEXKEY)) LEXNDS=+($G(LEXNDS))+1
  1. . . . . S ^TMP("LEXAWRDK",$J,LEXKEY)="",^TMP("LEXRXREP",$J,"AWRD")=+($G(LEXNDS))
  1. . ; Repeat for all characters
  1. K ^TMP("LEXRXAWRDU",$J),^TMP("LEXRXAWRDK",$J) S ^TMP("LEXRXERR",$J,"AWRD",0)=+($G(^TMP("LEXRXERR",$J,"AWRD",0)))
  1. S LEXFI="757.01",LEXERR=$S(+LEXERR>0:LEXERR,1:"") I '$D(ZTQUEUED) W !,$J(LEXERR,5),?8,LEXFI,?19,LEXIDX,?30,LEXIDXT
  1. S LEXEND=$$NOW^XLFDT,LEXELP=$$FMDIFF^XLFDT(LEXEND,LEXBEG,3)
  1. S:$E(LEXELP,1)=" "&($E(LEXELP,3)=":") LEXELP=$TR(LEXELP," ","0")
  1. D REP^LEXRXXS(LEXFI,LEXFI,LEXIDX,LEXNDS,LEXERR,LEXIDXT,LEXELP)
  1. S:+LEX0P3>0 $P(^LEX(757.01,0),"^",3)=LEX0P3 S:+LEX0P4>0 $P(^LEX(757.01,0),"^",4)=LEX0P4
  1. Q
  1. ;
  1. ; Miscellaneous
  1. SCT(X) ; String Count (exact string)
  1. S:$D(ZTQUEUED) ZTREQ="@" N LEX,LEXA,LEXE,LEXIT,LEXM,LEXN,LEXO,LEXOUT,LEXP,LEXRT,LEXRT2,LEXS,LEXT,LEXTKN
  1. S LEXS=$$UP^XLFSTR($G(X)) Q:'$L(LEXS) 0 S LEXRT="" S:$D(^LEX(757.01,"AWRD")) LEXRT="^LEX(757.01,""AWRD"","
  1. S:$D(^TMP("LEXRXAWRD",$J)) LEXRT="^TMP(""LEXRXAWRD"","_$J_"," Q:'$L(LEXRT) 0 S (LEXA,LEXN,LEXT)=0
  1. S:$L(LEXS)>1 LEXO=$E(LEXS,1,($L(LEXS)-1))_$C(($A($E(LEXS,$L(LEXS)))-1))_"~"
  1. S:$L(LEXS)=1 LEXO=$C(($A(LEXS)-1))_"~" S LEXIT=0
  1. F S LEXO=$O(@(LEXRT_""""_LEXO_""")")) D Q:LEXIT>0
  1. . S:'$L(LEXO) LEXIT=1 S:$E(LEXO,1,$L(LEXS))'=LEXS LEXIT=1
  1. . Q:LEXIT>0 N LEXM S LEXM=0 F S LEXM=$O(@(LEXRT_""""_LEXO_""","_LEXM_")")) Q:+LEXM'>0 D
  1. . . N LEXE,LEXRT2 S LEXE=0,LEXRT2=LEXRT_""""_LEXO_""","_LEXM_","
  1. . . F S LEXE=$O(@(LEXRT2_LEXE_")")) Q:+LEXE'>0 S LEXT=LEXT+1,LEXA=LEXA+1
  1. I $TR(LEXS,".","")?1N.N,$L(LEXS,".")'>2 I +LEXS=LEXS D
  1. . N LEXFC S LEXFC=$E(LEXS,1) S:$E(LEXS,1)?1N LEXO=LEXS-.000000001
  1. . S:$E(LEXS,1)="." LEXO=.000000001 S LEXIT=0
  1. . F S LEXO=$O(@(LEXRT_+LEXO_")")) D Q:LEXIT>0 Q:'$L(LEXO)
  1. . . S:LEXFC?1N&($E(LEXO,1)'?1N) LEXIT=1
  1. . . S:LEXFC?1P&($E(LEXO,1)'?1P) LEXIT=1 Q:LEXIT>0
  1. . . Q:'$L(LEXO) Q:$E(LEXO,1,$L(LEXS))'=LEXS N LEXM S LEXM=0
  1. . . F S LEXM=$O(@(LEXRT_+LEXO_","_LEXM_")")) Q:+LEXM'>0 D
  1. . . . N LEXE,LEXRT2 S LEXE=0,LEXRT2=LEXRT_+LEXO_","_LEXM_","
  1. . . . F S LEXE=$O(@(LEXRT2_LEXE_")")) Q:+LEXE'>0 S LEXT=LEXT+1,LEXN=LEXN+1
  1. S X=LEXT
  1. Q X
  1. QQ(X) ; Set Quotes
  1. N LEXS,LEXT S LEXS=$TR($G(X),"""",""),LEXT=0
  1. S:$TR(LEXS,".","")'?1N.N LEXT=1 I $TR(LEXS,".","")?1N.N S:$L(+LEXS)'=$L(LEXS) LEXT=1
  1. S X=LEXS S:LEXT=1 X=""""_LEXS_""""
  1. Q X
  1. CHRS ; Get Characters - Sets LEXCHRS
  1. N LEXCHR,LEXRT,LEXRT1,LEXRT2,LEXTK K LEXCHRS S LEXRT1="^LEX(757.01,""AWRD"","
  1. S LEXRT2="^TMP(""LEXRXAWRD"","_$J_"," F LEXRT=LEXRT1,LEXRT2 D
  1. . N LEXTK S LEXTK="#" F S LEXTK=$O(@(LEXRT_""""_LEXTK_""")")) Q:'$L(LEXTK) D
  1. . . N LEXCHR S LEXCHR=$E($TR(LEXTK," ",""),1) S LEXTK=$E(LEXTK,1)_"~"
  1. . . S:$L(LEXCHR) LEXCHRS(LEXCHR)=""
  1. Q
  1. CLR ; Clear
  1. Q
  1. KGBL ; Kill Global Arrays
  1. K:'$D(LEXTEST) ^TMP("LEXRXASL",$J),^TMP("LEXRXASLU",$J),^TMP("LEXRXAWRD",$J),^TMP("LEXRXAWRDU",$J)
  1. K:'$D(LEXTEST) ^TMP("LEXRXPRO",$J),^TMP("LEXRXERR",$J),^TMP("LEXRXREP",$J),^TMP("LEXTKN",$J),^TMP("LEXRXAWRDK",$J)
  1. K:+($G(LEXRXTMP))'>0&('$D(LEXTEST)) ^TMP("LEXRX",$J)
  1. Q
  1. ERRS ; Display Errors
  1. N LEXEC,LEXEN,LEXET,LEXIX,LEXTC,LEXTT S (LEXTC,LEXTT)=0 F LEXIX="AWRD","ASL" D
  1. . N LEXEN,LEXET,LEXEC S (LEXEN,LEXET,LEXEC)=0
  1. . F S LEXEN=$O(^TMP("LEXRXERR",$J,LEXIX,LEXEN)) Q:+LEXEN'>0 D
  1. . . S LEXET=LEXET+$G(^TMP("LEXRXERR",$J,LEXIX,LEXEN))
  1. . S:+LEXET>0 LEXTC=LEXTC+1 Q:+LEXET'>0 W !,"Errors in Index """,LEXIX,"""",!
  1. . S LEXEN=0 F S LEXEN=$O(^TMP("LEXRXERR",$J,LEXIX,LEXEN)) Q:+LEXEN'>0 D
  1. . . Q:$G(^TMP("LEXRXERR",$J,LEXIX,LEXEN))'>0 S LEXEC=LEXEC+1
  1. . . W !,$J($G(^TMP("LEXRXERR",$J,LEXIX,LEXEN)),10)," "
  1. . . W $G(^TMP("LEXRXERR",$J,LEXIX,LEXEN,0)) S LEXTT=LEXTT+$G(^TMP("LEXRXERR",$J,LEXIX,LEXEN))
  1. . W:LEXEC>1&(LEXET>0) !,$J(LEXET,10)," """,LEXIX,""" Index Total"
  1. W:LEXTC>1&(LEXTT>0) !,$J(LEXTT,10)," Total Errors"
  1. Q
  1. LEX ; Lexicon Counts
  1. N LEXSTR,LEXSTN,LEXTKN,LEXTKT,LEXNN,LEXNC,LEXTNT
  1. S LEXTKN="" F S LEXTKN=$O(^LEX(757.01,"AWRD",LEXTKN)) Q:'$L(LEXTKN) S LEXTKT=+($G(LEXTKT))+1
  1. S LEXNN="^LEX(757.01,""AWRD"")",LEXNC="^LEX(757.01,""AWRD"","
  1. F S LEXNN=$Q(@LEXNN) Q:'$L(LEXNN)!(LEXNN'[LEXNC) S LEXTNT=+($G(LEXTNT))+1
  1. S LEXTKN="" F S LEXTKN=$O(^LEX(757.01,"ASL",LEXTKN)) Q:'$L(LEXTKN) S LEXSTR=+($G(LEXSTR))+1
  1. S LEXNN="^LEX(757.01,""ASL"")",LEXNC="^LEX(757.01,""ASL"","
  1. F S LEXNN=$Q(@LEXNN) Q:'$L(LEXNN)!(LEXNN'[LEXNC) S LEXSTN=+($G(LEXSTN))+1
  1. W:(+($G(LEXTKT))+($G(LEXTNT))+($G(LEXSTR))>0) !
  1. W:'$D(ZTQUEUED)&(+($G(LEXTKT))>0) !,"AWRD Words: ",$J(+($G(LEXTKT)),7)
  1. w:'$D(ZTQUEUED)&(+($G(LEXTNT))>0) !,"AWRD Nodes: ",$J(+($G(LEXTNT)),7)
  1. W:'$D(ZTQUEUED)&(+($G(LEXSTR))>0) !,"ASL Strings: ",$J(+($G(LEXSTR)),7)
  1. Q
  1. DEA(X) ; Expression/Concept Deactive
  1. N LEXEACT,LEXNAM,LEXTEST,ZTQUEUED,LEXA,LEXEA,LEXEIEN,LEXMA,LEXMIEN,LEXN S LEXEIEN=+($G(X)),LEXN=$G(^LEX(757.01,+LEXEIEN,1))
  1. S LEXEA=+($P(LEXN,"^",5)),LEXMIEN=+LEXN,LEXN=+($P(LEXN,"^",2)) Q:LEXN=1&(LEXEA>0) 1 Q:LEXN=1&(LEXEA'>0) 0
  1. S LEXMIEN=+($G(^LEX(757,+LEXMIEN,0))),LEXMA=+($P($G(^LEX(757.01,+LEXMIEN,1)),"^",5)) Q:(LEXEA+LEXMA)>0 1
  1. Q 0