XMCB ;ISC-SF/GMB- Batch Message Transmission ;08/28/2003  10:11
 ;;8.0;MailMan;**22**;Jun 28, 2002
 ; Was (WASH ISC)/THM
 ;
 ; Entry points used by MailMan options (not covered by DBIA):
 ; TAPEOUT  XMS-SEQ-TRANSMIT     (was BAT^XMS)
 ; TAPEIN   XMR-SEQ-RECEIVE      (was BAT^XMR)
 ; GLBOUT   XMR-UCI-SEND         (was TASKER^XMS)
 ; GLBIN    XMR-UCI-RCV          (was TASKER^XMR)
 Q
TAPEOUT ; Write messages to tape.
 ; (Transmit them to another site via tape.)
 N XMC,XMCHAN,XMINST,XMSITE,XMABORT,ER
 S XMABORT=0,XMCHAN="TAPE",ER=0,XMC("BATCH")=1
 D ASKINST^XMCXU(.XMINST,.XMSITE,.XMABORT,"M") Q:XMABORT
 D OPEN^XML Q:$G(ER)!$G(POP)
 D OUTDO
 D KL^XMC
 Q
TAPEIN ; Read messages from tape.
 ; (Receive them from another site via tape.)
 N XM,XMC,XMCHAN,ER
 S ER=0,(XMC("BATCH"),XMC("TURN"))=1,XMCHAN="T-IN"
 I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D R^XMCTRAP"
 E  S X="R^XMCTRAP",@^%ZOSF("TRAP")
 D ENT^XMR
 U IO(0) D ^%ZISC
 W:'$D(ZTQUEUED) !,$$EZBLD^DIALOG(42257,+$G(XMC("R"))) ;Messages received: |1|
 G KL1^XMC
 Q
GLBOUT ; Write messages to a global.
 ; (Transmit them to another UCI via the global.)
 W $C(7),!!
 I '$D(^%ZISL(4.281,0)) W !!,$$EZBLD^DIALOG(42250) Q  ;File 4.281 is not set up properly.
 N XMTEXT
 D BLD^DIALOG(42251,"","","XMTEXT","F")
 D MSG^DIALOG("WM","","","","XMTEXT")
 ;  ******* I M P O R T A N T *******"
 ;This option transmits messages from one UCI to another via ^%ZISL(4.281.
 ;Each UCI must be running MailMan, and file 4.281 must be translated and
 ;accessible from both UCIs.  In the two-step process, the messages are
 ;written to the global from one UCI, and read from it in the other.
 ;
 ;Invoke this option on the sending UCI, and select the domain whose
 ;messages are to be transmitted.  (The domain name must be the exact
 ;name of the domain of the receiving UCI - no synonyms.)  The messages
 ;are written to file 4.281 and deleted from the transmit queue.
 ;
 ;Log on to the receiving UCI and invoke the receiver.  It will read all
 ;messages in file 4.281 which were sent to it (it can't read any
 ;messages sent to any other domain), and queue them to be delivered.
 ;The messages will then be deleted from file 4.281.
 N XMC,XMCHAN,XMLINE,XMFDA,XMIEN,XMIENS,XMABORT,XMINST,XMSITE,XMTASK,ER,Y
 S XMCHAN="TASKER",(XMABORT,XMLINE)=0
 D ASKINST^XMCXU(.XMINST,.XMSITE,.XMABORT,"M") Q:XMABORT
 D GET^XML Q:$G(ER)!$G(POP)
 S XMFDA(4.281,"+1,",.01)=^XMB("NETNAME")
 D UPDATE^DIE("","XMFDA","XMIEN")
 S XMTASK=XMIEN(1)
 D OUTDO
 S XMIENS=XMTASK_","
 S XMFDA(4.281,XMIENS,1)=XMSITE
 D FILE^DIE("","XMFDA")
 D KL^XMC
 Q
OUTDO ;
 N XM,XMDUZ
 U IO(0)
 S XM="",(XMC("BATCH"),XMC("TURN"))=1,XMREC="Q"
 D GET^XMCXT(0)
 W !,$$EZBLD^DIALOG(42252) ;Dumping messages now
 U IO
 D ENTER^XMS
 D XMTFINIS^XMTDR(XMINST)
 U IO(0)
 I $D(XMC("S")) W $C(7)," ... ",$$EZBLD^DIALOG(42253,XMC("S")) ;Messages dumped: |1|
 X XMCLOSE
 Q
GLBIN ; Read messages from a global.
 ; (Receive them from another UCI via the global.)
 N XM,XMC,XMCHAN,XMDUZ,XMTASK,XMNETNAM,XMSITE,XMABORT,XMI,XMIREC,XMCNT,Y
 S XM=$S($D(ZTQUEUED):"",1:"D")
 S XMNETNAM=^XMB("NETNAME"),XMABORT=0,XMCHAN="TASK-IN"
 D GET^XML Q:$G(ER)
 I XM["D" D  Q:XMABORT
 . D GET^XMCXT(0)
 . D DOTRAN^XMC1(42254,XMNETNAM) ;Receive messages for |1|
 . D PAGE^XMXUTIL(.XMABORT)
 S (XMI,XMCNT)=0
 F  S XMI=$O(^%ZISL(4.281,"C",XMNETNAM,XMI)) Q:'XMI  D  Q:ER
 . S XMIREC=$G(^%ZISL(4.281,XMI,0)) Q:XMIREC=""
 . Q:$P(XMIREC,U,2)'=XMNETNAM
 . S XMSITE=$P(XMIREC,U,1)
 . S XMIREC=$G(^%ZISL(4.281,XMI,"T",1,0)) Q:XMIREC'?1"HELO ".E
 . S XMCNT=XMCNT+1
 . I XM["D" D DOTRAN^XMC1(42255,XMI,XMSITE) ;Loading entry #|1| from |2|
 . S XMTASK=XMI,ER=0,XMLINE=.999,(XMC("BATCH"),XMC("TURN"),XMQUIET)=1
 . D RECEIVE^XMR Q:ER
 . N DA,DIK
 . S DA=XMTASK,DIK="^%ZISL(4.281," D ^DIK
 I XM["D" D
 . I XMCNT D DOTRAN^XMC1(42257,XMC("R")) Q  ;Messages received: |1|
 . D DOTRAN^XMC1(42256,XMNETNAM) ;No entries found in file 4.281 for |1|
 D KL^XMC
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXMCB   4011     printed  Sep 23, 2025@19:47:13                                                                                                                                                                                                        Page 2
XMCB      ;ISC-SF/GMB- Batch Message Transmission ;08/28/2003  10:11
 +1       ;;8.0;MailMan;**22**;Jun 28, 2002
 +2       ; Was (WASH ISC)/THM
 +3       ;
 +4       ; Entry points used by MailMan options (not covered by DBIA):
 +5       ; TAPEOUT  XMS-SEQ-TRANSMIT     (was BAT^XMS)
 +6       ; TAPEIN   XMR-SEQ-RECEIVE      (was BAT^XMR)
 +7       ; GLBOUT   XMR-UCI-SEND         (was TASKER^XMS)
 +8       ; GLBIN    XMR-UCI-RCV          (was TASKER^XMR)
 +9        QUIT 
TAPEOUT   ; Write messages to tape.
 +1       ; (Transmit them to another site via tape.)
 +2        NEW XMC,XMCHAN,XMINST,XMSITE,XMABORT,ER
 +3        SET XMABORT=0
           SET XMCHAN="TAPE"
           SET ER=0
           SET XMC("BATCH")=1
 +4        DO ASKINST^XMCXU(.XMINST,.XMSITE,.XMABORT,"M")
           if XMABORT
               QUIT 
 +5        DO OPEN^XML
           if $GET(ER)!$GET(POP)
               QUIT 
 +6        DO OUTDO
 +7        DO KL^XMC
 +8        QUIT 
TAPEIN    ; Read messages from tape.
 +1       ; (Receive them from another site via tape.)
 +2        NEW XM,XMC,XMCHAN,ER
 +3        SET ER=0
           SET (XMC("BATCH"),XMC("TURN"))=1
           SET XMCHAN="T-IN"
 +4        IF $$NEWERR^%ZTER
               NEW $ETRAP,$ESTACK
               SET $ETRAP="D R^XMCTRAP"
 +5       IF '$TEST
               SET X="R^XMCTRAP"
               SET @^%ZOSF("TRAP")
 +6        DO ENT^XMR
 +7        USE IO(0)
           DO ^%ZISC
 +8       ;Messages received: |1|
           if '$DATA(ZTQUEUED)
               WRITE !,$$EZBLD^DIALOG(42257,+$GET(XMC("R")))
 +9        GOTO KL1^XMC
 +10       QUIT 
GLBOUT    ; Write messages to a global.
 +1       ; (Transmit them to another UCI via the global.)
 +2        WRITE $CHAR(7),!!
 +3       ;File 4.281 is not set up properly.
           IF '$DATA(^%ZISL(4.281,0))
               WRITE !!,$$EZBLD^DIALOG(42250)
               QUIT 
 +4        NEW XMTEXT
 +5        DO BLD^DIALOG(42251,"","","XMTEXT","F")
 +6        DO MSG^DIALOG("WM","","","","XMTEXT")
 +7       ;  ******* I M P O R T A N T *******"
 +8       ;This option transmits messages from one UCI to another via ^%ZISL(4.281.
 +9       ;Each UCI must be running MailMan, and file 4.281 must be translated and
 +10      ;accessible from both UCIs.  In the two-step process, the messages are
 +11      ;written to the global from one UCI, and read from it in the other.
 +12      ;
 +13      ;Invoke this option on the sending UCI, and select the domain whose
 +14      ;messages are to be transmitted.  (The domain name must be the exact
 +15      ;name of the domain of the receiving UCI - no synonyms.)  The messages
 +16      ;are written to file 4.281 and deleted from the transmit queue.
 +17      ;
 +18      ;Log on to the receiving UCI and invoke the receiver.  It will read all
 +19      ;messages in file 4.281 which were sent to it (it can't read any
 +20      ;messages sent to any other domain), and queue them to be delivered.
 +21      ;The messages will then be deleted from file 4.281.
 +22       NEW XMC,XMCHAN,XMLINE,XMFDA,XMIEN,XMIENS,XMABORT,XMINST,XMSITE,XMTASK,ER,Y
 +23       SET XMCHAN="TASKER"
           SET (XMABORT,XMLINE)=0
 +24       DO ASKINST^XMCXU(.XMINST,.XMSITE,.XMABORT,"M")
           if XMABORT
               QUIT 
 +25       DO GET^XML
           if $GET(ER)!$GET(POP)
               QUIT 
 +26       SET XMFDA(4.281,"+1,",.01)=^XMB("NETNAME")
 +27       DO UPDATE^DIE("","XMFDA","XMIEN")
 +28       SET XMTASK=XMIEN(1)
 +29       DO OUTDO
 +30       SET XMIENS=XMTASK_","
 +31       SET XMFDA(4.281,XMIENS,1)=XMSITE
 +32       DO FILE^DIE("","XMFDA")
 +33       DO KL^XMC
 +34       QUIT 
OUTDO     ;
 +1        NEW XM,XMDUZ
 +2        USE IO(0)
 +3        SET XM=""
           SET (XMC("BATCH"),XMC("TURN"))=1
           SET XMREC="Q"
 +4        DO GET^XMCXT(0)
 +5       ;Dumping messages now
           WRITE !,$$EZBLD^DIALOG(42252)
 +6        USE IO
 +7        DO ENTER^XMS
 +8        DO XMTFINIS^XMTDR(XMINST)
 +9        USE IO(0)
 +10      ;Messages dumped: |1|
           IF $DATA(XMC("S"))
               WRITE $CHAR(7)," ... ",$$EZBLD^DIALOG(42253,XMC("S"))
 +11       XECUTE XMCLOSE
 +12       QUIT 
GLBIN     ; Read messages from a global.
 +1       ; (Receive them from another UCI via the global.)
 +2        NEW XM,XMC,XMCHAN,XMDUZ,XMTASK,XMNETNAM,XMSITE,XMABORT,XMI,XMIREC,XMCNT,Y
 +3        SET XM=$SELECT($DATA(ZTQUEUED):"",1:"D")
 +4        SET XMNETNAM=^XMB("NETNAME")
           SET XMABORT=0
           SET XMCHAN="TASK-IN"
 +5        DO GET^XML
           if $GET(ER)
               QUIT 
 +6        IF XM["D"
               Begin DoDot:1
 +7                DO GET^XMCXT(0)
 +8       ;Receive messages for |1|
                   DO DOTRAN^XMC1(42254,XMNETNAM)
 +9                DO PAGE^XMXUTIL(.XMABORT)
               End DoDot:1
               if XMABORT
                   QUIT 
 +10       SET (XMI,XMCNT)=0
 +11       FOR 
               SET XMI=$ORDER(^%ZISL(4.281,"C",XMNETNAM,XMI))
               if 'XMI
                   QUIT 
               Begin DoDot:1
 +12               SET XMIREC=$GET(^%ZISL(4.281,XMI,0))
                   if XMIREC=""
                       QUIT 
 +13               if $PIECE(XMIREC,U,2)'=XMNETNAM
                       QUIT 
 +14               SET XMSITE=$PIECE(XMIREC,U,1)
 +15               SET XMIREC=$GET(^%ZISL(4.281,XMI,"T",1,0))
                   if XMIREC'?1"HELO ".E
                       QUIT 
 +16               SET XMCNT=XMCNT+1
 +17      ;Loading entry #|1| from |2|
                   IF XM["D"
                       DO DOTRAN^XMC1(42255,XMI,XMSITE)
 +18               SET XMTASK=XMI
                   SET ER=0
                   SET XMLINE=.999
                   SET (XMC("BATCH"),XMC("TURN"),XMQUIET)=1
 +19               DO RECEIVE^XMR
                   if ER
                       QUIT 
 +20               NEW DA,DIK
 +21               SET DA=XMTASK
                   SET DIK="^%ZISL(4.281,"
                   DO ^DIK
               End DoDot:1
               if ER
                   QUIT 
 +22       IF XM["D"
               Begin DoDot:1
 +23      ;Messages received: |1|
                   IF XMCNT
                       DO DOTRAN^XMC1(42257,XMC("R"))
                       QUIT 
 +24      ;No entries found in file 4.281 for |1|
                   DO DOTRAN^XMC1(42256,XMNETNAM)
               End DoDot:1
 +25       DO KL^XMC
 +26       QUIT