1 | XMXUTIL4 ;ISC-SF/GMB-List message recipients (cont.) ;04/11/2002 10:44
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; All entry points are for internal MailMan use only.
|
---|
4 | QLIST(XMZ,XMFLAGS,XMAMT,XMSTART,XMTROOT) ; list them
|
---|
5 | N XMCNT,XMIEN,XMREC,XMTO,XMNAME
|
---|
6 | S XMCNT=0,XMIEN=+$G(XMSTART("IEN"))
|
---|
7 | F S XMIEN=$O(^XMB(3.9,XMZ,1,XMIEN)) Q:'XMIEN D Q:XMCNT=XMAMT
|
---|
8 | . S XMCNT=XMCNT+1
|
---|
9 | . S XMREC=$G(^XMB(3.9,XMZ,1,XMIEN,0))
|
---|
10 | . S XMTO=$P(XMREC,U,1)
|
---|
11 | . S XMNAME=$$NAME^XMXUTIL(XMTO)
|
---|
12 | . D QDFLDS(XMZ,XMFLAGS,XMIEN,XMREC,XMNAME,XMTROOT,XMCNT)
|
---|
13 | S XMSTART("IEN")=XMIEN
|
---|
14 | S @(XMTROOT_"0)")=XMCNT_U_XMAMT_U_$S(XMAMT="*":0,1:$O(^XMB(3.9,XMZ,1,XMIEN))>0)
|
---|
15 | Q
|
---|
16 | QDFLDS(XMZ,XMFLAGS,XMIEN,XMREC,XMNAME,XMTROOT,XMCNT) ;
|
---|
17 | S @(XMTROOT_XMCNT_",""TO"")")=$P(XMREC,U,1)
|
---|
18 | S @(XMTROOT_XMCNT_",""TO NAME"")")=XMNAME
|
---|
19 | I $D(^XMB(3.9,XMZ,1,XMIEN,"T")) S @(XMTROOT_XMCNT_",""TYPE"")")=$P(^("T"),U,1)
|
---|
20 | I $D(^XMB(3.9,XMZ,1,XMIEN,"F")) D FWD(XMZ,XMIEN)
|
---|
21 | I $P(XMREC,U,1)?.N D Q
|
---|
22 | . S @(XMTROOT_XMCNT_",""TO ID"")")="L" ; local user
|
---|
23 | . S @(XMTROOT_XMCNT_",""TO DUZ"")")=$P(XMREC,U,1)
|
---|
24 | . I $P(XMREC,U,2)'="" D
|
---|
25 | . . S @(XMTROOT_XMCNT_",""RESP"")")=$P(XMREC,U,2)
|
---|
26 | . I $P(XMREC,U,3)'="" D
|
---|
27 | . . S @(XMTROOT_XMCNT_",""LREAD"")")=$P(XMREC,U,3)
|
---|
28 | . . S @(XMTROOT_XMCNT_",""LREAD MM"")")=$$MMDT^XMXUTIL1($P(XMREC,U,3))
|
---|
29 | . I $P(XMREC,U,10)'="" D
|
---|
30 | . . S @(XMTROOT_XMCNT_",""FREAD"")")=$P(XMREC,U,10)
|
---|
31 | . . S @(XMTROOT_XMCNT_",""FREAD MM"")")=$$MMDT^XMXUTIL1($P(XMREC,U,10))
|
---|
32 | . I $D(^XMB(3.9,XMZ,1,XMIEN,"C")) D
|
---|
33 | . . N XMD
|
---|
34 | . . S XMD=^XMB(3.9,XMZ,1,XMIEN,"C")
|
---|
35 | . . S @(XMTROOT_XMCNT_",""COPY"")")=XMD
|
---|
36 | . . S @(XMTROOT_XMCNT_",""COPY MM"")")=$$MMDT^XMXUTIL1(XMD)
|
---|
37 | . I $D(^XMB(3.9,XMZ,1,XMIEN,"D")),$G(^("D")) D
|
---|
38 | . . N XMD
|
---|
39 | . . S XMD=^XMB(3.9,XMZ,1,XMIEN,"D")
|
---|
40 | . . S @(XMTROOT_XMCNT_",""TERM"")")=XMD
|
---|
41 | . . S @(XMTROOT_XMCNT_",""TERM MM"")")=$$MMDT^XMXUTIL1(XMD)
|
---|
42 | . I $D(^XMB(3.9,XMZ,1,XMIEN,"S")) D
|
---|
43 | . . S @(XMTROOT_XMCNT_",""SURR"")")=^XMB(3.9,XMZ,1,XMIEN,"S")
|
---|
44 | I $E(XMNAME,1,2)="F.",$P(XMREC,U,12)'=""!$P(XMREC,U,11) D Q
|
---|
45 | . S @(XMTROOT_XMCNT_",""TO ID"")")="F" ; fax
|
---|
46 | . I $P(XMREC,U,5)'="" D
|
---|
47 | . . S @(XMTROOT_XMCNT_",""FDATE"")")=$P(XMREC,U,5)
|
---|
48 | . . S @(XMTROOT_XMCNT_",""FDATE MM"")")=$$MMDT^XMXUTIL1($P(XMREC,U,5))
|
---|
49 | . I $P(XMREC,U,6)'="" D
|
---|
50 | . . S @(XMTROOT_XMCNT_",""STATUS"")")=$P(XMREC,U,6)
|
---|
51 | . I $P(XMREC,U,11)'="" D
|
---|
52 | . . S @(XMTROOT_XMCNT_",""FAX IEN"")")=$P(XMREC,U,11)
|
---|
53 | . I $P(XMREC,U,12)'="" D
|
---|
54 | . . S @(XMTROOT_XMCNT_",""ID"")")=$P(XMREC,U,12)
|
---|
55 | I XMNAME["@" D Q
|
---|
56 | . S @(XMTROOT_XMCNT_",""TO ID"")")="R" ; remote
|
---|
57 | . I $P(XMREC,U,4)'="" D
|
---|
58 | . . S @(XMTROOT_XMCNT_",""ID"")")=$P(XMREC,U,4)
|
---|
59 | . I $P(XMREC,U,5)'="" D
|
---|
60 | . . S @(XMTROOT_XMCNT_",""XDATE"")")=$P(XMREC,U,5)
|
---|
61 | . . S @(XMTROOT_XMCNT_",""XDATE MM"")")=$$MMDT^XMXUTIL1($P(XMREC,U,5))
|
---|
62 | . I $P(XMREC,U,6)'="" D
|
---|
63 | . . S @(XMTROOT_XMCNT_",""STATUS"")")=$P(XMREC,U,6)
|
---|
64 | . I $P(XMREC,U,7)'="",$D(^DIC(4.2,$P(XMREC,U,7),0)) D
|
---|
65 | . . S @(XMTROOT_XMCNT_",""PATH"")")=$P(XMREC,U,7)
|
---|
66 | . . S @(XMTROOT_XMCNT_",""PATH NAME"")")=$P(^DIC(4.2,$P(XMREC,U,7),0),U)
|
---|
67 | . I $P(XMREC,U,8)'="" D
|
---|
68 | . . S @(XMTROOT_XMCNT_",""SECS"")")=$P(XMREC,U,8)
|
---|
69 | I $E(XMNAME,1,3)="* (" D Q
|
---|
70 | . S @(XMTROOT_XMCNT_",""TO ID"")")=$E(XMNAME) ; broadcast
|
---|
71 | ; I ".D.H.S."[("."_$E(XMNAME,1,2))
|
---|
72 | S @(XMTROOT_XMCNT_",""TO ID"")")=$E(XMNAME) ; device or server
|
---|
73 | I $P(XMREC,U,3)'="" D
|
---|
74 | . S @(XMTROOT_XMCNT_",""SDATE"")")=$P(XMREC,U,3)
|
---|
75 | . S @(XMTROOT_XMCNT_",""SDATE MM"")")=$$MMDT^XMXUTIL1($P(XMREC,U,3))
|
---|
76 | I $P(XMREC,U,6)'="" D
|
---|
77 | . S @(XMTROOT_XMCNT_",""STATUS"")")=$P(XMREC,U,6)
|
---|
78 | Q
|
---|
79 | FWD(XMZ,XMIEN) ;
|
---|
80 | Q:'$D(^XMB(3.9,XMZ,1,XMIEN,"F"))
|
---|
81 | N XMFWDREC,XMFWDBY
|
---|
82 | S XMFWDREC=^XMB(3.9,XMZ,1,XMIEN,"F")
|
---|
83 | S XMFWDBY=$P(XMFWDREC,U)
|
---|
84 | I $E(XMFWDBY)?1A!($E(XMFWDBY)="<") D
|
---|
85 | . N XMLEN
|
---|
86 | . S XMLEN=$L(XMFWDBY," ")
|
---|
87 | . S @(XMTROOT_XMCNT_",""FWD BY"")")=$P(XMFWDBY," ",1,XMLEN-4)
|
---|
88 | . S @(XMTROOT_XMCNT_",""FWD ON"")")=$P(XMFWDBY," ",XMLEN-3,XMLEN)
|
---|
89 | E I $E(XMFWDBY)?1N!($E(XMFWDBY)=".") D
|
---|
90 | . N XMLEN
|
---|
91 | . S XMFWDBY=$$NAME^XMXUTIL(+XMFWDBY)_" "_$P(XMFWDBY," ",2,99)
|
---|
92 | . S XMLEN=$L(XMFWDBY," ")
|
---|
93 | . S @(XMTROOT_XMCNT_",""FWD BY"")")=$P(XMFWDBY," ",1,XMLEN-4)
|
---|
94 | . S @(XMTROOT_XMCNT_",""FWD ON"")")=$P(XMFWDBY," ",XMLEN-3,XMLEN)
|
---|
95 | E S @(XMTROOT_XMCNT_",""FWD ON"")")=$E(XMFWDBY,2,99)
|
---|
96 | I $P(XMFWDREC,U,2) S @(XMTROOT_XMCNT_",""FWD BY DUZ"")")=$P(XMFWDREC,U,2)
|
---|
97 | I "R"'[$P(XMFWDREC,U,3) S @(XMTROOT_XMCNT_",""FWD TYPE"")")=$P(XMFWDREC,U,3)
|
---|
98 | Q:$P(XMFWDREC,U,4)="" ; or quit if FWD TYPE="A"
|
---|
99 | S @(XMTROOT_XMCNT_",""FWD BY ORIG"")")=$P(XMFWDREC,U,4)
|
---|
100 | I "R"'[$P(XMFWDREC,U,5) S @(XMTROOT_XMCNT_",""FWD TYPE ORIG"")")=$P(XMFWDREC,U,5)
|
---|
101 | Q
|
---|
102 | QFIND(XMZ,XMFLAGS,XMFIND,XMTROOT,XMCNT) ; find them
|
---|
103 | S XMCNT=0
|
---|
104 | D FIND^DIC(200,"","","A",XMFIND,"","B^BB^C^D","I $D(^XMB(3.9,XMZ,1,""C"",+Y))")
|
---|
105 | I '$D(DIERR) D MOVE(200,XMZ,XMFLAGS,XMTROOT,.XMCNT)
|
---|
106 | Q:$O(^XMB(3.9,XMZ,1,"C",":"))="" ; Quit if there aren't any non-local addressees
|
---|
107 | N XMSCREEN
|
---|
108 | S XMSCREEN=$S(+XMFIND=XMFIND:"I '$D(^XMB(3.9,XMZ,1,""C"",XMFIND))",1:"")
|
---|
109 | D FIND^DIC(3.91,","_XMZ_",","","C",XMFIND,"","C",XMSCREEN)
|
---|
110 | I '$D(DIERR) D MOVE(3.91,XMZ,XMFLAGS,XMTROOT,.XMCNT)
|
---|
111 | Q:$E(XMFIND)'?1U ; Quit if the search string does not begin with an upper case letter
|
---|
112 | Q:$O(^XMB(3.9,XMZ,1,"C","`"))="" ; Quit if there aren't any lower case addressees
|
---|
113 | ; FM will translate lower case to upper case in its search, but won't
|
---|
114 | ; translate upper to lower, so we do it here.
|
---|
115 | S XMSCREEN="I ^(0)]""`""" ; Limit search to lower case addresses
|
---|
116 | D FIND^DIC(3.91,","_XMZ_",","","C",$$LOW^XLFSTR(XMFIND),"","C",XMSCREEN)
|
---|
117 | I '$D(DIERR) D MOVE(3.91,XMZ,XMFLAGS,XMTROOT,.XMCNT)
|
---|
118 | Q
|
---|
119 | MOVE(XMFILE,XMZ,XMFLAGS,XMTROOT,XMCNT) ; move search results
|
---|
120 | N I,XMIEN,XMREC,XMNAME
|
---|
121 | S I=0
|
---|
122 | F S I=$O(^TMP("DILIST",$J,1,I)) Q:I="" D
|
---|
123 | . S XMIEN=^TMP("DILIST",$J,2,I)
|
---|
124 | . I XMFILE=200 D
|
---|
125 | . . S XMIEN=$O(^XMB(3.9,XMZ,1,"C",XMIEN,0))
|
---|
126 | . . S XMREC=$G(^XMB(3.9,XMZ,1,XMIEN,0))
|
---|
127 | . . S XMNAME=^TMP("DILIST",$J,1,I)
|
---|
128 | . E D
|
---|
129 | . . S XMREC=$G(^XMB(3.9,XMZ,1,XMIEN,0))
|
---|
130 | . . S XMNAME=$P(XMREC,U,1)
|
---|
131 | . S XMCNT=XMCNT+1
|
---|
132 | . D QDFLDS(XMZ,XMFLAGS,XMIEN,XMREC,XMNAME,XMTROOT,XMCNT)
|
---|
133 | Q
|
---|