- LEXRXXM2 ;ISL/KER - Re-Index Miscellaneous (cont) ;08/17/2011
- ;;2.0;LEXICON UTILITY;**81**;Sep 23, 1996;Build 10
- ;
- ; Global Variables
- ; ^TMP("LEXRX") SACC 2.3.2.5.1
- ; ^XTMP("LEXRX") SACC 2.3.2.5.2
- ;
- ; Special Variables
- ; DTIME SACC 2.3.1.5.3
- ;
- ; External References
- ; KILL^%ZTLOAD ICR 10063
- ; STAT^%ZTLOAD ICR 10063
- ; ^DIR ICR 10026
- ; $$FMDIFF^XLFDT ICR 10103
- ; $$NOW^XLFDT ICR 10103
- ;
- Q
- ; Miscellaneous
- CHECK(X) ; Check for Running
- ; Input
- ; None
- ; Output
- ; 0 Task is not Running
- ; 1 Task is Running
- N LEXIS,LEXII,LEXC,LEXCHK S LEXCHK="",LEXIS=$$IS,LEXII=$$II
- I +LEXIS>0,+LEXII>0 D Q
- . N LEXMSG S LEXMSG=$P(LEXII,"^",2)
- . W:$L(LEXMSG) !," ",LEXMSG
- Q:+LEXIS'>0 0 S LEXC=$$PROG^LEXRXXM2 W !
- Q 1
- MON ; Monitor Status of Re-Index
- N LEXC,LEXMON,LEXEXIT,LEXHT,LEXIS,LEXII,LEXNOW S LEXMON=0
- S LEXIS=$$IS,LEXII=$$II I +LEXIS'>0 D Q
- . W !," Lexicon cross-reference repair is not running"
- I +LEXIS>0,+LEXII>0 D Q
- . N LEXMSG S LEXMSG=$P(LEXII,"^",2)
- . W:$L(LEXMSG) !," ",LEXMSG
- W !!," Entering an Up-Arrow ""^"" to exit"
- S (LEXMON,LEXEXIT)=0
- F D Q:+LEXEXIT>0
- . N LEXC S LEXEXIT=$$PA(5) S LEXMON=LEXMON+1
- . S LEXC=$$PROG^LEXRXXM2 S:LEXC'>0 LEXEXIT=1
- S LEXNOW=$$IS I +($G(LEXIS))>0,+($G(LEXNOW))'>0 D
- . W !!," Lexicon cross-reference repair/re-index completed",!
- . S LEXEXIT=$$PA(1)
- Q
- PA(X) ; Pause
- N DTIME,DIR,DTOUT,DUOUT,DIRUT,DIROUT,LEXHT,Y S LEXHT=+($G(X))
- S:+LEXHT'>0 LEXHT=2 S DTIME=LEXHT
- S DIR(0)="FAO",(DIR("?"),DIR("??"))="",DIR("A")=""
- S DIR("PRE")="S:X[""?"" X=""^""" D ^DIR
- S:$D(DUOUT)!($D(DIROUT)) X="^" S:X'["^" X=0 S:X["^" X=1
- Q X
- IS(X) ; Task is Running
- N LEXO,LEXTSK,ZTSK,LEXMSG S LEXO="LEXRW~",LEXMSG=""
- F S LEXO=$O(^XTMP(LEXO)) Q:'$L(LEXO)!($E(LEXO,1,5)'="LEXRX") D
- . S LEXTSK=$G(^XTMP(LEXO,1)) Q:+LEXTSK'>0 N ZTSK S ZTSK=+LEXTSK
- . D STAT^%ZTLOAD Q:+($G(ZTSK(0)))'>0
- . I +($G(ZTSK(1)))>2,+($G(ZTSK(1)))'=5 D Q
- . . N ZTSK S ZTSK=+LEXTSK
- . . D:+($G(ZTSK(1)))'=5 KILL^%ZTLOAD
- . . K ^XTMP(LEXO)
- . S X=+($G(X))+1
- S X=+($G(X))
- Q X
- II(X) ; Inactive and Interrupted
- N LEXO,LEXTSK,ZTSK,LEXMSG S LEXO="LEXRW~",LEXMSG=""
- F S LEXO=$O(^XTMP(LEXO)) Q:'$L(LEXO)!($E(LEXO,1,5)'="LEXRX") D Q:$L(LEXMSG)
- . S LEXTSK=$G(^XTMP(LEXO,1)) Q:+LEXTSK'>0
- . N ZTSK S ZTSK=+LEXTSK
- . D STAT^%ZTLOAD Q:+($G(ZTSK(0)))'>0
- . S:+($G(ZTSK(1)))=5 LEXMSG="1^Task "_ZTSK_" was interrupted and is inactive"
- S X=$G(LEXMSG) S:'$L(X) X=0
- Q X
- PROG(X) ; Progress
- N LEXBEG,LEXBEGE,LEXBEGD,LEXUPD,LEXNAM,LEXO,LEXUPDE,LEXUPDD,LEXDES
- N LEXACT,LEXCUR,LEXTASK,LEXTSK,LEXNOW,LEXND S X=0
- S LEXO="LEXRW~" K LEXTASK
- F S LEXO=$O(^XTMP(LEXO)) Q:'$L(LEXO)!($E(LEXO,1,5)'="LEXRX") D
- . S LEXNAM=LEXO,LEXTSK=$G(^XTMP(LEXNAM,1))
- . Q:+LEXTSK'>0 N ZTSK S ZTSK=+LEXTSK
- . D STAT^%ZTLOAD Q:+($G(ZTSK(0)))'>0
- . I +($G(ZTSK(1)))>2 D Q
- . . N ZTSK S ZTSK=+LEXTSK
- . . D KILL^%ZTLOAD K ^XTMP(LEXNAM)
- . S LEXNOW=$$NOW^XLFDT,LEXND=$G(^XTMP(LEXNAM,0))
- . S LEXBEG=$P(LEXND,"^",3),LEXDES=$P(LEXND,"^",4)
- . Q:'$L(LEXDES)
- . S LEXTSK=$G(^XTMP(LEXNAM,1)),LEXND=$G(^XTMP(LEXNAM,2))
- . S LEXUPD=$P(LEXND,"^",1),LEXACT=$P(LEXND,"^",2)
- . S LEXBEGE=$$ED^LEXRXXM(LEXBEG),LEXUPDE=$$ED^LEXRXXM(LEXUPD)
- . S LEXBEGD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
- . S LEXUPDD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
- . S:$E(LEXBEGD,1)=" "&($E(LEXBEGD,3)=":") LEXBEGD=$TR(LEXBEGD," ","0")
- . S:$E(LEXUPDD,1)=" "&($E(LEXUPDD,3)=":") LEXUPDD=$TR(LEXUPDD," ","0")
- . W:$L($G(IOF))&('$D(LEXCHK)) @IOF I +($G(ZTSK(1)))=1 D Q
- . . W !!," ",LEXDES
- . . W !," The task is scheduled, waiting for an I/O device, a volume"
- . . W !," set link, or a partition in memory" S X=+($G(X))+1
- . I +($G(ZTSK(1)))=2 D Q
- . . W !!," Repair/Re-Index is in progress" S X=+($G(X))+1
- . . W !,?3,LEXDES W:$L(LEXBEGE) ?49,"Started: ",LEXBEGE
- . . I $L(LEXACT) D
- . . . W !,?5,LEXACT
- . . . W:$L(LEXUPDE) ?49,"Current: ",LEXUPDE
- . . W:$L(LEXBEGD)&(+($G(LEXMON))'>0) !,?49,"Running: ",LEXBEGD
- . . W:$L(LEXBEGD)&(+($G(LEXMON))>0) !,?7,"#",+($G(LEXMON)),?49,"Running: ",LEXBEGD
- S X=+($G(X))
- Q X
- CLR ; Clear
- Q
- LEXRXXM2 ;ISL/KER - Re-Index Miscellaneous (cont) ;08/17/2011
- +1 ;;2.0;LEXICON UTILITY;**81**;Sep 23, 1996;Build 10
- +2 ;
- +3 ; Global Variables
- +4 ; ^TMP("LEXRX") SACC 2.3.2.5.1
- +5 ; ^XTMP("LEXRX") SACC 2.3.2.5.2
- +6 ;
- +7 ; Special Variables
- +8 ; DTIME SACC 2.3.1.5.3
- +9 ;
- +10 ; External References
- +11 ; KILL^%ZTLOAD ICR 10063
- +12 ; STAT^%ZTLOAD ICR 10063
- +13 ; ^DIR ICR 10026
- +14 ; $$FMDIFF^XLFDT ICR 10103
- +15 ; $$NOW^XLFDT ICR 10103
- +16 ;
- +17 QUIT
- +18 ; Miscellaneous
- CHECK(X) ; Check for Running
- +1 ; Input
- +2 ; None
- +3 ; Output
- +4 ; 0 Task is not Running
- +5 ; 1 Task is Running
- +6 NEW LEXIS,LEXII,LEXC,LEXCHK
- SET LEXCHK=""
- SET LEXIS=$$IS
- SET LEXII=$$II
- +7 IF +LEXIS>0
- IF +LEXII>0
- Begin DoDot:1
- +8 NEW LEXMSG
- SET LEXMSG=$PIECE(LEXII,"^",2)
- +9 IF $LENGTH(LEXMSG)
- WRITE !," ",LEXMSG
- End DoDot:1
- QUIT
- +10 IF +LEXIS'>0
- QUIT 0
- SET LEXC=$$PROG^LEXRXXM2
- WRITE !
- +11 QUIT 1
- MON ; Monitor Status of Re-Index
- +1 NEW LEXC,LEXMON,LEXEXIT,LEXHT,LEXIS,LEXII,LEXNOW
- SET LEXMON=0
- +2 SET LEXIS=$$IS
- SET LEXII=$$II
- IF +LEXIS'>0
- Begin DoDot:1
- +3 WRITE !," Lexicon cross-reference repair is not running"
- End DoDot:1
- QUIT
- +4 IF +LEXIS>0
- IF +LEXII>0
- Begin DoDot:1
- +5 NEW LEXMSG
- SET LEXMSG=$PIECE(LEXII,"^",2)
- +6 IF $LENGTH(LEXMSG)
- WRITE !," ",LEXMSG
- End DoDot:1
- QUIT
- +7 WRITE !!," Entering an Up-Arrow ""^"" to exit"
- +8 SET (LEXMON,LEXEXIT)=0
- +9 FOR
- Begin DoDot:1
- +10 NEW LEXC
- SET LEXEXIT=$$PA(5)
- SET LEXMON=LEXMON+1
- +11 SET LEXC=$$PROG^LEXRXXM2
- IF LEXC'>0
- SET LEXEXIT=1
- End DoDot:1
- IF +LEXEXIT>0
- QUIT
- +12 SET LEXNOW=$$IS
- IF +($GET(LEXIS))>0
- IF +($GET(LEXNOW))'>0
- Begin DoDot:1
- +13 WRITE !!," Lexicon cross-reference repair/re-index completed",!
- +14 SET LEXEXIT=$$PA(1)
- End DoDot:1
- +15 QUIT
- PA(X) ; Pause
- +1 NEW DTIME,DIR,DTOUT,DUOUT,DIRUT,DIROUT,LEXHT,Y
- SET LEXHT=+($GET(X))
- +2 IF +LEXHT'>0
- SET LEXHT=2
- SET DTIME=LEXHT
- +3 SET DIR(0)="FAO"
- SET (DIR("?"),DIR("??"))=""
- SET DIR("A")=""
- +4 SET DIR("PRE")="S:X[""?"" X=""^"""
- DO ^DIR
- +5 IF $DATA(DUOUT)!($DATA(DIROUT))
- SET X="^"
- IF X'["^"
- SET X=0
- IF X["^"
- SET X=1
- +6 QUIT X
- IS(X) ; Task is Running
- +1 NEW LEXO,LEXTSK,ZTSK,LEXMSG
- SET LEXO="LEXRW~"
- SET LEXMSG=""
- +2 FOR
- SET LEXO=$ORDER(^XTMP(LEXO))
- IF '$LENGTH(LEXO)!($EXTRACT(LEXO,1,5)'="LEXRX")
- QUIT
- Begin DoDot:1
- +3 SET LEXTSK=$GET(^XTMP(LEXO,1))
- IF +LEXTSK'>0
- QUIT
- NEW ZTSK
- SET ZTSK=+LEXTSK
- +4 DO STAT^%ZTLOAD
- IF +($GET(ZTSK(0)))'>0
- QUIT
- +5 IF +($GET(ZTSK(1)))>2
- IF +($GET(ZTSK(1)))'=5
- Begin DoDot:2
- +6 NEW ZTSK
- SET ZTSK=+LEXTSK
- +7 IF +($GET(ZTSK(1)))'=5
- DO KILL^%ZTLOAD
- +8 KILL ^XTMP(LEXO)
- End DoDot:2
- QUIT
- +9 SET X=+($GET(X))+1
- End DoDot:1
- +10 SET X=+($GET(X))
- +11 QUIT X
- II(X) ; Inactive and Interrupted
- +1 NEW LEXO,LEXTSK,ZTSK,LEXMSG
- SET LEXO="LEXRW~"
- SET LEXMSG=""
- +2 FOR
- SET LEXO=$ORDER(^XTMP(LEXO))
- IF '$LENGTH(LEXO)!($EXTRACT(LEXO,1,5)'="LEXRX")
- QUIT
- Begin DoDot:1
- +3 SET LEXTSK=$GET(^XTMP(LEXO,1))
- IF +LEXTSK'>0
- QUIT
- +4 NEW ZTSK
- SET ZTSK=+LEXTSK
- +5 DO STAT^%ZTLOAD
- IF +($GET(ZTSK(0)))'>0
- QUIT
- +6 IF +($GET(ZTSK(1)))=5
- SET LEXMSG="1^Task "_ZTSK_" was interrupted and is inactive"
- End DoDot:1
- IF $LENGTH(LEXMSG)
- QUIT
- +7 SET X=$GET(LEXMSG)
- IF '$LENGTH(X)
- SET X=0
- +8 QUIT X
- PROG(X) ; Progress
- +1 NEW LEXBEG,LEXBEGE,LEXBEGD,LEXUPD,LEXNAM,LEXO,LEXUPDE,LEXUPDD,LEXDES
- +2 NEW LEXACT,LEXCUR,LEXTASK,LEXTSK,LEXNOW,LEXND
- SET X=0
- +3 SET LEXO="LEXRW~"
- KILL LEXTASK
- +4 FOR
- SET LEXO=$ORDER(^XTMP(LEXO))
- IF '$LENGTH(LEXO)!($EXTRACT(LEXO,1,5)'="LEXRX")
- QUIT
- Begin DoDot:1
- +5 SET LEXNAM=LEXO
- SET LEXTSK=$GET(^XTMP(LEXNAM,1))
- +6 IF +LEXTSK'>0
- QUIT
- NEW ZTSK
- SET ZTSK=+LEXTSK
- +7 DO STAT^%ZTLOAD
- IF +($GET(ZTSK(0)))'>0
- QUIT
- +8 IF +($GET(ZTSK(1)))>2
- Begin DoDot:2
- +9 NEW ZTSK
- SET ZTSK=+LEXTSK
- +10 DO KILL^%ZTLOAD
- KILL ^XTMP(LEXNAM)
- End DoDot:2
- QUIT
- +11 SET LEXNOW=$$NOW^XLFDT
- SET LEXND=$GET(^XTMP(LEXNAM,0))
- +12 SET LEXBEG=$PIECE(LEXND,"^",3)
- SET LEXDES=$PIECE(LEXND,"^",4)
- +13 IF '$LENGTH(LEXDES)
- QUIT
- +14 SET LEXTSK=$GET(^XTMP(LEXNAM,1))
- SET LEXND=$GET(^XTMP(LEXNAM,2))
- +15 SET LEXUPD=$PIECE(LEXND,"^",1)
- SET LEXACT=$PIECE(LEXND,"^",2)
- +16 SET LEXBEGE=$$ED^LEXRXXM(LEXBEG)
- SET LEXUPDE=$$ED^LEXRXXM(LEXUPD)
- +17 SET LEXBEGD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
- +18 SET LEXUPDD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
- +19 IF $EXTRACT(LEXBEGD,1)=" "&($EXTRACT(LEXBEGD,3)="
- SET LEXBEGD=$TRANSLATE(LEXBEGD," ","0")
- +20 IF $EXTRACT(LEXUPDD,1)=" "&($EXTRACT(LEXUPDD,3)="
- SET LEXUPDD=$TRANSLATE(LEXUPDD," ","0")
- +21 IF $LENGTH($GET(IOF))&('$DATA(LEXCHK))
- WRITE @IOF
- IF +($GET(ZTSK(1)))=1
- Begin DoDot:2
- +22 WRITE !!," ",LEXDES
- +23 WRITE !," The task is scheduled, waiting for an I/O device, a volume"
- +24 WRITE !," set link, or a partition in memory"
- SET X=+($GET(X))+1
- End DoDot:2
- QUIT
- +25 IF +($GET(ZTSK(1)))=2
- Begin DoDot:2
- +26 WRITE !!," Repair/Re-Index is in progress"
- SET X=+($GET(X))+1
- +27 WRITE !,?3,LEXDES
- IF $LENGTH(LEXBEGE)
- WRITE ?49,"Started: ",LEXBEGE
- +28 IF $LENGTH(LEXACT)
- Begin DoDot:3
- +29 WRITE !,?5,LEXACT
- +30 IF $LENGTH(LEXUPDE)
- WRITE ?49,"Current: ",LEXUPDE
- End DoDot:3
- +31 IF $LENGTH(LEXBEGD)&(+($GET(LEXMON))'>0)
- WRITE !,?49,"Running: ",LEXBEGD
- +32 IF $LENGTH(LEXBEGD)&(+($GET(LEXMON))>0)
- WRITE !,?7,"#",+($GET(LEXMON)),?49,"Running: ",LEXBEGD
- End DoDot:2
- QUIT
- End DoDot:1
- +33 SET X=+($GET(X))
- +34 QUIT X
- CLR ; Clear
- +1 QUIT