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