XUTMOPT ;SFISC/RWF - One time queue and Schedule option code. ;12/04/2000 11:02 [ 04/02/2003 8:29 AM ]
;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
;;8.0;KERNEL;**2,111,112,118,127,175**;Jul 10, 1995
ONE ;One time queue setup
N XUXQM,DIC,DIR,Y,ZTSK,ZTSAVE,ZTCPU
W !!,"You can only select OPTION's that have the SCHEDULING RECOMMENDED",!,"field set to YES or STARTUP."
S DIC=19,DIC(0)="AEMQZ",DIC("S")="I $TR($P($G(^DIC(19,Y,200.9)),U,1),""nsy"",""011"")" D ^DIC G:Y'>0 EXIT
S XUXQM=+Y,XUXQM(0)=Y(0)
S DIR(0)="Y",DIR("A")="Does this option need a DEVICE",DIR("B")="NO" D ^DIR G:$D(DIRUT) EXIT
OZ S ZTIO=""
I Y=1 D G EXIT:POP,OZ:'$D(IO("Q"))
. W ! S IOP="Q",%ZIS="NQM",%ZIS("B")="" D ^%ZIS Q:POP K ZTIO
. I '$D(IO("Q")) U IO(0) W !,"Not a valid device for Queueing." D ^%ZISC
. Q
K DIR S DIR(0)="FO^2:15",DIR("A")="Enter Particular Volume set if needed" D ^DIR G EXIT:$D(DTOUT)!$D(DUOUT)
I X]"" S ZTCPU=X
S ZTSAVE("XQY")=$O(^DIC(19,"B","XU OPTION START",0)),ZTSAVE("XUXQM*")="",ZTRTN="ZTSK^XQ1"
S ZTDESC="One time Queue: "_$P(XUXQM(0),U,2)
D ^%ZTLOAD K IO("Q")
EXIT D HOME^%ZIS
Q
;
EDIT(OPTION) ;User edit of option schedule file.
N DR,DIE,DA,DIC,DDSFILE
I OPTION?1A.ANP S OPTION=$$FIND(OPTION) Q:OPTION'>0
I '$D(^DIC(19.2,OPTION,0)) Q
S DA=OPTION,DR="[XU OPTION SCHEDULE]",DIE="^DIC(19.2," D XUDIE^XUS5
Q
;
DISP(OPTION) ;Display an option schedule (public entry-point)
N DR,DIC,DA
I OPTION?1A.ANP S OPTION=$$FIND(OPTION) Q:OPTION'>0
S L=0,DIC="^DIC(19.2,",FLDS="[XQ-BACKGROUND SCHEDULE]",BY="NUMBER",(FR,TO)=OPTION,IOP=$G(IOP,0),DHD="Scheduled Option Display"
D EN1^DIP
Q
;
RESCH(OPTION,WHEN,DEVICE,BY,FLAG,ERR) ;EF. App reschedule entry point
N DIE,DR,DIC,DA,X
I OPTION?1A.ANP S OPTION=$$FIND(OPTION,$S($G(FLAG)["L":"L",1:""))
I OPTION'>0 S ERR=-1
S DIE="^DIC(19.2,",DA=OPTION,DR="" S:$D(WHEN) DR="2///"_WHEN_";" S:$D(DEVICE) DR=DR_"3///"_DEVICE_";" S:$D(BY) DR=DR_"6///"_BY
D ^DIE
;S X=$NA(XFDA(19.2,OPTION_","))
;S:$D(WHEN) @X@(2)=WHEN S:$D(DEVICE) @X@(3)=DEVICE S:$D(BY) @X@(6)=BY
;D FILE^DIE("","XFDA")
Q
;
FIND(X,F) ;Find and option
N DIC,Y,DLAYGO S DLAYGO=19
;S X=$O(^DIC(19,"B",X,0)) I X'>0 Q -1
;S X=$O(^DIC(19.2,"B",X,0)) I X'>0 Q -1
S DIC="^DIC(19.2,",DIC(0)="M"_$G(F) D ^DIC S X=+Y
Q X
;
OPTSTAT(OPTION,ROOT) ;Get the status of an option
;Return an array because an option can be scheduled more than once
N XUTMDA,XUTMMSG
D FIND^DIC(19.2,,,"X",OPTION,5,,,,"XUTMDA","XUTMMSG")
S XU1=0,ROOT=+$G(XUTMDA("DILIST",0))
F S XU1=$O(XUTMDA("DILIST",2,XU1)) Q:XU1'>0 D
. S XU2=XUTMDA("DILIST",2,XU1),%=^DIC(19.2,XU2,0)
. S ROOT(XU1)=$G(^DIC(19.2,XU2,1))_U_$P(%,U,2)_U_$P(%,U,6)_U_$P(%,U,9)
. Q
Q
XUTMOPT ;SFISC/RWF - One time queue and Schedule option code. ;12/04/2000 11:02 [ 04/02/2003 8:29 AM ]
+1 ;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
+2 ;;8.0;KERNEL;**2,111,112,118,127,175**;Jul 10, 1995
ONE ;One time queue setup
+1 NEW XUXQM,DIC,DIR,Y,ZTSK,ZTSAVE,ZTCPU
+2 WRITE !!,"You can only select OPTION's that have the SCHEDULING RECOMMENDED",!,"field set to YES or STARTUP."
+3 SET DIC=19
SET DIC(0)="AEMQZ"
SET DIC("S")="I $TR($P($G(^DIC(19,Y,200.9)),U,1),""nsy"",""011"")"
DO ^DIC
IF Y'>0
GOTO EXIT
+4 SET XUXQM=+Y
SET XUXQM(0)=Y(0)
+5 SET DIR(0)="Y"
SET DIR("A")="Does this option need a DEVICE"
SET DIR("B")="NO"
DO ^DIR
IF $DATA(DIRUT)
GOTO EXIT
OZ SET ZTIO=""
+1 IF Y=1
Begin DoDot:1
+2 WRITE !
SET IOP="Q"
SET %ZIS="NQM"
SET %ZIS("B")=""
DO ^%ZIS
IF POP
QUIT
KILL ZTIO
+3 IF '$DATA(IO("Q"))
USE IO(0)
WRITE !,"Not a valid device for Queueing."
DO ^%ZISC
+4 QUIT
End DoDot:1
IF POP
GOTO EXIT
IF '$DATA(IO("Q"))
GOTO OZ
+5 KILL DIR
SET DIR(0)="FO^2:15"
SET DIR("A")="Enter Particular Volume set if needed"
DO ^DIR
IF $DATA(DTOUT)!$DATA(DUOUT)
GOTO EXIT
+6 IF X]""
SET ZTCPU=X
+7 SET ZTSAVE("XQY")=$ORDER(^DIC(19,"B","XU OPTION START",0))
SET ZTSAVE("XUXQM*")=""
SET ZTRTN="ZTSK^XQ1"
+8 SET ZTDESC="One time Queue: "_$PIECE(XUXQM(0),U,2)
+9 DO ^%ZTLOAD
KILL IO("Q")
EXIT DO HOME^%ZIS
+1 QUIT
+2 ;
EDIT(OPTION) ;User edit of option schedule file.
+1 NEW DR,DIE,DA,DIC,DDSFILE
+2 IF OPTION?1A.ANP
SET OPTION=$$FIND(OPTION)
IF OPTION'>0
QUIT
+3 IF '$DATA(^DIC(19.2,OPTION,0))
QUIT
+4 SET DA=OPTION
SET DR="[XU OPTION SCHEDULE]"
SET DIE="^DIC(19.2,"
DO XUDIE^XUS5
+5 QUIT
+6 ;
DISP(OPTION) ;Display an option schedule (public entry-point)
+1 NEW DR,DIC,DA
+2 IF OPTION?1A.ANP
SET OPTION=$$FIND(OPTION)
IF OPTION'>0
QUIT
+3 SET L=0
SET DIC="^DIC(19.2,"
SET FLDS="[XQ-BACKGROUND SCHEDULE]"
SET BY="NUMBER"
SET (FR,TO)=OPTION
SET IOP=$GET(IOP,0)
SET DHD="Scheduled Option Display"
+4 DO EN1^DIP
+5 QUIT
+6 ;
RESCH(OPTION,WHEN,DEVICE,BY,FLAG,ERR) ;EF. App reschedule entry point
+1 NEW DIE,DR,DIC,DA,X
+2 IF OPTION?1A.ANP
SET OPTION=$$FIND(OPTION,$SELECT($GET(FLAG)["L":"L",1:""))
+3 IF OPTION'>0
SET ERR=-1
+4 SET DIE="^DIC(19.2,"
SET DA=OPTION
SET DR=""
IF $DATA(WHEN)
SET DR="2///"_WHEN_";"
IF $DATA(DEVICE)
SET DR=DR_"3///"_DEVICE_";"
IF $DATA(BY)
SET DR=DR_"6///"_BY
+5 DO ^DIE
+6 ;S X=$NA(XFDA(19.2,OPTION_","))
+7 ;S:$D(WHEN) @X@(2)=WHEN S:$D(DEVICE) @X@(3)=DEVICE S:$D(BY) @X@(6)=BY
+8 ;D FILE^DIE("","XFDA")
+9 QUIT
+10 ;
FIND(X,F) ;Find and option
+1 NEW DIC,Y,DLAYGO
SET DLAYGO=19
+2 ;S X=$O(^DIC(19,"B",X,0)) I X'>0 Q -1
+3 ;S X=$O(^DIC(19.2,"B",X,0)) I X'>0 Q -1
+4 SET DIC="^DIC(19.2,"
SET DIC(0)="M"_$GET(F)
DO ^DIC
SET X=+Y
+5 QUIT X
+6 ;
OPTSTAT(OPTION,ROOT) ;Get the status of an option
+1 ;Return an array because an option can be scheduled more than once
+2 NEW XUTMDA,XUTMMSG
+3 DO FIND^DIC(19.2,,,"X",OPTION,5,,,,"XUTMDA","XUTMMSG")
+4 SET XU1=0
SET ROOT=+$GET(XUTMDA("DILIST",0))
+5 FOR
SET XU1=$ORDER(XUTMDA("DILIST",2,XU1))
IF XU1'>0
QUIT
Begin DoDot:1
+6 SET XU2=XUTMDA("DILIST",2,XU1)
SET %=^DIC(19.2,XU2,0)
+7 SET ROOT(XU1)=$GET(^DIC(19.2,XU2,1))_U_$PIECE(%,U,2)_U_$PIECE(%,U,6)_U_$PIECE(%,U,9)
+8 QUIT
End DoDot:1
+9 QUIT