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

LEXXGP3.m

Go to the documentation of this file.
  1. LEXXGP3 ;ISL/KER - Global Post-Install (Repair Subsets) ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**86,103**;Sep 23, 1996;Build 2
  1. ;
  1. ;
  1. ; Global Variables
  1. ; ^TMP("LEXAWRD") SACC 2.3.2.5.1
  1. ; ^TMP("LEXAWRDU") SACC 2.3.2.5.1
  1. ; ^TMP("LEXSUB") SACC 2.3.2.5.1
  1. ; ^TMP("LEXTKN") SACC 2.3.2.5.1
  1. ; ^TMP("LEXXGPDAT") SACC 2.3.2.5.1
  1. ; ^TMP("LEXXGPMSG") SACC 2.3.2.5.1
  1. ; ^TMP("LEXXGPRPT") SACC 2.3.2.5.1
  1. ; ^TMP("LEXXGPTIM") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$S^%ZTLOAD ICR 10063
  1. ; ^DIC ICR 10006
  1. ; IXALL^DIK ICR 10013
  1. ; $$GET1^DIQ ICR 2056
  1. ; $$UP^XLFSTR ICR 10104
  1. ; ^XMD ICR 10070
  1. ;
  1. ; Local Variables NEWed or KILLed in LEXXGP1
  1. ; ZTSK
  1. ;
  1. ; Special Variables set in the Post-Install Routines
  1. ;
  1. ; LEXMAIL Set and Killed by the developer, used to
  1. ; report the timing of the task and
  1. ; send to the user by MailMan message
  1. ;
  1. ; LEXHOME Set and Killed by the developer in the
  1. ; post-install, used to send the timing
  1. ; message to G.LEXINS@FO-SLC.DOMAIN.EXT
  1. ; (see entry point POST2)
  1. ;
  1. Q
  1. SUB ; Subset file Indexes Aaaa
  1. N LEXBEG,LEXBEGD,LEXBEGT,LEXDF,LEXELP,LEXEND,LEXENDD,LEXENDT
  1. N LEXTMP,LEXTXT S LEXTXT="Subset Indexes"
  1. S:'$D(LEXQUIT) LEXQUIT="SUB" K ^TMP("LEXSUB",$J)
  1. S LEXBEG=$$BEG^LEXXGP1 D ASUBB H 1 S LEXEND=$$END^LEXXGP1
  1. D SAV(LEXBEG,LEXEND,LEXTXT) S LEXELP=$$ELP^LEXXGP1(LEXBEG,LEXEND)
  1. S LEXBEGD=$$ED^LEXXGP1(LEXBEG),LEXBEGT=$$ET^LEXXGP1(LEXBEG),LEXENDT=$$ET^LEXXGP1(LEXEND)
  1. S LEXDF=$$DF^LEXXGP1(LEXBEG),LEXTXT=$G(LEXTXT)_$J(" ",(35-$L($G(LEXTXT))))
  1. S LEXTXT=LEXTXT_LEXDF_" "_LEXBEGT_" "_LEXENDT_" "_LEXELP
  1. S LEXTXT=" "_LEXTXT W:'$D(ZTQUEUED) !,LEXTXT
  1. N ZTQUEUED,LEXTEST
  1. I $G(LEXQUIT)="SUB" D
  1. . D:$D(LEXMAIL) XM
  1. . K ^TMP("LEXAWRD",$J),^TMP("LEXAWRDU",$J),^TMP("LEXSUB",$J),^TMP("LEXTKN",$J)
  1. . K ^TMP("LEXXGPDAT",$J),^TMP("LEXXGPTIM",$J),^TMP("LEXXGPRPT",$J)
  1. . K:'$D(LEXMAIL) ^TMP("LEXXGPMSG",$J)
  1. . K LEXQUIT,ZTQUEUED,LEXMAIL,LEXHOME
  1. Q
  1. ASUBB ; ASUB Word Index Build 11.5 minutes
  1. ; Create the AWRD Index in the ^TMP global
  1. N LEXBEG,LEXBEGD,LEXBEGT,LEXCHK,LEXDF,LEXELP,LEXEND,LEXENDD,LEXENDT,LEXEX
  1. N LEXEXP,LEXTEXP,LEXIDX,LEXMC,LEXMCEI,LEXMCI,LEXRI,LEXSI,LEXSUB
  1. N LEXTKC,LEXTKN,LEXTXT,X
  1. K ^TMP("LEXSUB",$J) S:'$D(LEXQUIT) LEXQUIT="ASUBB"
  1. S LEXBEG=$$BEG^LEXXGP1,LEXSUB=0,LEXTXT="Build 'ASUB' Word Index"
  1. I +($G(ZTSK))>0 S LEXCHK=$$S^%ZTLOAD((LEXTXT_" in file 757.21"))
  1. F S LEXSUB=$O(^LEX(757.21,LEXSUB)) Q:+LEXSUB'>0 D
  1. . N X,LEXEX,LEXEXP,LEXIDX,LEXMCI,LEXMCEI,LEXSI,LEXTKN
  1. . N LEXTKC,LEXNAM,LEXINAM,LEXNOD,LEXRP,LEXTTYP,LEXTEXP S LEXTEXP=0
  1. . S LEXNOD=$G(^LEX(757.21,LEXSUB,0)),LEXEX=+LEXNOD
  1. . S LEXNAM=+($P(LEXNOD,"^",2))
  1. . S LEXNAM=$P($G(^LEXT(757.2,+LEXNAM,0)),"^",2)
  1. . Q:$L(LEXNAM)'=3 S LEXINAM="A"_LEXNAM
  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 LEXTTYP=+($P($G(^LEX(757.01,LEXEX,1)),"^",2))
  1. . S LEXMCEI=$P($G(^LEX(757,LEXMCI,0)),"^",1) Q:+LEXMCEI'>0
  1. . F S LEXTEXP=$O(^LEX(757.01,"AMC",LEXMCI,LEXTEXP)) Q:+LEXTEXP=0 D
  1. . . N LEXEXP,X,LEXIDX,LEXLOOK,LEXEXPT,LEXRP,LEXDEA,LEXTTYP
  1. . . S LEXDEA=$$DEA(+LEXTEXP) Q:LEXDEA>0
  1. . . S LEXTTYP=+($P($G(^LEX(757.01,LEXTEXP,1)),"^",2)) Q:LEXTTYP=8
  1. . . S (LEXEXP,X)=^LEX(757.01,LEXTEXP,0)
  1. . . K ^TMP("LEXTKN",$J) S LEXIDX="" D PTX^LEXTOKN
  1. . . ; Supplemental Words
  1. . . I $D(^LEX(757.01,LEXTEXP,5)) D
  1. . . . N LEXV,LEXEXPT S LEXV=""
  1. . . . F S LEXV=$O(^LEX(757.01,LEXTEXP,5,"B",LEXV)) Q:LEXV="" D
  1. . . . . N LEXC S LEXC=$O(^TMP("LEXTKN",$J," "),-1)+1
  1. . . . . S ^TMP("LEXTKN",$J,LEXC,LEXV)=""
  1. . . . . S ^TMP("LEXTKN",$J,0)=LEXC
  1. . . ; Replacement Words
  1. . . I $D(^LEX(757.05,"AEXP",LEXTEXP)) N LEXRP S LEXRP=0 D
  1. . . . F S LEXRP=$O(^LEX(757.05,"AEXP",LEXTEXP,LEXRP)) Q:+LEXRP'>0 D
  1. . . . . N LEXV,LEXC
  1. . . . . S LEXV=$P(^LEX(757.05,LEXRP,0),U) Q:'$L(LEXV)
  1. . . . . S LEXC=$O(^TMP("LEXTKN",$J," "),-1)+1
  1. . . . . S ^TMP("LEXTKN",$J,LEXC,LEXV)=""
  1. . . . . S ^TMP("LEXTKN",$J,0)=LEXC
  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. . . . . S LEXTKN=$O(^TMP("LEXTKN",$J,LEXTKC,"")) Q:'$L(LEXTKN)
  1. . . . . S ^TMP("LEXSUB",$J,LEXINAM,LEXTKN,LEXSUB)=""
  1. . . K ^TMP("LEXTKN",$J)
  1. K ^TMP("LEXTKN",$J) H 1 S LEXEND=$$END^LEXXGP1 D SAV(LEXBEG,LEXEND,LEXTXT)
  1. S LEXELP=$$ELP^LEXXGP1(LEXBEG,LEXEND),LEXBEGD=$$ED^LEXXGP1(LEXBEG)
  1. S LEXBEGT=$$ET^LEXXGP1(LEXBEG),LEXENDT=$$ET^LEXXGP1(LEXEND),LEXDF=$$DF^LEXXGP1(LEXBEG)
  1. S LEXTXT=$G(LEXTXT)_$J(" ",(35-$L($G(LEXTXT))))
  1. S LEXTXT=LEXTXT_LEXDF_" "_LEXBEGT_" "_LEXENDT_" "_LEXELP
  1. S LEXTXT=" "_LEXTXT W:'$D(ZTQUEUED) !,LEXTXT
  1. D ASUBR N ZTQUEUED,LEXTEST
  1. I $G(LEXQUIT)="ASUBB" D
  1. . D:$D(LEXMAIL) XM
  1. . K ^TMP("LEXAWRD"),^TMP("LEXSUB"),^TMP("LEXTKN")
  1. . K ^TMP("LEXXGPDAT"),^TMP("LEXXGPTIM"),^TMP("LEXXGPRPT")
  1. . K LEXQUIT,ZTQUEUED,LEXMAIL,LEXHOME
  1. Q
  1. ASUBR ; ASUB Word Index Replace 1.5 minutes
  1. N LEX1,LEX2,LEX3,LEX4,LEXBEG,LEXBEGD,LEXBEGT,LEXCHK,LEXCHR,LEXCHRS,LEXIDS
  1. N LEXCMD,LEXCOM,LEXCTL,LEXDF,LEXELP,LEXEND,LEXENDD,LEXENDT
  1. N LEXLWRD,LEXNOD,LEXRT,LEXRT1,LEXRT2,LEXTK,LEXTMP,LEXTWRD
  1. N LEXTXT,LEXID S (LEX1,LEX2,LEX3,LEX4)=0 Q:'$D(LEXQUIT)
  1. S LEXBEG=$$BEG^LEXXGP1,LEXTXT="Replace 'ASUB' Word Index" K LEXIDS
  1. I +($G(ZTSK))>0 S LEXCHK=$$S^%ZTLOAD((LEXTXT_" in file 757.21"))
  1. S LEXTMP=" " F S LEXTMP=$O(^LEX(757.21,LEXTMP)) Q:'$L(LEXTMP) D
  1. . S:$E(LEXTMP,1)="A" LEXIDS(LEXTMP)=""
  1. S LEXTMP=" "
  1. F S LEXTMP=$O(^TMP("LEXSUB",$J,LEXTMP)) Q:'$L(LEXTMP) D
  1. . S:$E(LEXTMP,1)="A" LEXIDS(LEXTMP)=""
  1. S LEXID="" F S LEXID=$O(LEXIDS(LEXID)) Q:'$L(LEXID) D
  1. . ; For Subset Index
  1. . W:'$D(ZTQUEUED)&($D(LEXTEST)) !,LEXID," " S LEX1=LEX1+1
  1. . K LEXCHRS S LEXRT1="^LEX(757.21,"""_LEXID_""","
  1. . S LEXRT2="^TMP(""LEXSUB"","_$J_","""_LEXID_""","
  1. . F LEXRT=LEXRT1,LEXRT2 D
  1. . . N LEXTK S LEXTK=""
  1. . . F S LEXTK=$O(@(LEXRT_""""_LEXTK_""")")) Q:'$L(LEXTK) D
  1. . . . N LEXCHR S LEXCHR=$E($TR(LEXTK," ",""),1)
  1. . . . S LEXTK=$E(LEXTK,1)_"~" S:$L(LEXCHR) LEXCHRS(LEXCHR)=""
  1. . S LEXCHR="" F S LEXCHR=$O(LEXCHRS(LEXCHR)) Q:'$L(LEXCHR) D
  1. . . ; For words beginning with character
  1. . . W:'$D(ZTQUEUED)&($D(LEXTEST)) LEXCHR
  1. . . N LEXLWRD,LEXTWRD,LEXIT
  1. . . S (LEXLWRD,LEXTWRD)=$C($A(LEXCHR)-1)_"~",LEXIT=0
  1. . . F S LEXLWRD=$O(^LEX(757.21,LEXID,LEXLWRD)) D Q:LEXIT>0
  1. . . . S:'$L(LEXLWRD) LEXIT=1 S:$E(LEXLWRD,1)'=LEXCHR LEXIT=1
  1. . . . Q:LEXIT>0 S LEX2=LEX2+1
  1. . . . ; Delete words from the Subset
  1. . . . N LEXNOD,LEXCTL,LEXCMD
  1. . . . S LEXNOD="^LEX(757.21,"""_LEXID_""","""_LEXTWRD_""")"
  1. . . . S LEXCTL="^LEX(757.21,"""_LEXID_""","""_LEXTWRD_""","
  1. . . . F S LEXNOD=$Q(@LEXNOD) Q:'$L(LEXNOD)!(LEXNOD'[LEXCTL) D
  1. . . . . S LEX3=LEX3+1
  1. . . . S LEXCMD="K ^LEX(757.21,"""_LEXID_""","""_LEXLWRD_""")"
  1. . . . X LEXCMD
  1. . . S LEXTWRD=$C($A(LEXCHR)-1)_"~",LEXIT=0
  1. . . F S LEXTWRD=$O(^TMP("LEXSUB",$J,LEXID,LEXTWRD)) D Q:LEXIT>0
  1. . . . S:'$L(LEXTWRD) LEXIT=1 S:$E(LEXTWRD,1)'=LEXCHR LEXIT=1
  1. . . . Q:LEXIT>0 N LEXNOD,LEXCTL
  1. . . . S LEXNOD="^TMP(""LEXSUB"","_$J_","""_LEXID_""","""_LEXTWRD_""")"
  1. . . . S LEXCTL="^TMP(""LEXSUB"","_$J_","""_LEXID_""","""_LEXTWRD_""","
  1. . . . F S LEXNOD=$Q(@LEXNOD) Q:'$L(LEXNOD)!(LEXNOD'[LEXCTL) D
  1. . . . . ; Copy Index from ^TMP to ^LEX
  1. . . . . N LEXCMD S LEXCMD="S ^LEX(757.21,"""_LEXID_""","
  1. . . . . S LEXCMD=LEXCMD_$P(LEXNOD,",",4,229)_"="""""
  1. . . . . X LEXCMD S LEX4=LEX4+1
  1. . . ; Repeat for all characters
  1. . ; Repeat for all Subset Indexes
  1. H 1 S LEXEND=$$END^LEXXGP1 D SAV(LEXBEG,LEXEND,LEXTXT)
  1. S LEXELP=$$ELP^LEXXGP1(LEXBEG,LEXEND),LEXBEGD=$$ED^LEXXGP1(LEXBEG)
  1. S LEXBEGT=$$ET^LEXXGP1(LEXBEG),LEXENDT=$$ET^LEXXGP1(LEXEND),LEXDF=$$DF^LEXXGP1(LEXBEG)
  1. S LEXTXT=$G(LEXTXT)_$J(" ",(35-$L($G(LEXTXT))))
  1. S LEXTXT=LEXTXT_LEXDF_" "_LEXBEGT_" "_LEXENDT_" "_LEXELP
  1. S LEXTXT=" "_LEXTXT W:'$D(ZTQUEUED) !,LEXTXT
  1. I LEX1>0,$D(LEXFUL) D
  1. . S LEXCOM=LEX1_" Subset"_$S(LEX1>1:"s",1:"")
  1. . D SAV(LEXBEG,"","",LEXCOM)
  1. . W:'$D(ZTQUEUED) !," ",LEXCOM
  1. I LEX2>0,$D(LEXFUL) D
  1. . S LEXCOM=LEX2_" Word"_$S(LEX2>1:"s",1:"")
  1. . D SAV(LEXBEG,"","",LEXCOM)
  1. . W:'$D(ZTQUEUED) !," ",LEXCOM
  1. I LEX4>0,$D(LEXFUL) D
  1. . S LEXCOM=LEX4_" Subset Index Node"_$S(LEX4>1:"s",1:"")
  1. . D SAV(LEXBEG,"","",LEXCOM)
  1. . W:'$D(ZTQUEUED) !," ",LEXCOM
  1. N ZTQUEUED,LEXTEST,LEXFUL
  1. Q
  1. ;
  1. ; MailMan
  1. XM ; Mail Message
  1. N LEX1,LEX2,LEXB,LEXC,LEXD,LEXE,LEXJ,LEXMAIL,LEXN
  1. N LEXPRE,LEXNEW,LEXS,LEXT,LEXX,LEXI,LEXNM,XCNP
  1. N XMDUZ,XMSCR,XMSUB,XMTEXT,XMY,XMZ
  1. D XMG K ^TMP("LEXXGPMSG",$J) N LEXI S LEXI=0
  1. F S LEXI=$O(^TMP("LEXXGPRPT",$J,LEXI)) Q:+LEXI'>0 D
  1. . N LEXN,LEXT S LEXN=$O(^TMP("LEXXGPMSG",$J," "),-1)+1
  1. . S LEXT=$G(^TMP("LEXXGPRPT",$J,LEXI))
  1. . S ^TMP("LEXXGPMSG",$J,+LEXN)=$G(LEXT),^TMP("LEXXGPMSG",$J,0)=LEXN
  1. D:$O(^TMP("LEXXGPMSG",$J,0))>0 XMS
  1. Q
  1. XMG ; Get Data for Message
  1. K ^TMP("LEXXGPRPT",$J)
  1. N LEXO1,LEXTXT,LEXLN,LEXPDT S LEXPDT="",(LEXLN,LEXO1)=0
  1. F S LEXO1=$O(^TMP("LEXXGPDAT",$J,LEXO1)) Q:+LEXO1'>0 D
  1. . N LEXO2 S LEXO2="" F S LEXO2=$O(^TMP("LEXXGPDAT",$J,LEXO1,LEXO2)) Q:+LEXO2'>0 D
  1. . . N LEXN,LEXBEG,LEXBEGD,LEXDF,LEXBEGT,LEXEND,LEXENDD,LEXENDT,LEXTXT
  1. . . N LEXCOM,LEXHDR,LEXELPT
  1. . . S LEXNOD=$G(^TMP("LEXXGPDAT",$J,LEXO1,LEXO2)),LEXLN=LEXLN+1
  1. . . S LEXBEG=$P(LEXNOD,"^",1),LEXD=$P(LEXBEG,".",1),LEXCOM=$P(LEXNOD,"^",8)
  1. . . I $L(LEXBEG),LEXD?7N,$L(LEXCOM) D Q
  1. . . . N LEXN S LEXN=$O(^TMP("LEXXGPRPT",$J," "),-1)+1
  1. . . . S ^TMP("LEXXGPRPT",$J,+LEXN)=" "_LEXCOM
  1. . . S LEXDF=$$DF^LEXXGP1(LEXBEG)
  1. . . S LEXEND=$P(LEXNOD,"^",2)
  1. . . S LEXBEGD=$P(LEXNOD,"^",3)
  1. . . S LEXBEGT=$P(LEXNOD,"^",4)
  1. . . S LEXENDT=$P(LEXNOD,"^",5)
  1. . . S LEXELPT=$P(LEXNOD,"^",6)
  1. . . S LEXTXT=$P(LEXNOD,"^",7)
  1. . . S:LEXBEGD=LEXPDT&($L(LEXDF))&(LEXD'["-") LEXBEGD=LEXDF
  1. . . S LEXPDT=$G(LEXBEGD)
  1. . . S LEXTXT=$$FMT^LEXXGP1($G(LEXTXT),LEXBEGD,LEXBEGT,LEXENDT,LEXELPT)
  1. . . I '$D(^TMP("LEXXGPRPT",$J)) D
  1. . . . S ^TMP("LEXXGPRPT",$J,0)=1,^TMP("LEXXGPRPT",$J,1)=" "
  1. . . . N LEXHDR S LEXHDR="Re-Index Repair"
  1. . . . S LEXHDR=$G(LEXHDR)_$J(" ",(35-$L($G(LEXHDR))))_"Date "_" "_"Start "_" "_"Finish "_" "_"Elapsed "
  1. . . . S LEXHDR=" "_LEXHDR S ^TMP("LEXXGPRPT",$J,0)=2,^TMP("LEXXGPRPT",$J,2)=LEXHDR
  1. . . . S LEXHDR="---------------------------------"
  1. . . . S LEXHDR=$G(LEXHDR)_$J(" ",(35-$L($G(LEXHDR))))_"----------"_" "_"--------"_" "_"--------"_" "_"--------"
  1. . . . S LEXHDR=" "_LEXHDR S ^TMP("LEXXGPRPT",$J,0)=3,^TMP("LEXXGPRPT",$J,3)=LEXHDR
  1. . . S LEXN=$O(^TMP("LEXXGPRPT",$J," "),-1)+1
  1. . . S ^TMP("LEXXGPRPT",$J,0)=LEXN,^TMP("LEXXGPRPT",$J,LEXN)=" "_LEXTXT
  1. S LEXTXT=$$FMTT^LEXXGP1 I $L(LEXTXT) D
  1. . N LEXN,LEXHDR
  1. . S LEXHDR="---------------------------------"
  1. . S LEXHDR=$G(LEXHDR)_$J(" ",(35-$L($G(LEXHDR))))_"----------"_" "_"--------"_" "_"--------"_" "_"--------"
  1. . S LEXN=$O(^TMP("LEXXGPRPT",$J," "),-1)+1
  1. . S ^TMP("LEXXGPRPT",$J,0)=LEXN,^TMP("LEXXGPRPT",$J,LEXN)=" "_LEXHDR
  1. . S LEXN=$O(^TMP("LEXXGPRPT",$J," "),-1)+1
  1. . S ^TMP("LEXXGPRPT",$J,0)=LEXN,^TMP("LEXXGPRPT",$J,LEXN)=" "_LEXTXT
  1. Q
  1. XMGS ; Show Message
  1. W:$O(^TMP("LEXXGPRPT",$J,0))>0 !
  1. N LEXC S LEXC=0 F S LEXC=$O(^TMP("LEXXGPRPT",$J,LEXC)) Q:+LEXC'>0 D
  1. . N LEXT S LEXT=$G(^TMP("LEXXGPRPT",$J,LEXC)) W:$L(LEXT) !,LEXT
  1. W:$O(^TMP("LEXXGPRPT",$J,0))>0 !!
  1. Q
  1. XMB ; Build Message
  1. K ^TMP("LEXXGPMSG",$J) N LEXI S LEXI=0
  1. F S LEXI=$O(^TMP("LEXXGPRPT",$J,LEXI)) Q:+LEXI'>0 D
  1. . N LEXN,LEXT S LEXN=$O(^TMP("LEXXGPMSG",$J," "),-1)+1
  1. . S LEXT=$G(^TMP("LEXXGPRPT",$J,LEXI))
  1. . S ^TMP("LEXXGPMSG",$J,+LEXN)=$G(LEXT),^TMP("LEXXGPMSG",$J,0)=LEXN
  1. Q
  1. XMS ; Send Message
  1. N XCNP,XMSCR,XMDUZ,XMY,XMZ,XMSUB,XMTEXT,XMDUZ,LEXJ,LEXNM
  1. Q:'$D(^TMP("LEXXGPMSG",$J))
  1. S XMTEXT="^TMP(""LEXXGPMSG"","_$J_",",XMSUB="Repair Major Word Indexes"
  1. S LEXNM=$$GET1^DIQ(200,+($G(DUZ)),.01) S:$D(LEXHOME) XMY(("G.LEXINS@"_$$XMA))=""
  1. S XMY(LEXNM)="",XMDUZ=.5 D ^XMD
  1. I '$D(ZTQUEUED),+($G(XMZ))>0 D
  1. . W !!," Lexicon Index Repair Message #",($G(XMZ))," sent"
  1. XMSQ ; Send Message (Quit)
  1. K ^TMP("LEXXGPMSG",$J),LEXNM
  1. Q
  1. XMA(LEX) ; Message Address
  1. N DIC,DTOUT,DUOUT,X,Y S DIC="^DIC(4.2,",DIC(0)="M",(LEX,X)="FO-SLC.DOMAIN.EXT" D ^DIC Q:+Y>0 LEX
  1. S DIC="^DIC(4.2,",DIC(0)="M",(LEX,X)="ISC-SLC.DOMAIN.EXT" D ^DIC Q:+Y>0 LEX
  1. Q "ISC-SLC.DOMAIN.EXT"
  1. ;
  1. ; Miscellaneous
  1. SAV(LEXBEG,LEXEND,LEXTXT,LEXCOM) ; Save Dates, Times and Text
  1. N LEXTMP,LEXBEGD,LEXBEGT,LEXENDD,LEXENDT,LEXP,LEXD,LEXC,LEXN,LEXELP
  1. S LEXBEG=$G(LEXBEG),LEXCOM=$G(LEXCOM)
  1. S LEXD=$P(LEXBEG,".",1) Q:LEXD'?7N
  1. I $L(LEXD),$L(LEXBEG),$L(LEXCOM) D Q
  1. . N LEXN S LEXN=$O(^TMP("LEXXGPDAT",$J,LEXD," "),-1)+1
  1. . S ^TMP("LEXXGPDAT",$J,LEXD,+LEXN)=LEXBEG_"^^^^^^^"_LEXCOM
  1. S LEXEND=$G(LEXEND),LEXTXT=$G(LEXTXT)
  1. Q:$P(LEXEND,".",1)'?7N Q:'$L(LEXTXT)
  1. S LEXELP=$$ELP^LEXXGP1(LEXBEG,LEXEND),LEXBEGD=$$ED^LEXXGP1(LEXBEG)
  1. S LEXBEGT=$$ET^LEXXGP1(LEXBEG),LEXENDT=$$ET^LEXXGP1(LEXEND)
  1. S LEXBEGD=$$DF^LEXXGP1(LEXBEG),LEXN=$O(^TMP("LEXXGPDAT",$J,LEXD," "),-1)+1
  1. S LEXTMP=LEXBEG_"^"_LEXEND_"^"_LEXBEGD_"^"_LEXBEGT_"^"_LEXENDT
  1. S LEXTMP=LEXTMP_"^"_LEXELP_"^"_LEXTXT
  1. S ^TMP("LEXXGPDAT",$J,LEXD,+LEXN)=LEXTMP
  1. Q
  1. SSF ; Subsets (Fileman)
  1. N LEX F LEX="AADM","AASS","AATT","ABDS","ACLF","ACLL","ACLS","ACON","ADEN","ADIS","AENL","AENV","AETH","AEVE","AFND","AFOR" K ^LEX(757.21,LEX)
  1. F LEX="AGEO","AIMM","AINA","ALIF","AMAB","ANAM","ANAV","ANUR","AOBJ","AOBS","AOCC","AORG","APER","APLS","APRC","APRD" K ^LEX(757.21,LEX)
  1. F LEX="AQUV","AREC","AREG","AREL","ASCH","ASCT","ASIT","ASOC","ASPC","ASPL","ASTG","ASUB","ATMR","B","C" K ^LEX(757.21,LEX)
  1. N DIK,ZTQUEUED S ZTQUEUED="" S DIK="^LEX(757.21," D IXALL^DIK
  1. Q
  1. DEA(X) ; Expression/Concept Deactive
  1. N 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