XMA32A ;ISC-SF/GMB-Purge Messages by Date (cont.) ;12/04/2002 13:42 ;;8.0;MailMan;**10**;Jun 28, 2002 ; Was (WASH ISC)/CAP ; ; XMPARM("PDATE") Purge all messages older than this date ; XMCNT Total messages processed ; XMKILL("START") Messages in ^XMB(3.9 before purge started ; XMKILL("MSG") Messages purged ; XMKILL("RESP") Responses killed ; XMDUZ Pointer to mailbox ; XMZ Current message being processed ENT ; N XMCRE8,XMIEN,XMCNT,XMKILL,XMHDR,XMABORT D INIT(.XMIEN,.XMPARM,.XMKILL,.XMHDR,.XMABORT) D PROCESS(XMIEN,.XMCRE8,.XMPARM,.XMKILL,.XMCNT,.XMHDR,.XMABORT) D FINISH(XMIEN,XMCRE8,.XMPARM,.XMKILL,XMCNT,.XMHDR,.XMABORT) Q INIT(XMIEN,XMPARM,XMKILL,XMHDR,XMABORT) ; I IO'=IO(0) U IO S (XMHDR("PAGE"),XMKILL("MSG"),XMKILL("RESP"),XMABORT)=0 S XMKILL("START")=$P(^XMB(3.9,0),U,4) D INITAUDT(.XMIEN,.XMPARM,.XMHDR) S XMHDR("PDATE")=$$FMTE^XLFDT(XMPARM("PDATE"),5) S XMHDR("NOW")=$$FMTE^XLFDT(XMHDR("NOW"),5) Q:IO="" W:$E(IOST,1,2)="C-" @IOF D PRTHDR(.XMPARM,.XMHDR) Q INITAUDT(XMIEN,XMPARM,XMHDR) ; N XMFDA S XMHDR("NOW")=$$NOW^XLFDT S XMFDA(4.302,"+1,1,",.01)=XMHDR("NOW") S:$D(XMPARM("START")) XMFDA(4.302,"+1,1,",3)=XMPARM("START") S:$D(XMPARM("END")) XMFDA(4.302,"+1,1,",4)=XMPARM("END") S XMFDA(4.302,"+1,1,",5)=$S(XMPARM("TYPE")=2:"1TEST",1:XMPARM("TYPE")) S XMFDA(4.302,"+1,1,",6)=XMPARM("PDATE") D UPDATE^DIE("","XMFDA","XMIEN") S XMIEN=XMIEN(1) Q PROCESS(XMIEN,XMCRE8,XMPARM,XMKILL,XMCNT,XMHDR,XMABORT) ; N XMZ,XMZREC S (XMCRE8,XMZ)="",XMCNT=0 F S XMCRE8=$O(^XMB(3.9,"C",XMCRE8)) Q:'XMCRE8 Q:XMCRE8'0!XMABORT D . S XMZR=$P($G(^XMB(3.9,XMZ,3,XMIEN,0)),U) . S XMKILL("RESP")=XMKILL("RESP")+1 . I $G(XMPARM("TEST")) D Q . . D HDR(2,.XMPARM,.XMHDR,.XMABORT) Q:XMABORT . . W !?25,$$EZBLD^DIALOG(36418),?50,$J(XMZR,20),?79 ; Response deleted: . D KILLMSG^XMXUTIL(XMZR) ; Kill response D:'$G(XMPARM("TEST")) KILLMSG^XMXUTIL(XMZ) ; Kill original message Q KLATER(XMZ,XMPARM) ; Q:$G(XMPARM("TEST")) N DIK,DA,XMDUZ S DIK="^XMB(3.73," S (XMDUZ,DA)="" F S XMDUZ=$O(^XMB(3.73,"AC",XMZ,XMDUZ)) Q:'XMDUZ D . F S DA=$O(^XMB(3.73,"AC",XMZ,XMDUZ,DA)) Q:'DA D ^DIK Q HDR(XMLINES,XMPARM,XMHDR,XMABORT) ; Q:$Y+XMLINESIOM D . D HDR(2,.XMPARM,.XMHDR,.XMABORT) . W ! E W " " W XMCNT Q CHKAUDT(XMIEN,XMCRE8,XMKILL) ; N XMFDA S XMFDA(4.302,XMIEN_",1,",1)=XMKILL("START")-XMKILL("MSG")-XMKILL("RESP") S XMFDA(4.302,XMIEN_",1,",2)=XMKILL("MSG")+XMKILL("RESP") S XMFDA(4.302,XMIEN_",1,",7)=$$NOW^XLFDT S XMFDA(4.302,XMIEN_",1,",8)=XMCRE8 D FILE^DIE("","XMFDA") Q