XMCP ;ISC-SF/GMB-Poll Domains ;08/29/2002 13:12
;;8.0;MailMan;**4**;Jun 28, 2002
; Was (WASH ISC)/CAP/RM/AML/THM
;
; Entry points used by MailMan options (not covered by DBIA):
; POLL XMPOLL (was POLL^XMS1 and TSKPOLR^XMS5B)
;
; This option may be SCHEDULED.
; It goes through a list of domains whose FLAGS field contains P,
; meaning that the domains are to be "polled", that they should be
; contacted whether or not there are messages in their queues.
; If no messages are in the queues, the script for the poll domain
; will be 'played' anyway, and the TURN command executed to pull in
; any messages which may be waiting to be transmitted to this domain.
;
POLL ; Process domains on poll list.
S:$D(ZTQUEUED) ZTREQ="@"
K ^TMP("XM",$J)
I $$GOTTASKS W:'$D(ZTQUEUED) !!,$$EZBLD^DIALOG(42150) Q ;All domains have tasks.
I $$XMITOK D TASKXMIT
K ^TMP("XM",$J)
Q
GOTTASKS() ; Does every poll site have a task?
N XMTSK,XMINST,XMSITE,XMPARM
S XMINST=0
F S XMINST=$O(^DIC(4.2,"AC","P",XMINST)) Q:'XMINST D
. W:'$D(ZTQUEUED) "."
. S XMSITE=$P(^DIC(4.2,XMINST,0),U)
. S XMTSK=$$GETTSK^XMKPR(XMINST)
. I XMTSK,'$$TSKEXIST^XMKPR(XMINST,XMTSK) S ^TMP("XM",$J,XMSITE)=XMINST Q
. Q:$D(ZTQUEUED)
. S XMPARM(1)=XMTSK,XMPARM(2)=XMSITE
. W !,$$EZBLD^DIALOG(42151,.XMPARM) ;Task |1| is already scheduled for domain |2|
Q '$D(^TMP("XM",$J))
XMITOK() ; Ask whether eligible queues should be transmitted.
N DIR,DIRUT,DTOUT,DUOUT,X,Y,XMSITE
I $D(ZTQUEUED) Q 1
W @IOF,$$EZBLD^DIALOG(42152) ;These domains lack tasks:
S XMSITE=""
F S XMSITE=$O(^TMP("XM",$J,XMSITE)) Q:XMSITE="" D
. I $Y+4>IOSL D
. . D WAIT^XMXUTIL
. . W @IOF
. W !?5,XMSITE
S DIR(0)="YO"
S DIR("A")=$$EZBLD^DIALOG(42128) ;Requeue the missing tasks
S DIR("B")=$$EZBLD^DIALOG(39053) ;NO
S DIR("?")=$$EZBLD^DIALOG(42153) ;Answer YES to transmit these domains.
D ^DIR
I 'Y W !!,$$EZBLD^DIALOG(42130) ;Tasks not requeued.
Q Y
TASKXMIT ;
; Task off transmission jobs
N XMINST,XMSITE,XMPOLL
I '$D(ZTQUEUED) W !
S XMSITE="",XMPOLL=1
F S XMSITE=$O(^TMP("XM",$J,XMSITE)) Q:XMSITE="" S XMINST=^(XMSITE) D
. D QUEUE^XMCX(XMINST,XMSITE)
W:'$D(ZTQUEUED) !,$$EZBLD^DIALOG(42132) ; Finished.
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXMCP 2251 printed Nov 22, 2024@17:21:23 Page 2
XMCP ;ISC-SF/GMB-Poll Domains ;08/29/2002 13:12
+1 ;;8.0;MailMan;**4**;Jun 28, 2002
+2 ; Was (WASH ISC)/CAP/RM/AML/THM
+3 ;
+4 ; Entry points used by MailMan options (not covered by DBIA):
+5 ; POLL XMPOLL (was POLL^XMS1 and TSKPOLR^XMS5B)
+6 ;
+7 ; This option may be SCHEDULED.
+8 ; It goes through a list of domains whose FLAGS field contains P,
+9 ; meaning that the domains are to be "polled", that they should be
+10 ; contacted whether or not there are messages in their queues.
+11 ; If no messages are in the queues, the script for the poll domain
+12 ; will be 'played' anyway, and the TURN command executed to pull in
+13 ; any messages which may be waiting to be transmitted to this domain.
+14 ;
POLL ; Process domains on poll list.
+1 if $DATA(ZTQUEUED)
SET ZTREQ="@"
+2 KILL ^TMP("XM",$JOB)
+3 ;All domains have tasks.
IF $$GOTTASKS
if '$DATA(ZTQUEUED)
WRITE !!,$$EZBLD^DIALOG(42150)
QUIT
+4 IF $$XMITOK
DO TASKXMIT
+5 KILL ^TMP("XM",$JOB)
+6 QUIT
GOTTASKS() ; Does every poll site have a task?
+1 NEW XMTSK,XMINST,XMSITE,XMPARM
+2 SET XMINST=0
+3 FOR
SET XMINST=$ORDER(^DIC(4.2,"AC","P",XMINST))
if 'XMINST
QUIT
Begin DoDot:1
+4 if '$DATA(ZTQUEUED)
WRITE "."
+5 SET XMSITE=$PIECE(^DIC(4.2,XMINST,0),U)
+6 SET XMTSK=$$GETTSK^XMKPR(XMINST)
+7 IF XMTSK
IF '$$TSKEXIST^XMKPR(XMINST,XMTSK)
SET ^TMP("XM",$JOB,XMSITE)=XMINST
QUIT
+8 if $DATA(ZTQUEUED)
QUIT
+9 SET XMPARM(1)=XMTSK
SET XMPARM(2)=XMSITE
+10 ;Task |1| is already scheduled for domain |2|
WRITE !,$$EZBLD^DIALOG(42151,.XMPARM)
End DoDot:1
+11 QUIT '$DATA(^TMP("XM",$JOB))
XMITOK() ; Ask whether eligible queues should be transmitted.
+1 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y,XMSITE
+2 IF $DATA(ZTQUEUED)
QUIT 1
+3 ;These domains lack tasks:
WRITE @IOF,$$EZBLD^DIALOG(42152)
+4 SET XMSITE=""
+5 FOR
SET XMSITE=$ORDER(^TMP("XM",$JOB,XMSITE))
if XMSITE=""
QUIT
Begin DoDot:1
+6 IF $Y+4>IOSL
Begin DoDot:2
+7 DO WAIT^XMXUTIL
+8 WRITE @IOF
End DoDot:2
+9 WRITE !?5,XMSITE
End DoDot:1
+10 SET DIR(0)="YO"
+11 ;Requeue the missing tasks
SET DIR("A")=$$EZBLD^DIALOG(42128)
+12 ;NO
SET DIR("B")=$$EZBLD^DIALOG(39053)
+13 ;Answer YES to transmit these domains.
SET DIR("?")=$$EZBLD^DIALOG(42153)
+14 DO ^DIR
+15 ;Tasks not requeued.
IF 'Y
WRITE !!,$$EZBLD^DIALOG(42130)
+16 QUIT Y
TASKXMIT ;
+1 ; Task off transmission jobs
+2 NEW XMINST,XMSITE,XMPOLL
+3 IF '$DATA(ZTQUEUED)
WRITE !
+4 SET XMSITE=""
SET XMPOLL=1
+5 FOR
SET XMSITE=$ORDER(^TMP("XM",$JOB,XMSITE))
if XMSITE=""
QUIT
SET XMINST=^(XMSITE)
Begin DoDot:1
+6 DO QUEUE^XMCX(XMINST,XMSITE)
End DoDot:1
+7 ; Finished.
if '$DATA(ZTQUEUED)
WRITE !,$$EZBLD^DIALOG(42132)
+8 QUIT