XUTMUSE2 ;SEA/RDS - TaskMan: Option, XUTMUSER, Part 3 (Edit) ;05/26/98 16:46
;;8.0;KERNEL;**36,86**;Jul 10, 1995
;
TASK ;Handle Unusual Tasks
N ZTD,ZTDEFALT,ZTL,ZTX
I $D(^%ZTSK(XUTMT,0))[0 W !,"This task's record is missing critical data. There's nothing to edit." Q
I $D(^%ZTSCH("TASK",XUTMT)) W !,"This task is currently running. You should either wait for the task to stop",!?5,"running, or use the Stop Task action to try to stop it sooner." Q
;
STOP ;Report Need To Stop Task, Prompt For Confirmation
W ! S DIR(0)="YO",DIR("A")="Before you edit the task I must unschedule it, is this okay",DIR("B")="YES",DIR("?")="Yes - task will be unscheduled and you can edit it. No - don't edit."
D ^DIR K DIR I $D(DIRUT)!'Y W !,"Task not changed." Q
D ^XUTMTS I ZTSK<1 W !!,"Task not available for editing."
W !,"Task ready for editing."
;
OUTPUT ;Report Whether Task Involved Output
W ! W:$P(ZTSK(.2),U)="" !,"Currently, this task does not request an output device." W:$P(ZTSK(.2),U)]"" !,"Currently, this task requests output device ",$P($P(ZTSK(.2),U),";"),"."
S DIR(0)="YO",DIR("A")="Do you want to change the output device for this task",DIR("B")="NO"
D ^DIR Q:$D(DIRUT) K DIR I 'Y G RUNTIME
;
DEVICE ;Allow User To Change Output Device Request
S ZTSK(.2)="",ZTSK(.25)="" K ZTIO
S %ZIS="NQS",%ZIS("A")="Select Task's Output Device (^ for none): ",%ZIS("B")=$P(ZTSK(.2),U) D ^%ZIS G:POP RUNTIME
S ZTIO=ION_";"_IOST_";"_$S($D(IO("DOC"))#2:IO("DOC"),1:IOM_";"_IOSL)_$S($D(IO("P"))[0:"",IO("P")="":"",1:";/"_IO("P")),ZTSK(.2)=ZTIO_U_IO_U_IOT_U_IOST_U_$P(ZTSK(.2),U,5)_U
I $D(IO("HFSIO"))#2,$D(IOPAR)#2 S $P(ZTSK(.2),U,6)=IO("HFSIO"),ZTSK(.25)=IOPAR
D HOME^%ZIS
;
RUNTIME ;Allow User To Change Task's Next Run Time
W ! S ZTDEFALT=$$HTFM^XLFDT($P(ZTSK(0),U,6))
S DIR(0)="D^::ERS^N ZTRSTRCT D SCREEN^XUTMUSE2 K:ZTRSTRCT X"
S DIR("A")="When should this task run?"
S DIR("B")=$$HTE^XLFDT($P(ZTSK(0),U,6))
S DIR("?",1)=" Your response must be a date, @ sign, and time."
S DIR("?",2)=" "
S DIR("?")=" Enter ?? for more help."
S DIR("??")="^D HELP2^XUTMUSE2"
D ^DIR K DIR
R1 ;
I $D(DTOUT) W " ** TIME-OUT **",$C(7)
I $D(DUOUT) W " ** ^-ESCAPE **"
I $D(DIRUT) Q
S $P(ZTSK(0),U,6)=$$FMTH^XLFDT(Y)
;
PURPOSE ;Allow User To Edit Description Of Task's Purpose
W ! S DIR(0)="FO^1:200",DIR("A")="Task's purpose" S:ZTSK(.03)]"" DIR("B")=ZTSK(.03) D ^DIR Q:$D(DIRUT) K DIR S ZTSK(.03)=Y
;
BRIEF ;Show User Brief Of Task
W !!,ZTSK,": ",$E(ZTSK(.03),1,70)
S ZTD=$E(ZTSK(.03),$L(ZTSK(.03)))=".",ZTX=$L(ZTSK)+2+$L(ZTSK(.03))+3-ZTD,ZTL=$S($P($P(ZTSK(.2),U),";")]"":$L($P($P(ZTSK(.2),U),";")),1:16)
W:ZTL+ZTX'>80 $E(".",'ZTD)," " I ZTL+ZTX>80 W:ZTX<80&'ZTD "." W ! S ZTX=0
W $S($P($P(ZTSK(.2),U),";")]"":$P($P(ZTSK(.2),U),";"),1:"No output device") S ZTX=ZTL+ZTX+3,%H=$P(ZTSK(0),U,6)
S ZTD=$S(%H="":"Next run time unknown",1:"Next run time: "_$$TIME^XUTMTP(%H)),ZTL=$L(ZTD) W:ZTL+ZTX'>80 ". " I ZTL+ZTX>80 W:ZTL<80 "." W ! S ZTX=0
W ZTD I ZTL+ZTX<80 W "."
;
REQ ;Allow User To Reschedule Task
W ! S DIR(0)="YO",DIR("A")="Shall I reschedule this task as shown",DIR("B")="YES" D ^DIR K DIR I $D(DIRUT)!'Y W !,"Task not rescheduled." Q
S $P(ZTSK(.1),U,10,11)="^"
S $P(ZTSK(0),U,3)=DUZ
S $P(ZTSK(0),U,5)=$H
S $P(ZTSK(0),U,10)=ZTNAME
W !,"Task rescheduled."
L +^%ZTSK(ZTSK) S ^%ZTSK(ZTSK,0)=ZTSK(0),^(.03)=ZTSK(.03),^(.1)=ZTSK(.1),^(.2)=ZTSK(.2),^(.25)=ZTSK(.25)
K ZTDESC,ZTIO,ZTRTN S ZTDTH=$P(ZTSK(0),U,6) D REQ^%ZTLOAD L -^%ZTSK(ZTSK)
Q
;
HELP2 ;RUNTIME--provide ?? help in selecting a start time for this task
N ZTREC
W !!?5,"This will be the time TaskMan starts your task."
I $P(ZTSK(0),U,8)="" Q
S ZTREC=$G(^DIC(19,+$P(ZTSK(0),U,8),0))
I ZTREC="" Q
I $P(ZTREC,U,2)="" Q
W !!?5,"The option you used to queue this task was:"
W !?5,$P(ZTREC,U,2)
H1 ;
I $O(^DIC(19,+$P(ZTSK(0),U,8),3.92,0))="" D Q
.W !!?5,"It has no restricted times, so you may run this task any time"
.W !?5,"you wish." Q
W !!?5,"It may only be run at certain times."
W !?5,"This option will notify you if you select a restricted time."
Q
;
SCREEN ;RUNTIME--screen out start times prohibited according to the option
;...that queued the task (or the option itself, if the task is a
;...queued option).
I Y=ZTDEFALT S ZTRSTRCT=0 Q
N X,XQY S X=Y N Y
S XQY=+$P(ZTSK(0),U,8)
D ^XQ92
S ZTRSTRCT=X=""
S1 ;
I ZTRSTRCT D
.W !!?5,"You may not start your task at that time."
.W !!?5,"The option you used to queue this task does not allow the task"
.W !?5,"to run at that time. Please select a different time to start"
.W !?5,"the task."
.Q
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUTMUSE2 4678 printed Nov 22, 2024@17:24:16 Page 2
XUTMUSE2 ;SEA/RDS - TaskMan: Option, XUTMUSER, Part 3 (Edit) ;05/26/98 16:46
+1 ;;8.0;KERNEL;**36,86**;Jul 10, 1995
+2 ;
TASK ;Handle Unusual Tasks
+1 NEW ZTD,ZTDEFALT,ZTL,ZTX
+2 IF $DATA(^%ZTSK(XUTMT,0))[0
WRITE !,"This task's record is missing critical data. There's nothing to edit."
QUIT
+3 IF $DATA(^%ZTSCH("TASK",XUTMT))
WRITE !,"This task is currently running. You should either wait for the task to stop",!?5,"running, or use the Stop Task action to try to stop it sooner."
QUIT
+4 ;
STOP ;Report Need To Stop Task, Prompt For Confirmation
+1 WRITE !
SET DIR(0)="YO"
SET DIR("A")="Before you edit the task I must unschedule it, is this okay"
SET DIR("B")="YES"
SET DIR("?")="Yes - task will be unscheduled and you can edit it. No - don't edit."
+2 DO ^DIR
KILL DIR
IF $DATA(DIRUT)!'Y
WRITE !,"Task not changed."
QUIT
+3 DO ^XUTMTS
IF ZTSK<1
WRITE !!,"Task not available for editing."
+4 WRITE !,"Task ready for editing."
+5 ;
OUTPUT ;Report Whether Task Involved Output
+1 WRITE !
if $PIECE(ZTSK(.2),U)=""
WRITE !,"Currently, this task does not request an output device."
if $PIECE(ZTSK(.2),U)]""
WRITE !,"Currently, this task requests output device ",$PIECE($PIECE(ZTSK(.2),U),";"),"."
+2 SET DIR(0)="YO"
SET DIR("A")="Do you want to change the output device for this task"
SET DIR("B")="NO"
+3 DO ^DIR
if $DATA(DIRUT)
QUIT
KILL DIR
IF 'Y
GOTO RUNTIME
+4 ;
DEVICE ;Allow User To Change Output Device Request
+1 SET ZTSK(.2)=""
SET ZTSK(.25)=""
KILL ZTIO
+2 SET %ZIS="NQS"
SET %ZIS("A")="Select Task's Output Device (^ for none): "
SET %ZIS("B")=$PIECE(ZTSK(.2),U)
DO ^%ZIS
if POP
GOTO RUNTIME
+3 SET ZTIO=ION_";"_IOST_";"_$SELECT($DATA(IO("DOC"))#2:IO("DOC"),1:IOM_";"_IOSL)_$SELECT($DATA(IO("P"))[0:"",IO("P")="":"",1:";/"_IO("P"))
SET ZTSK(.2)=ZTIO_U_IO_U_IOT_U_IOST_U_$PIECE(ZTSK(.2),U,5)_U
+4 IF $DATA(IO("HFSIO"))#2
IF $DATA(IOPAR)#2
SET $PIECE(ZTSK(.2),U,6)=IO("HFSIO")
SET ZTSK(.25)=IOPAR
+5 DO HOME^%ZIS
+6 ;
RUNTIME ;Allow User To Change Task's Next Run Time
+1 WRITE !
SET ZTDEFALT=$$HTFM^XLFDT($PIECE(ZTSK(0),U,6))
+2 SET DIR(0)="D^::ERS^N ZTRSTRCT D SCREEN^XUTMUSE2 K:ZTRSTRCT X"
+3 SET DIR("A")="When should this task run?"
+4 SET DIR("B")=$$HTE^XLFDT($PIECE(ZTSK(0),U,6))
+5 SET DIR("?",1)=" Your response must be a date, @ sign, and time."
+6 SET DIR("?",2)=" "
+7 SET DIR("?")=" Enter ?? for more help."
+8 SET DIR("??")="^D HELP2^XUTMUSE2"
+9 DO ^DIR
KILL DIR
R1 ;
+1 IF $DATA(DTOUT)
WRITE " ** TIME-OUT **",$CHAR(7)
+2 IF $DATA(DUOUT)
WRITE " ** ^-ESCAPE **"
+3 IF $DATA(DIRUT)
QUIT
+4 SET $PIECE(ZTSK(0),U,6)=$$FMTH^XLFDT(Y)
+5 ;
PURPOSE ;Allow User To Edit Description Of Task's Purpose
+1 WRITE !
SET DIR(0)="FO^1:200"
SET DIR("A")="Task's purpose"
if ZTSK(.03)]""
SET DIR("B")=ZTSK(.03)
DO ^DIR
if $DATA(DIRUT)
QUIT
KILL DIR
SET ZTSK(.03)=Y
+2 ;
BRIEF ;Show User Brief Of Task
+1 WRITE !!,ZTSK,": ",$EXTRACT(ZTSK(.03),1,70)
+2 SET ZTD=$EXTRACT(ZTSK(.03),$LENGTH(ZTSK(.03)))="."
SET ZTX=$LENGTH(ZTSK)+2+$LENGTH(ZTSK(.03))+3-ZTD
SET ZTL=$SELECT($PIECE($PIECE(ZTSK(.2),U),";")]"":$LENGTH($PIECE($PIECE(ZTSK(.2),U),";")),1:16)
+3 if ZTL+ZTX'>80
WRITE $EXTRACT(".",'ZTD)," "
IF ZTL+ZTX>80
if ZTX<80&'ZTD
WRITE "."
WRITE !
SET ZTX=0
+4 WRITE $SELECT($PIECE($PIECE(ZTSK(.2),U),";")]"":$PIECE($PIECE(ZTSK(.2),U),";"),1:"No output device")
SET ZTX=ZTL+ZTX+3
SET %H=$PIECE(ZTSK(0),U,6)
+5 SET ZTD=$SELECT(%H="":"Next run time unknown",1:"Next run time: "_$$TIME^XUTMTP(%H))
SET ZTL=$LENGTH(ZTD)
if ZTL+ZTX'>80
WRITE ". "
IF ZTL+ZTX>80
if ZTL<80
WRITE "."
WRITE !
SET ZTX=0
+6 WRITE ZTD
IF ZTL+ZTX<80
WRITE "."
+7 ;
REQ ;Allow User To Reschedule Task
+1 WRITE !
SET DIR(0)="YO"
SET DIR("A")="Shall I reschedule this task as shown"
SET DIR("B")="YES"
DO ^DIR
KILL DIR
IF $DATA(DIRUT)!'Y
WRITE !,"Task not rescheduled."
QUIT
+2 SET $PIECE(ZTSK(.1),U,10,11)="^"
+3 SET $PIECE(ZTSK(0),U,3)=DUZ
+4 SET $PIECE(ZTSK(0),U,5)=$HOROLOG
+5 SET $PIECE(ZTSK(0),U,10)=ZTNAME
+6 WRITE !,"Task rescheduled."
+7 LOCK +^%ZTSK(ZTSK)
SET ^%ZTSK(ZTSK,0)=ZTSK(0)
SET ^(.03)=ZTSK(.03)
SET ^(.1)=ZTSK(.1)
SET ^(.2)=ZTSK(.2)
SET ^(.25)=ZTSK(.25)
+8 KILL ZTDESC,ZTIO,ZTRTN
SET ZTDTH=$PIECE(ZTSK(0),U,6)
DO REQ^%ZTLOAD
LOCK -^%ZTSK(ZTSK)
+9 QUIT
+10 ;
HELP2 ;RUNTIME--provide ?? help in selecting a start time for this task
+1 NEW ZTREC
+2 WRITE !!?5,"This will be the time TaskMan starts your task."
+3 IF $PIECE(ZTSK(0),U,8)=""
QUIT
+4 SET ZTREC=$GET(^DIC(19,+$PIECE(ZTSK(0),U,8),0))
+5 IF ZTREC=""
QUIT
+6 IF $PIECE(ZTREC,U,2)=""
QUIT
+7 WRITE !!?5,"The option you used to queue this task was:"
+8 WRITE !?5,$PIECE(ZTREC,U,2)
H1 ;
+1 IF $ORDER(^DIC(19,+$PIECE(ZTSK(0),U,8),3.92,0))=""
Begin DoDot:1
+2 WRITE !!?5,"It has no restricted times, so you may run this task any time"
+3 WRITE !?5,"you wish."
QUIT
End DoDot:1
QUIT
+4 WRITE !!?5,"It may only be run at certain times."
+5 WRITE !?5,"This option will notify you if you select a restricted time."
+6 QUIT
+7 ;
SCREEN ;RUNTIME--screen out start times prohibited according to the option
+1 ;...that queued the task (or the option itself, if the task is a
+2 ;...queued option).
+3 IF Y=ZTDEFALT
SET ZTRSTRCT=0
QUIT
+4 NEW X,XQY
SET X=Y
NEW Y
+5 SET XQY=+$PIECE(ZTSK(0),U,8)
+6 DO ^XQ92
+7 SET ZTRSTRCT=X=""
S1 ;
+1 IF ZTRSTRCT
Begin DoDot:1
+2 WRITE !!?5,"You may not start your task at that time."
+3 WRITE !!?5,"The option you used to queue this task does not allow the task"
+4 WRITE !?5,"to run at that time. Please select a different time to start"
+5 WRITE !?5,"the task."
+6 QUIT
End DoDot:1
+7 QUIT
+8 ;