1 | XMA32A ;ISC-SF/GMB-Purge Messages by Date (cont.) ;12/04/2002 13:42
|
---|
2 | ;;8.0;MailMan;**10**;Jun 28, 2002
|
---|
3 | ; Was (WASH ISC)/CAP
|
---|
4 | ;
|
---|
5 | ; XMPARM("PDATE") Purge all messages older than this date
|
---|
6 | ; XMCNT Total messages processed
|
---|
7 | ; XMKILL("START") Messages in ^XMB(3.9 before purge started
|
---|
8 | ; XMKILL("MSG") Messages purged
|
---|
9 | ; XMKILL("RESP") Responses killed
|
---|
10 | ; XMDUZ Pointer to mailbox
|
---|
11 | ; XMZ Current message being processed
|
---|
12 | ENT ;
|
---|
13 | N XMCRE8,XMIEN,XMCNT,XMKILL,XMHDR,XMABORT
|
---|
14 | D INIT(.XMIEN,.XMPARM,.XMKILL,.XMHDR,.XMABORT)
|
---|
15 | D PROCESS(XMIEN,.XMCRE8,.XMPARM,.XMKILL,.XMCNT,.XMHDR,.XMABORT)
|
---|
16 | D FINISH(XMIEN,XMCRE8,.XMPARM,.XMKILL,XMCNT,.XMHDR,.XMABORT)
|
---|
17 | Q
|
---|
18 | INIT(XMIEN,XMPARM,XMKILL,XMHDR,XMABORT) ;
|
---|
19 | I IO'=IO(0) U IO
|
---|
20 | S (XMHDR("PAGE"),XMKILL("MSG"),XMKILL("RESP"),XMABORT)=0
|
---|
21 | S XMKILL("START")=$P(^XMB(3.9,0),U,4)
|
---|
22 | D INITAUDT(.XMIEN,.XMPARM,.XMHDR)
|
---|
23 | S XMHDR("PDATE")=$$FMTE^XLFDT(XMPARM("PDATE"),5)
|
---|
24 | S XMHDR("NOW")=$$FMTE^XLFDT(XMHDR("NOW"),5)
|
---|
25 | Q:IO=""
|
---|
26 | W:$E(IOST,1,2)="C-" @IOF D PRTHDR(.XMPARM,.XMHDR)
|
---|
27 | Q
|
---|
28 | INITAUDT(XMIEN,XMPARM,XMHDR) ;
|
---|
29 | N XMFDA
|
---|
30 | S XMHDR("NOW")=$$NOW^XLFDT
|
---|
31 | S XMFDA(4.302,"+1,1,",.01)=XMHDR("NOW")
|
---|
32 | S:$D(XMPARM("START")) XMFDA(4.302,"+1,1,",3)=XMPARM("START")
|
---|
33 | S:$D(XMPARM("END")) XMFDA(4.302,"+1,1,",4)=XMPARM("END")
|
---|
34 | S XMFDA(4.302,"+1,1,",5)=$S(XMPARM("TYPE")=2:"1TEST",1:XMPARM("TYPE"))
|
---|
35 | S XMFDA(4.302,"+1,1,",6)=XMPARM("PDATE")
|
---|
36 | D UPDATE^DIE("","XMFDA","XMIEN")
|
---|
37 | S XMIEN=XMIEN(1)
|
---|
38 | Q
|
---|
39 | PROCESS(XMIEN,XMCRE8,XMPARM,XMKILL,XMCNT,XMHDR,XMABORT) ;
|
---|
40 | N XMZ,XMZREC
|
---|
41 | S (XMCRE8,XMZ)="",XMCNT=0
|
---|
42 | F S XMCRE8=$O(^XMB(3.9,"C",XMCRE8)) Q:'XMCRE8 Q:XMCRE8'<XMPARM("PDATE") D Q:XMABORT
|
---|
43 | . F S XMZ=$O(^XMB(3.9,"C",XMCRE8,XMZ)) Q:'XMZ D Q:XMABORT
|
---|
44 | . . S XMCNT=XMCNT+1 I XMCNT#5000=0 D CHK(XMIEN,XMCRE8,.XMPARM,.XMKILL,XMCNT,.XMHDR,.XMABORT)
|
---|
45 | . . I '$D(^XMB(3.9,XMZ)) K ^XMB(3.9,"C",XMCRE8,XMZ) Q
|
---|
46 | . . S XMZREC=$G(^XMB(3.9,XMZ,0))
|
---|
47 | . . Q:$P(XMZREC,U,8) ; Don't kill responses (they'll be purged when their original msg is)
|
---|
48 | . . I "^^^^^^^^"[XMZREC D KILL(XMZ,.XMKILL,.XMABORT,.XMPARM,.XMHDR) Q
|
---|
49 | . . Q:$D(^XMB(3.7,"M",XMZ,.6)) ; Do nothing if owned by SHARED,MAIL
|
---|
50 | . . Q:$O(^XMB(3.7,"M",XMZ,.5,999)) ; Do nothing if in Transmit queues or Server basket.
|
---|
51 | . . D KILL(XMZ,.XMKILL,.XMABORT,.XMPARM,.XMHDR)
|
---|
52 | . . ; Old msg; old response without original msg;
|
---|
53 | . . ; Old msg which thinks it's also a response;
|
---|
54 | . . ; Old response which thinks it's also the original msg.
|
---|
55 | Q
|
---|
56 | KILL(XMZ,XMKILL,XMABORT,XMPARM,XMHDR) ;
|
---|
57 | I $G(XMPARM("TEST")) D Q:XMABORT
|
---|
58 | . D HDR(2,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT
|
---|
59 | . W !,XMZ,?20,$$EZBLD^DIALOG(36416),$$FMTE^XLFDT(XMCRE8,5) ; " <<< Purge! Date = "
|
---|
60 | D KBASKETS(XMZ,.XMKILL,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT
|
---|
61 | D KMSG(XMZ,.XMKILL,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT
|
---|
62 | D KLATER(XMZ,.XMPARM)
|
---|
63 | Q
|
---|
64 | KBASKETS(XMZ,XMKILL,XMPARM,XMHDR,XMABORT) ;
|
---|
65 | N XMDUZ,XMK
|
---|
66 | S XMDUZ="",XMKILL("MSG")=XMKILL("MSG")+1
|
---|
67 | F S XMDUZ=$O(^XMB(3.7,"M",XMZ,XMDUZ)) Q:XMDUZ=""!XMABORT D
|
---|
68 | . S XMK=$O(^XMB(3.7,"M",XMZ,XMDUZ,0))
|
---|
69 | . Q:'XMK
|
---|
70 | . Q:'$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ))
|
---|
71 | . I $G(XMPARM("TEST")) D Q
|
---|
72 | . . D HDR(2,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT
|
---|
73 | . . W !?25,$$EZBLD^DIALOG(36417),?50,$J(XMDUZ,12),?79 ; Message deleted for DUZ:
|
---|
74 | . D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) ; Delete from user's basket
|
---|
75 | Q
|
---|
76 | KMSG(XMZ,XMKILL,XMPARM,XMHDR,XMABORT) ;
|
---|
77 | N XMZR,XMIEN,X
|
---|
78 | S XMIEN=0
|
---|
79 | F S XMIEN=$O(^XMB(3.9,XMZ,3,XMIEN)) Q:XMIEN'>0!XMABORT D
|
---|
80 | . S XMZR=$P($G(^XMB(3.9,XMZ,3,XMIEN,0)),U)
|
---|
81 | . S XMKILL("RESP")=XMKILL("RESP")+1
|
---|
82 | . I $G(XMPARM("TEST")) D Q
|
---|
83 | . . D HDR(2,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT
|
---|
84 | . . W !?25,$$EZBLD^DIALOG(36418),?50,$J(XMZR,20),?79 ; Response deleted:
|
---|
85 | . D KILLMSG^XMXUTIL(XMZR) ; Kill response
|
---|
86 | D:'$G(XMPARM("TEST")) KILLMSG^XMXUTIL(XMZ) ; Kill original message
|
---|
87 | Q
|
---|
88 | KLATER(XMZ,XMPARM) ;
|
---|
89 | Q:$G(XMPARM("TEST"))
|
---|
90 | N DIK,DA,XMDUZ
|
---|
91 | S DIK="^XMB(3.73,"
|
---|
92 | S (XMDUZ,DA)=""
|
---|
93 | F S XMDUZ=$O(^XMB(3.73,"AC",XMZ,XMDUZ)) Q:'XMDUZ D
|
---|
94 | . F S DA=$O(^XMB(3.73,"AC",XMZ,XMDUZ,DA)) Q:'DA D ^DIK
|
---|
95 | Q
|
---|
96 | HDR(XMLINES,XMPARM,XMHDR,XMABORT) ;
|
---|
97 | Q:$Y+XMLINES<IOSL
|
---|
98 | I $E(IOST,1,2)="C-" D PAGE^XMXUTIL(.XMABORT) Q:XMABORT
|
---|
99 | W @IOF D PRTHDR(.XMPARM,.XMHDR)
|
---|
100 | Q
|
---|
101 | PRTHDR(XMPARM,XMHDR) ;
|
---|
102 | S XMHDR("PAGE")=XMHDR("PAGE")+1
|
---|
103 | W $$EZBLD^DIALOG(36419),XMHDR("PDATE") ; Message purge, local create date <
|
---|
104 | W ?70,$$EZBLD^DIALOG(34542,XMHDR("PAGE")) ; Page |1|
|
---|
105 | W !,$$EZBLD^DIALOG(36420),XMHDR("NOW") ; Started:
|
---|
106 | W:XMPARM("TEST") ?60,$$EZBLD^DIALOG(36421) ; *TEST RUN*
|
---|
107 | W !
|
---|
108 | Q
|
---|
109 | FINISH(XMIEN,XMCRE8,XMPARM,XMKILL,XMCNT,XMHDR,XMABORT) ;
|
---|
110 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
111 | I XMABORT,IO'="" W @IOF D PRTHDR(.XMPARM,.XMHDR)
|
---|
112 | D CHK(XMIEN,XMCRE8,.XMPARM,.XMKILL,XMCNT,.XMHDR,.XMABORT)
|
---|
113 | Q:IO=""!'XMCNT
|
---|
114 | D HDR(5+(2*$G(ZTSTOP)),.XMPARM,.XMHDR,.XMABORT)
|
---|
115 | I $G(ZTSTOP) W !,$$EZBLD^DIALOG(36422) ; *** Stopping prematurely per user request ***
|
---|
116 | N XMVAR,XMTEXT
|
---|
117 | S XMVAR(1)=$$FMTE^XLFDT($$NOW^XLFDT,5),XMVAR(2)=XMCNT
|
---|
118 | S XMVAR(3)=XMKILL("MSG"),XMVAR(4)=XMKILL("RESP")
|
---|
119 | W !
|
---|
120 | D BLD^DIALOG(36423,.XMVAR,"","XMTEXT","F")
|
---|
121 | D MSG^DIALOG("WM","","","","XMTEXT")
|
---|
122 | ;Message purge finished on |1|.
|
---|
123 | ;|2| messages processed.
|
---|
124 | ;|3| original messages and |4| responses purged.
|
---|
125 | Q
|
---|
126 | CHK(XMIEN,XMCRE8,XMPARM,XMKILL,XMCNT,XMHDR,XMABORT) ;
|
---|
127 | D CHKAUDT(XMIEN,XMCRE8,.XMKILL)
|
---|
128 | I $D(ZTQUEUED),$$S^%ZTLOAD S (XMABORT,ZTSTOP)=1 Q ; User has asked the task to stop
|
---|
129 | Q:$E(IOST,1,2)'="C-"
|
---|
130 | I $X+$L(XMCNT)+1>IOM D
|
---|
131 | . D HDR(2,.XMPARM,.XMHDR,.XMABORT)
|
---|
132 | . W !
|
---|
133 | E W " "
|
---|
134 | W XMCNT
|
---|
135 | Q
|
---|
136 | CHKAUDT(XMIEN,XMCRE8,XMKILL) ;
|
---|
137 | N XMFDA
|
---|
138 | S XMFDA(4.302,XMIEN_",1,",1)=XMKILL("START")-XMKILL("MSG")-XMKILL("RESP")
|
---|
139 | S XMFDA(4.302,XMIEN_",1,",2)=XMKILL("MSG")+XMKILL("RESP")
|
---|
140 | S XMFDA(4.302,XMIEN_",1,",7)=$$NOW^XLFDT
|
---|
141 | S XMFDA(4.302,XMIEN_",1,",8)=XMCRE8
|
---|
142 | D FILE^DIE("","XMFDA")
|
---|
143 | Q
|
---|