- XUTMQ0 ;SEA/RDS - TaskMan: Option, ZTMINQ, Part 2 (Modules) ;4/20/95 10:33
- ;;8.0;KERNEL;;Jul 10, 1995
- ;
- ENTRY G ^XUTMQ
- ;
- ALL ;BRANCH^XUTMQ--all of one user's tasks.
- ;input: ZTKEY,ZTNAME,XUTMUCI
- N DIR,DIRUT,DTOUT,DUOUT,X,ZT1,ZT2,ZT3,ZTC,ZTDUZ,ZTF,ZTH,ZTI,ZTOUT
- N ZTREC,ZTS,ZTUSER K ^TMP($J)
- S ZTC=0,ZTF=1,ZTH="All tasks created by ",ZTOUT=0
- D KEY I ZTOUT Q
- A1 ;
- S ZTS=0 F ZTI=1:1 S ZTS=$O(^%ZTSK(ZTS)) Q:'ZTS D
- .I '(ZTI#100) W "."
- .I ZTI=10000 D
- ..W !!,$C(7),$C(7)
- ..W "You need to run XUTMQCLEAN more often or keep fewer tasks each run."
- ..W !,"Still searching..."
- ..Q
- .I $$MATCH(ZTS,ZTDUZ,ZTUSER) D SORT(+$P($G(^%ZTSK(ZTS,0)),U,6),ZTS)
- .Q
- A2 ;
- S ZTS=0 F S ZTS=$O(^%ZTSCH("TASK",ZTS)) Q:'ZTS D
- .I $D(^%ZTSK(ZTS,0))#2 Q
- .S ZTREC=$G(^%ZTSCH("TASK",ZTS))
- .I ZTREC="" Q
- .I $P(ZTREC,U,9)'=ZTDUZ,$P(ZTREC,U,9)'=ZTUSER Q
- .D SORT($H,ZTS)
- .Q
- A3 ;
- W "finished!",!
- G:$O(^TMP($J,0))="" A4
- S ZTSAVE("^TMP($J,")="" D EN^XUTMDEVQ("LIST^XUTMQ","TASK LIST",.ZTSAVE)
- K ^TMP($J)
- Q
- S ZT1="" F S ZT1=$O(^TMP($J,ZT1),-1) Q:ZT1="" D I ZTOUT Q
- . S ZTS=0 F S ZTS=$O(^TMP($J,ZT1,ZTS)) Q:'ZTS D I ZTOUT Q
- .. D PRINT
- .Q
- I ZTOUT Q
- A4 ;
- I 'ZTC W !! D W " no tasks in this volume set's Task file.",!
- .I ZTKEY W ZTUSER," has"
- .E W "You have"
- W !
- S DIR(0)="E"
- S DIR("A")="Press RETURN to continue" I ZTC D
- .S DIR("A")="End of listing. "_DIR("A")
- D ^DIR K ^TMP($J) Q
- ;
- FUT ;BRANCH^XUTMQ--one user's future tasks.
- ;input: ZTKEY,ZTNAME,XUTMUCI
- N DIR,DIRUT,DTOUT,DUOUT,X,ZT,ZT1,ZT2,ZT3,ZTC,ZTDUZ,ZTF,ZTH,ZTOUT
- N ZTREC,ZTS,ZTUSER K ^TMP($J)
- S X=0,ZTC=0,ZTF=1,ZTH="Scheduled and waiting tasks created by ",ZTOUT=0
- D KEY I ZTOUT Q
- ;
- F1 S ZT1=0 F S ZT1=$O(^%ZTSCH("JOB",ZT1)) Q:ZT1'>0 D
- .S ZTS=0 F S ZTS=$O(^%ZTSCH("JOB",ZT1,ZTS)) Q:ZTS="" D
- ..I $$MATCH(ZTS,ZTDUZ,ZTUSER) D SORT(ZT1,ZTS)
- .Q
- ;
- F2 S ZT1=0 F S ZT1=$O(^%ZTSCH(ZT1)) Q:'ZT1 D
- .S ZTS=0 F S ZTS=$O(^%ZTSCH(ZT1,ZTS)) Q:'ZTS D
- ..I $$MATCH(ZTS,ZTDUZ,ZTUSER) D SORT(ZT1,ZTS)
- .Q
- ;
- F3 S ZT1="" F S ZT1=$O(^%ZTSCH("IO",ZT1)) Q:ZT1="" D
- .S ZT2="" F S ZT2=$O(^%ZTSCH("IO",ZT1,ZT2)) Q:'ZT2 D
- ..S ZTS="" F S ZTS=$O(^%ZTSCH("IO",ZT1,ZT2,ZTS)) Q:ZTS="" D
- ...I $$MATCH(ZTS,ZTDUZ,ZTUSER) D SORT(ZT2,ZTS)
- .Q
- ;
- F4 S ZT1="" F S ZT1=$O(^%ZTSCH("LINK",ZT1)) Q:ZT1="" D
- .S ZT2="" F S ZT2=$O(^%ZTSCH("LINK",ZT1,ZT2)) Q:'ZT2 D
- ..S ZTS=0 F S ZTS=$O(^%ZTSCH("LINK",ZT1,ZT2,ZTS)) Q:'ZTS D
- ...I $$MATCH(ZTS,ZTDUZ,ZTUSER) D SORT(ZT2,ZTS)
- .Q
- W "finished!",!
- ;
- F5 ;
- G:$O(^TMP($J,0))="" F6
- S ZTSAVE("^TMP($J,")="" D EN^XUTMDEVQ("LIST^XUTMQ","TASK LIST",.ZTSAVE)
- K ^TMP($J)
- Q
- S ZT1="" F S ZT1=$O(^TMP($J,ZT1),-1) Q:ZT1="" D I ZTOUT Q
- . S ZTS=0 F S ZTS=$O(^TMP($J,ZT1,ZTS)) Q:'ZTS D I ZTOUT Q
- .. D PRINT
- . Q
- I ZTOUT Q
- ;
- F6 I 'ZTC W !! D
- .I ZTKEY W ZTUSER," has"
- .E W "You have"
- .W " no scheduled or waiting tasks in this volume set's Task File.",!
- W ! S DIR(0)="E"
- S DIR("A")="Press RETURN to continue" I ZTC D
- .S DIR("A")="End of listing. "_DIR("A")
- D ^DIR K ^TMP($J) Q
- ;
- KEY ;ALL/FUT--set up variables for chosen user
- ;input: ZTKEY,ZTNAME
- ;input/output: ZTH,ZTOUT
- ;output: ZTDUZ,ZTUSER
- N DIR,DIRUT,DTOUT,DUOUT,X,Y
- I 'ZTKEY S ZTDUZ=DUZ,ZTUSER=ZTNAME,ZTH=ZTH_"you." Q
- W !!,"Select the user whose tasks you wish to see.",!!
- S DIR(0)="P^200:AEMNQ"
- S DIR("B")=ZTNAME
- S DIR("?")="Select the user whose tasks you wish to see."
- K D ^DIR K DIR
- I $D(DTOUT) W " ** TIMEOUT **",$C(7)
- I $D(DUOUT) W " ** ^ ESCAPE **"
- I $D(DIRUT) S ZTOUT=1 Q
- W !!,"Please wait while I search for the tasks...searching..."
- S ZTDUZ=$P(Y,U),ZTUSER=$P(Y,U,2)
- I ZTUSER'=ZTNAME S ZTH=ZTH_$P(ZTUSER,",",2,999)_" "_$P(ZTUSER,",")_"."
- E S ZTH=ZTH_"you."
- Q
- ;
- MATCH(ZTS,ZTDUZ,ZTREC) ;
- ;ALL/FUT--determine whether task was created by user
- ;input: task #, user #, user name
- ;output: Boolean, does task belong to user?
- S ZTREC=$G(^%ZTSK(ZTS,0))
- I ZTREC="" Q 0
- I $P(ZTREC,U,3)'=ZTDUZ Q 0
- I $P(ZTREC,U,10)="" Q 1
- Q $P(ZTREC,U,10)=ZTUSER
- ;
- SORT(ZTDTH,ZTSK) ;
- ;ALL/FUT--sort task by start time.
- ;input: start time, task number
- ;output: ^TMP($J) node
- I ZTDTH["," S ZTDTH=$$H3^%ZTM(ZTDTH)
- S ^TMP($J,ZTDTH,ZTSK)=""
- Q
- ;
- PRINT ;ALL/FUT--print a task
- ;input: ZTH,ZTKEY,ZTNAME,ZTS,XUTMUCI
- ;input/output: ZTC,ZTF
- ;output: ZTOUT
- N DIR,DIRUT,DTOUT,DUOUT,X,Y,ZTSK
- I 'ZTC W @IOF,!,ZTH,!
- I 'ZTF W !,"-------------------------------------------------------------------------------"
- S ZTF=0
- D EN^XUTMTP(ZTS)
- I $Y'>18 S ZTC=ZTC+1 Q
- W ! S ZTF=1,DIR(0)="E" D ^DIR
- S ZTOUT=$D(DTOUT)!$D(DUOUT) I ZTOUT Q
- W @IOF Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUTMQ0 4669 printed Feb 18, 2025@23:39:55 Page 2
- XUTMQ0 ;SEA/RDS - TaskMan: Option, ZTMINQ, Part 2 (Modules) ;4/20/95 10:33
- +1 ;;8.0;KERNEL;;Jul 10, 1995
- +2 ;
- ENTRY GOTO ^XUTMQ
- +1 ;
- ALL ;BRANCH^XUTMQ--all of one user's tasks.
- +1 ;input: ZTKEY,ZTNAME,XUTMUCI
- +2 NEW DIR,DIRUT,DTOUT,DUOUT,X,ZT1,ZT2,ZT3,ZTC,ZTDUZ,ZTF,ZTH,ZTI,ZTOUT
- +3 NEW ZTREC,ZTS,ZTUSER
- KILL ^TMP($JOB)
- +4 SET ZTC=0
- SET ZTF=1
- SET ZTH="All tasks created by "
- SET ZTOUT=0
- +5 DO KEY
- IF ZTOUT
- QUIT
- A1 ;
- +1 SET ZTS=0
- FOR ZTI=1:1
- SET ZTS=$ORDER(^%ZTSK(ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:1
- +2 IF '(ZTI#100)
- WRITE "."
- +3 IF ZTI=10000
- Begin DoDot:2
- +4 WRITE !!,$CHAR(7),$CHAR(7)
- +5 WRITE "You need to run XUTMQCLEAN more often or keep fewer tasks each run."
- +6 WRITE !,"Still searching..."
- +7 QUIT
- End DoDot:2
- +8 IF $$MATCH(ZTS,ZTDUZ,ZTUSER)
- DO SORT(+$PIECE($GET(^%ZTSK(ZTS,0)),U,6),ZTS)
- +9 QUIT
- End DoDot:1
- A2 ;
- +1 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^%ZTSCH("TASK",ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:1
- +2 IF $DATA(^%ZTSK(ZTS,0))#2
- QUIT
- +3 SET ZTREC=$GET(^%ZTSCH("TASK",ZTS))
- +4 IF ZTREC=""
- QUIT
- +5 IF $PIECE(ZTREC,U,9)'=ZTDUZ
- IF $PIECE(ZTREC,U,9)'=ZTUSER
- QUIT
- +6 DO SORT($HOROLOG,ZTS)
- +7 QUIT
- End DoDot:1
- A3 ;
- +1 WRITE "finished!",!
- +2 if $ORDER(^TMP($JOB,0))=""
- GOTO A4
- +3 SET ZTSAVE("^TMP($J,")=""
- DO EN^XUTMDEVQ("LIST^XUTMQ","TASK LIST",.ZTSAVE)
- +4 KILL ^TMP($JOB)
- +5 QUIT
- +6 SET ZT1=""
- FOR
- SET ZT1=$ORDER(^TMP($JOB,ZT1),-1)
- if ZT1=""
- QUIT
- Begin DoDot:1
- +7 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^TMP($JOB,ZT1,ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:2
- +8 DO PRINT
- End DoDot:2
- IF ZTOUT
- QUIT
- +9 QUIT
- End DoDot:1
- IF ZTOUT
- QUIT
- +10 IF ZTOUT
- QUIT
- A4 ;
- +1 IF 'ZTC
- WRITE !!
- Begin DoDot:1
- +2 IF ZTKEY
- WRITE ZTUSER," has"
- +3 IF '$TEST
- WRITE "You have"
- End DoDot:1
- WRITE " no tasks in this volume set's Task file.",!
- +4 WRITE !
- +5 SET DIR(0)="E"
- +6 SET DIR("A")="Press RETURN to continue"
- IF ZTC
- Begin DoDot:1
- +7 SET DIR("A")="End of listing. "_DIR("A")
- End DoDot:1
- +8 DO ^DIR
- KILL ^TMP($JOB)
- QUIT
- +9 ;
- FUT ;BRANCH^XUTMQ--one user's future tasks.
- +1 ;input: ZTKEY,ZTNAME,XUTMUCI
- +2 NEW DIR,DIRUT,DTOUT,DUOUT,X,ZT,ZT1,ZT2,ZT3,ZTC,ZTDUZ,ZTF,ZTH,ZTOUT
- +3 NEW ZTREC,ZTS,ZTUSER
- KILL ^TMP($JOB)
- +4 SET X=0
- SET ZTC=0
- SET ZTF=1
- SET ZTH="Scheduled and waiting tasks created by "
- SET ZTOUT=0
- +5 DO KEY
- IF ZTOUT
- QUIT
- +6 ;
- F1 SET ZT1=0
- FOR
- SET ZT1=$ORDER(^%ZTSCH("JOB",ZT1))
- if ZT1'>0
- QUIT
- Begin DoDot:1
- +1 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^%ZTSCH("JOB",ZT1,ZTS))
- if ZTS=""
- QUIT
- Begin DoDot:2
- +2 IF $$MATCH(ZTS,ZTDUZ,ZTUSER)
- DO SORT(ZT1,ZTS)
- End DoDot:2
- +3 QUIT
- End DoDot:1
- +4 ;
- F2 SET ZT1=0
- FOR
- SET ZT1=$ORDER(^%ZTSCH(ZT1))
- if 'ZT1
- QUIT
- Begin DoDot:1
- +1 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^%ZTSCH(ZT1,ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:2
- +2 IF $$MATCH(ZTS,ZTDUZ,ZTUSER)
- DO SORT(ZT1,ZTS)
- End DoDot:2
- +3 QUIT
- End DoDot:1
- +4 ;
- F3 SET ZT1=""
- FOR
- SET ZT1=$ORDER(^%ZTSCH("IO",ZT1))
- if ZT1=""
- QUIT
- Begin DoDot:1
- +1 SET ZT2=""
- FOR
- SET ZT2=$ORDER(^%ZTSCH("IO",ZT1,ZT2))
- if 'ZT2
- QUIT
- Begin DoDot:2
- +2 SET ZTS=""
- FOR
- SET ZTS=$ORDER(^%ZTSCH("IO",ZT1,ZT2,ZTS))
- if ZTS=""
- QUIT
- Begin DoDot:3
- +3 IF $$MATCH(ZTS,ZTDUZ,ZTUSER)
- DO SORT(ZT2,ZTS)
- End DoDot:3
- End DoDot:2
- +4 QUIT
- End DoDot:1
- +5 ;
- F4 SET ZT1=""
- FOR
- SET ZT1=$ORDER(^%ZTSCH("LINK",ZT1))
- if ZT1=""
- QUIT
- Begin DoDot:1
- +1 SET ZT2=""
- FOR
- SET ZT2=$ORDER(^%ZTSCH("LINK",ZT1,ZT2))
- if 'ZT2
- QUIT
- Begin DoDot:2
- +2 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^%ZTSCH("LINK",ZT1,ZT2,ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:3
- +3 IF $$MATCH(ZTS,ZTDUZ,ZTUSER)
- DO SORT(ZT2,ZTS)
- End DoDot:3
- End DoDot:2
- +4 QUIT
- End DoDot:1
- +5 WRITE "finished!",!
- +6 ;
- F5 ;
- +1 if $ORDER(^TMP($JOB,0))=""
- GOTO F6
- +2 SET ZTSAVE("^TMP($J,")=""
- DO EN^XUTMDEVQ("LIST^XUTMQ","TASK LIST",.ZTSAVE)
- +3 KILL ^TMP($JOB)
- +4 QUIT
- +5 SET ZT1=""
- FOR
- SET ZT1=$ORDER(^TMP($JOB,ZT1),-1)
- if ZT1=""
- QUIT
- Begin DoDot:1
- +6 SET ZTS=0
- FOR
- SET ZTS=$ORDER(^TMP($JOB,ZT1,ZTS))
- if 'ZTS
- QUIT
- Begin DoDot:2
- +7 DO PRINT
- End DoDot:2
- IF ZTOUT
- QUIT
- +8 QUIT
- End DoDot:1
- IF ZTOUT
- QUIT
- +9 IF ZTOUT
- QUIT
- +10 ;
- F6 IF 'ZTC
- WRITE !!
- Begin DoDot:1
- +1 IF ZTKEY
- WRITE ZTUSER," has"
- +2 IF '$TEST
- WRITE "You have"
- +3 WRITE " no scheduled or waiting tasks in this volume set's Task File.",!
- End DoDot:1
- +4 WRITE !
- SET DIR(0)="E"
- +5 SET DIR("A")="Press RETURN to continue"
- IF ZTC
- Begin DoDot:1
- +6 SET DIR("A")="End of listing. "_DIR("A")
- End DoDot:1
- +7 DO ^DIR
- KILL ^TMP($JOB)
- QUIT
- +8 ;
- KEY ;ALL/FUT--set up variables for chosen user
- +1 ;input: ZTKEY,ZTNAME
- +2 ;input/output: ZTH,ZTOUT
- +3 ;output: ZTDUZ,ZTUSER
- +4 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
- +5 IF 'ZTKEY
- SET ZTDUZ=DUZ
- SET ZTUSER=ZTNAME
- SET ZTH=ZTH_"you."
- QUIT
- +6 WRITE !!,"Select the user whose tasks you wish to see.",!!
- +7 SET DIR(0)="P^200:AEMNQ"
- +8 SET DIR("B")=ZTNAME
- +9 SET DIR("?")="Select the user whose tasks you wish to see."
- K DO ^DIR
- KILL DIR
- +1 IF $DATA(DTOUT)
- WRITE " ** TIMEOUT **",$CHAR(7)
- +2 IF $DATA(DUOUT)
- WRITE " ** ^ ESCAPE **"
- +3 IF $DATA(DIRUT)
- SET ZTOUT=1
- QUIT
- +4 WRITE !!,"Please wait while I search for the tasks...searching..."
- +5 SET ZTDUZ=$PIECE(Y,U)
- SET ZTUSER=$PIECE(Y,U,2)
- +6 IF ZTUSER'=ZTNAME
- SET ZTH=ZTH_$PIECE(ZTUSER,",",2,999)_" "_$PIECE(ZTUSER,",")_"."
- +7 IF '$TEST
- SET ZTH=ZTH_"you."
- +8 QUIT
- +9 ;
- MATCH(ZTS,ZTDUZ,ZTREC) ;
- +1 ;ALL/FUT--determine whether task was created by user
- +2 ;input: task #, user #, user name
- +3 ;output: Boolean, does task belong to user?
- +4 SET ZTREC=$GET(^%ZTSK(ZTS,0))
- +5 IF ZTREC=""
- QUIT 0
- +6 IF $PIECE(ZTREC,U,3)'=ZTDUZ
- QUIT 0
- +7 IF $PIECE(ZTREC,U,10)=""
- QUIT 1
- +8 QUIT $PIECE(ZTREC,U,10)=ZTUSER
- +9 ;
- SORT(ZTDTH,ZTSK) ;
- +1 ;ALL/FUT--sort task by start time.
- +2 ;input: start time, task number
- +3 ;output: ^TMP($J) node
- +4 IF ZTDTH[","
- SET ZTDTH=$$H3^%ZTM(ZTDTH)
- +5 SET ^TMP($JOB,ZTDTH,ZTSK)=""
- +6 QUIT
- +7 ;
- PRINT ;ALL/FUT--print a task
- +1 ;input: ZTH,ZTKEY,ZTNAME,ZTS,XUTMUCI
- +2 ;input/output: ZTC,ZTF
- +3 ;output: ZTOUT
- +4 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y,ZTSK
- +5 IF 'ZTC
- WRITE @IOF,!,ZTH,!
- +6 IF 'ZTF
- WRITE !,"-------------------------------------------------------------------------------"
- +7 SET ZTF=0
- +8 DO EN^XUTMTP(ZTS)
- +9 IF $Y'>18
- SET ZTC=ZTC+1
- QUIT
- +10 WRITE !
- SET ZTF=1
- SET DIR(0)="E"
- DO ^DIR
- +11 SET ZTOUT=$DATA(DTOUT)!$DATA(DUOUT)
- IF ZTOUT
- QUIT
- +12 WRITE @IOF
- QUIT
- +13 ;