Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XMJMLN

XMJMLN.m

Go to the documentation of this file.
  1. XMJMLN ;ISC-SF/GB-List/Read new messages ;12/12/2001 08:53
  1. ;;8.0;MailMan;;Jun 28, 2002
  1. ; Replaces LIST,PRIO^XMA0A (ISC-WASH/CAP)
  1. LISTONE(XMDUZ,XMK,XMKN,XMTYPE) ; List new/priority messages in one basket
  1. ; XMTYPE N0=New; N=Priority
  1. N XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX
  1. S XMIA=1 ; Interactive
  1. I '$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) D Q
  1. . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34016,1:34015)) ; You have no new (priority) messages in this basket.
  1. K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
  1. S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMKALL,XMZOOM,XMCD,XMABORT)=0,(XMDETAIL,XMMORE)=1
  1. S XMPMAX=IOSL-3
  1. D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX)
  1. S XMLEN("XMKZ")=$L($P(^XMB(3.7,XMDUZ,2,XMK,0),U,2))
  1. D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
  1. F D Q:XMABORT
  1. . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT^XMJML(XMDUZ,XMK,XMKN,XMDETAIL,.XMLEN,1)
  1. . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX)
  1. . D CHOOSE(XMDUZ,XMKALL,XMK,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT)
  1. . S:'$D(^XMB(3.7,XMDUZ,XMTYPE,XMK)) XMABORT=1
  1. K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
  1. Q
  1. LISTALL(XMDUZ,XMTYPE) ; List new/priority messages in all baskets
  1. ; XMTYPE N0=New; N=Priority
  1. N XMK,XMKZ,XMZ,XMCNT,XMABORT,XMLEN,XMFIRST,XMPAGE,XMDETAIL,XMPMAX,XMKALL,XMIA,XMZOOM,XMMORE,XMCD,XMOPT,XMOX
  1. S XMIA=1 ; Interactive
  1. I '$D(^XMB(3.7,XMDUZ,XMTYPE)) D Q
  1. . W !!,$$EZBLD^DIALOG($S(XMTYPE="N":34018,1:34017)) ; You have no new (priority) messages.
  1. K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
  1. S (XMKZ,XMZ)="",(XMPAGE,XMCNT,XMZOOM,XMCD,XMABORT)=0,(XMK,XMDETAIL,XMMORE,XMKALL)=1
  1. S XMPMAX=IOSL-3
  1. D SETOPT^XMJMLR1(XMDUZ,0,.XMOPT,.XMOX)
  1. D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN)
  1. F D Q:XMABORT
  1. . I XMCD S XMCD=0,XMDETAIL='XMDETAIL D INIT(XMDUZ,XMTYPE,XMDETAIL,0,.XMLEN)
  1. . D DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,.XMK,"",.XMKZ,.XMZ,.XMCNT,.XMFIRST,.XMPAGE,.XMMORE,.XMLEN,XMZOOM,XMPMAX)
  1. . D CHOOSE(XMDUZ,XMKALL,0,.XMKZ,.XMFIRST,.XMPAGE,XMMORE,.XMLEN,.XMZOOM,.XMOPT,.XMOX,"READMSG",.XMABORT)
  1. . S:'$D(^XMB(3.7,XMDUZ,XMTYPE)) XMABORT=1
  1. K ^TMP("XM",$J,"MSG"),^TMP("XM",$J,".")
  1. Q
  1. INIT(XMDUZ,XMTYPE,XMDETAIL,XMACTUAL,XMLEN) ;
  1. ; XMACTUAL 1/0=do/do not use actual XMKZ
  1. N XMK,XMKN,XMKNMAX,XMKZL
  1. S XMLEN("XMKZ")=$S(XMACTUAL:0,1:$L($P(^XMB(3.7,XMDUZ,0),U,6)))
  1. S XMK=0,XMKNMAX=""
  1. F S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK="" D
  1. . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1)
  1. . S:$L(XMKN)>$L(XMKNMAX) XMKNMAX=XMKN
  1. . Q:'XMACTUAL
  1. . S XMKZL=$L($O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1))
  1. . S:XMKZL>XMLEN("XMKZ") XMLEN("XMKZ")=XMKZL
  1. D INIT^XMJML(XMDUZ,"",XMKNMAX,XMDETAIL,.XMLEN)
  1. Q
  1. DISPLAY(XMDUZ,XMKALL,XMTYPE,XMDETAIL,XMK,XMKN,XMKZ,XMZ,XMCNT,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMPMAX) ;
  1. N XMREC,XMHDLINE
  1. S XMFIRST(XMPAGE)=XMKZ
  1. S XMHDLINE=$$HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE)
  1. D HEADER^XMJML(XMDETAIL,.XMLEN,XMHDLINE)
  1. I XMZOOM D Q
  1. . F S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ="" D Q:$Y>XMPMAX
  1. . . S XMREC=^TMP("XM",$J,"MSG",XMKZ)
  1. . . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN)
  1. F S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ="" D Q:$Y>XMPMAX
  1. . S XMREC=^TMP("XM",$J,"MSG",XMKZ)
  1. . D LISTMSG^XMJML($P(XMREC,U,1),$P(XMREC,U,2),XMKZ,$P(XMREC,U,3),XMDETAIL,.XMLEN)
  1. Q:$Y>XMPMAX!'XMMORE
  1. I XMKALL D
  1. . S XMK=XMK-.01
  1. . F S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:XMK="" D Q:$Y>XMPMAX
  1. . . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U)
  1. . . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX)
  1. . S XMMORE=$S('XMK:0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)):1,XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0)
  1. E D
  1. . D LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,.XMZ,.XMCNT,.XMLEN,XMPMAX)
  1. . S XMMORE=$S(XMZ="":0,$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")):1,1:0)
  1. S XMKZ=XMCNT
  1. Q
  1. HEADLINE(XMDUZ,XMKALL,XMK,XMKN,XMTYPE) ;
  1. N XMDIALOG,XMPARM
  1. I XMTYPE="N0" D
  1. . I XMKALL S XMDIALOG=34022,XMPARM(1)=$P(^XMB(3.7,XMDUZ,0),U,6) Q
  1. . S XMDIALOG=34024,XMPARM(1)=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,2),XMPARM(3)=XMKN
  1. E D
  1. . I XMKALL S XMDIALOG=34023,XMPARM(2)=$$TPMSGCT^XMXUTIL(XMDUZ) Q
  1. . S XMDIALOG=34024,XMPARM(2)=$$BPMSGCT^XMXUTIL(XMDUZ,XMK),XMPARM(3)=XMKN
  1. Q $$EZBLD^DIALOG(XMDIALOG,.XMPARM)
  1. LISTBSKT(XMDUZ,XMTYPE,XMDETAIL,XMK,XMKN,XMZ,XMCNT,XMLEN,XMPMAX) ;
  1. F S XMZ=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ),XMV("ORDER")) Q:XMZ="" D Q:$Y>XMPMAX
  1. . I '$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ADDITN^XMUT4A(XMDUZ,XMTYPE,XMK,XMZ)
  1. . I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q
  1. . S XMCNT=XMCNT+1
  1. . S ^TMP("XM",$J,"MSG",XMCNT)=XMK_U_XMKN_U_XMZ
  1. . D LISTMSG^XMJML(XMK,XMKN,XMCNT,XMZ,XMDETAIL,.XMLEN)
  1. Q
  1. CHOOSE(XMDUZ,XMKALL,XMK,XMKZ,XMFIRST,XMPAGE,XMMORE,XMLEN,XMZOOM,XMOPT,XMOX,XMREAD,XMABORT) ;
  1. N XMY,XMHI,XMLO
  1. I XMZOOM D
  1. . S XMMORE=$S(XMKZ="":0,1:1)
  1. E I $O(XMFIRST(XMPAGE)),XMKZ,$O(^TMP("XM",$J,"MSG",XMKZ)) D
  1. . S XMMORE=1
  1. . S XMFIRST(XMPAGE+1)=XMKZ
  1. S XMLO=$O(^TMP("XM",$J,"MSG",""))
  1. S XMHI=$O(^TMP("XM",$J,"MSG",""),-1)
  1. D XMDIR^XMJMLR1(XMDUZ,XMLO,XMHI,XMPAGE,XMMORE,"XM-U-BO-FULL SCREEN LIST","",.XMOPT,.XMOX,.XMY,.XMABORT) Q:XMABORT
  1. I '$D(XMY) S XMKZ=XMFIRST(XMPAGE) Q
  1. I XMY=""!($E(XMY)="+") D Q ; Next page
  1. . I XMMORE S XMPAGE=XMPAGE+1 Q
  1. . I XMPAGE=0 S XMABORT=1 Q
  1. . D AGAIN^XMJMLR(.XMABORT) Q:XMABORT
  1. . S XMPAGE=0
  1. . S XMKZ=XMFIRST(XMPAGE)
  1. I $E(XMY)="." D Q ; (De)Select messages
  1. . D DODOT
  1. . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
  1. . S XMKZ=XMFIRST(XMPAGE)
  1. I XMY>0 D Q
  1. . N XMREC
  1. . S XMREC=$G(^TMP("XM",$J,"MSG",XMY))
  1. . I XMREC="" D
  1. . . W $C(7)
  1. . E D
  1. . . N XMKZ
  1. . . S XMKZ=XMY
  1. . . D @XMREAD
  1. . . I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
  1. . S XMKZ=XMFIRST(XMPAGE)
  1. I XMY=0 D Q ; First page
  1. . S XMPAGE=0
  1. . S XMKZ=XMFIRST(XMPAGE)
  1. I $E(XMY)="-" D Q ; Previous page
  1. . S:XMPAGE>0 XMPAGE=XMPAGE-1
  1. . S XMKZ=XMFIRST(XMPAGE)
  1. D @XMY
  1. S XMKZ=XMFIRST(XMPAGE)
  1. Q
  1. READMSG ; (XMDUZ,XMKZ,XMREC,XMTYPE) <- needed!
  1. N XMK,XMKN,XMZ
  1. S XMK=$P(XMREC,U,1),XMKN=$P(XMREC,U,2),XMZ=$P(XMREC,U,3)
  1. I XMDUZ'=DUZ,'$$SURRACC^XMXSEC(XMDUZ,"",XMZ,$G(^XMB(3.9,XMZ,0))) D Q ; "read"
  1. . D SHOW^XMJERR
  1. . D WAIT^XMXUTIL
  1. D READNEW^XMJBN(XMDUZ,XMK,XMKN,XMZ)
  1. Q:$D(^XMB(3.7,XMDUZ,XMTYPE,XMK,XMZ))
  1. K ^TMP("XM",$J,"MSG",XMKZ)
  1. K:$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ)
  1. Q
  1. DODOT ;
  1. N I,XMSTRIKE,XM1,XMN,XMKZ
  1. I $E(XMY,2)="-" S XMSTRIKE=1,XMY=$E(XMY,3,999)
  1. E S XMSTRIKE=0,XMY=$E(XMY,2,999)
  1. I XMY="*" D Q
  1. . I XMSTRIKE K ^TMP("XM",$J,".") Q
  1. . S XMKZ=""
  1. . F S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ S ^TMP("XM",$J,".",XMKZ)=""
  1. F I=1:1:$L(XMY,",") D
  1. . S XMKZ=$P(XMY,",",I)
  1. . I XMKZ["-" D Q
  1. . . S XM1=$P(XMKZ,"-")
  1. . . S XMN=$P(XMKZ,"-",2) S:XMN="" XMN=XMHI
  1. . . S XMKZ=XM1-.1
  1. . . I 'XMSTRIKE D Q
  1. . . . F S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:XMKZ>XMN!'XMKZ D
  1. . . . . S:'$D(^TMP("XM",$J,".",XMKZ)) ^TMP("XM",$J,".",XMKZ)=""
  1. . . F S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:XMKZ>XMN!'XMKZ K ^TMP("XM",$J,".",XMKZ)
  1. . I 'XMSTRIKE D Q
  1. . . I $D(^TMP("XM",$J,"MSG",XMKZ)),'$D(^TMP("XM",$J,".",XMKZ)) S ^TMP("XM",$J,".",XMKZ)=""
  1. . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ)
  1. Q
  1. CD ; Change Detail
  1. S XMCD=1
  1. Q
  1. D ; Delete messages
  1. D DELETE^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
  1. Q
  1. F ; Forward messages
  1. D FORWARD^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. FI ; Filter messages
  1. D FILTER^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. H ; Headerless Print messages
  1. D PRINT^XMJMORX(XMDUZ,0)
  1. D WAIT^XMXUTIL
  1. Q
  1. L ; Later messages
  1. D LATER^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. NT ; New Toggle messages
  1. D NEWTOGL^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. O ; Opposite toggle
  1. N XMKZ
  1. S XMKZ=0
  1. F S XMKZ=$O(^TMP("XM",$J,"MSG",XMKZ)) Q:'XMKZ D
  1. . I $D(^TMP("XM",$J,".",XMKZ)) K ^TMP("XM",$J,".",XMKZ) Q
  1. . S ^TMP("XM",$J,".",XMKZ)=""
  1. S XMPAGE=0
  1. Q
  1. P ; Print messages
  1. D PRINT^XMJMORX(XMDUZ,1)
  1. D WAIT^XMXUTIL
  1. Q
  1. S ; Save messages
  1. D SAVE^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
  1. Q
  1. T ; Terminate messages
  1. D TERM^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. I XMZOOM,'$D(^TMP("XM",$J,".")) D Z
  1. Q
  1. V ; Vaporize messages
  1. D VAPOR^XMJMORX(XMDUZ,XMKALL,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. X ; Xmit Priority Toggle messages (for Postmaster only)
  1. D XMTPRI^XMJMOR(XMDUZ,XMK)
  1. D WAIT^XMXUTIL
  1. Q
  1. Z ; Zoom toggle
  1. N I
  1. I XMZOOM D
  1. . S XMZOOM=0
  1. . S I=""
  1. . F S I=$O(XMFIRST(0,I)) Q:I="" S XMFIRST(I)=XMFIRST(0,I)
  1. . S XMPAGE=XMPAGE(0)
  1. E D
  1. . S XMZOOM=1
  1. . S I=""
  1. . F S I=$O(XMFIRST(I)) Q:I="" S XMFIRST(0,I)=XMFIRST(I)
  1. . S XMPAGE(0)=XMPAGE
  1. . S XMPAGE=0
  1. Q