1 | XMUT4C ;ISC-SF/GMB-Integrity Checker for file 3.9 ;04/19/2002 13:00
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; Was (WASH ISC)/CAP
|
---|
4 | MESSAGE(XMABORT) ;
|
---|
5 | N XMZ,XMCNT,XMZREC,XMCRE8
|
---|
6 | W !!,$$EZBLD^DIALOG(36094),! ; Checking MESSAGE file 3.9
|
---|
7 | F S XMZ=$O(^XMB(3.9,":"),-1) Q:XMZ?1N.N D BOGUS(XMZ)
|
---|
8 | S (XMZ,XMCNT)=0
|
---|
9 | F S XMZ=$O(^XMB(3.9,XMZ)) Q:XMZ'>0 D Q:XMABORT
|
---|
10 | . I XMZ'?1N.N D BOGUS(XMZ) Q
|
---|
11 | . S XMCNT=XMCNT+1 I XMCNT#5000=0 D Q:XMABORT
|
---|
12 | . . I '$D(ZTQUEUED) W:$X>40 ! W XMCNT,"." Q
|
---|
13 | . . I $$S^%ZTLOAD S (XMABORT,ZTSTOP)=1 ; User asked the task to stop
|
---|
14 | . S XMZREC=$G(^XMB(3.9,XMZ,0))
|
---|
15 | . I "^^^^^^^^"[XMZREC D
|
---|
16 | . . D ERR(XMZ,201) ; Msg has bad/no 0 node: not fixed
|
---|
17 | . E D
|
---|
18 | . . D SUBJ(XMZ,XMZREC)
|
---|
19 | . . I $P(XMZREC,U,2)="" D
|
---|
20 | . . . S $P(^XMB(3.9,XMZ,0),U,2)=$$EZBLD^DIALOG(34009) ;* No Name *
|
---|
21 | . . . D ERR(XMZ,206) ; Msg has no sender: fixed
|
---|
22 | . . I $P(XMZREC,U,3)="" D
|
---|
23 | . . . S $P(^XMB(3.9,XMZ,0),U,3)=DT
|
---|
24 | . . . D ERR(XMZ,207) ; Msg has no date/time: fixed
|
---|
25 | . D CRE8DT(XMZ,$P(XMZREC,U,3))
|
---|
26 | . D RESP(XMZ,XMZREC)
|
---|
27 | . D:$D(^XMB(3.9,XMZ,1)) RECIP(XMZ)
|
---|
28 | Q:XMABORT
|
---|
29 | W !!,$$EZBLD^DIALOG(36093,XMCNT) ; |1| messages in the MESSAGE file 3.9
|
---|
30 | I XMCNT=$P(^XMB(3.9,0),U,4) W !,$$EZBLD^DIALOG(36095) Q ; Zero node is OK
|
---|
31 | L +^XMB(3.9,0):1
|
---|
32 | S $P(^XMB(3.9,0),U,4)=XMCNT
|
---|
33 | L -^XMB(3.9,0)
|
---|
34 | W !,$$EZBLD^DIALOG(36096) ; I reset the zero node.
|
---|
35 | Q
|
---|
36 | BOGUS(XMZ) ;
|
---|
37 | D ERR(XMZ,210) ; Msg IEN is corrupted: fixed
|
---|
38 | I $L($P($G(^XMB(3.9,XMZ,0)),U,1)) K ^XMB(3.9,"B",$E($P(^XMB(3.9,XMZ,0),U,1),1,30),XMZ)
|
---|
39 | K ^XMB(3.9,"C",+$P($G(^XMB(3.9,XMZ,.6)),U,1),XMZ)
|
---|
40 | K ^XMB(3.9,XMZ)
|
---|
41 | Q
|
---|
42 | SUBJ(XMZ,XMZREC) ;
|
---|
43 | N XMSUBJ
|
---|
44 | S XMSUBJ=$P(XMZREC,U)
|
---|
45 | I XMSUBJ="" D
|
---|
46 | . S XMSUBJ=$$EZBLD^DIALOG(34012) ;* No Subject *
|
---|
47 | . S $P(^XMB(3.9,XMZ,0),U,1)=XMSUBJ
|
---|
48 | . S ^XMB(3.9,"B",XMSUBJ,XMZ)=""
|
---|
49 | . D ERR(XMZ,202) ; Msg has no subject: fixed
|
---|
50 | I '$D(^XMB(3.9,"B",$E(XMSUBJ,1,30),XMZ)) D
|
---|
51 | . I $L(XMSUBJ)>30,$D(^XMB(3.9,"B",XMSUBJ,XMZ)) D
|
---|
52 | . . K ^XMB(3.9,"B",XMSUBJ,XMZ)
|
---|
53 | . . D ERR(XMZ,205) ; Subject B xref too long: xref shortened
|
---|
54 | . E D ERR(XMZ,204) ; Subject has no B xref: xref created
|
---|
55 | . S ^XMB(3.9,"B",$E(XMSUBJ,1,30),XMZ)=""
|
---|
56 | I $L(XMSUBJ)<3!($L(XMSUBJ)>65) D
|
---|
57 | . D ERR(XMZ,203) ; Msg subject <3 or >65: fixed
|
---|
58 | . S XMSUBJ=$S($L(XMSUBJ)<3:XMSUBJ_"...",1:$E(XMSUBJ,1,65))
|
---|
59 | . N XMFDA
|
---|
60 | . S XMFDA(3.9,XMZ_",",.01)=XMSUBJ
|
---|
61 | . D FILE^DIE("","XMFDA")
|
---|
62 | Q
|
---|
63 | RESP(XMZ,XMZREC) ;
|
---|
64 | N XMZO
|
---|
65 | I $P(XMZREC,U,8) D Q
|
---|
66 | . S XMZO=$P(XMZREC,U,8)
|
---|
67 | . I XMZO=XMZ D Q
|
---|
68 | . . D ERR(XMZ,211) ; Message thinks it's a response to itself: fixed
|
---|
69 | . . S $P(^XMB(3.9,XMZ,0),U,8)=""
|
---|
70 | . I '$D(^XMB(3.9,XMZO,0)) D Q
|
---|
71 | . . D ERR(XMZ,212,XMZO) ; No original message |1| for this response: fixed
|
---|
72 | . . S $P(^XMB(3.9,XMZ,0),U,8)=""
|
---|
73 | . I $$ATTACHED(XMZO,XMZ) Q
|
---|
74 | . D ERR(XMZ,213,XMZO) ; Not in response chain of |1|: fixed
|
---|
75 | . S $P(^XMB(3.9,XMZ,0),U,8)=""
|
---|
76 | N XMSUBJ
|
---|
77 | S XMSUBJ=$P(XMZREC,U)
|
---|
78 | Q:XMSUBJ'?1"R"1.N
|
---|
79 | Q:$P(XMZREC,U,2)["@"
|
---|
80 | S XMZO=+$E(XMSUBJ,2,99)
|
---|
81 | I '$D(^XMB(3.9,XMZO,0)) D Q
|
---|
82 | . D ERR(XMZ,216,XMZO) ; No original message |1| for this response: not fixed
|
---|
83 | I '$$ATTACHED(XMZO,XMZ) D Q
|
---|
84 | . D ERR(XMZ,217,XMZO) ; Not in response chain of |1|: not fixed
|
---|
85 | D ERR(XMZ,218,XMZO) ; Piece 8 didn't point to original message |1|: fixed
|
---|
86 | S $P(^XMB(3.9,XMZ,0),U,8)=XMZO
|
---|
87 | Q
|
---|
88 | ATTACHED(XMZO,XMZ) ; Is XMZ in the response chain of XMZO?
|
---|
89 | N I
|
---|
90 | S I=0
|
---|
91 | F S I=$O(^XMB(3.9,XMZO,3,I)) Q:'I Q:$P($G(^(I,0)),U)=XMZ
|
---|
92 | Q +I
|
---|
93 | CRE8DT(XMZ,XMDATE) ;
|
---|
94 | S XMCRE8=$P($G(^XMB(3.9,XMZ,.6)),U,1)
|
---|
95 | I 'XMCRE8 D Q
|
---|
96 | . I $P(XMDATE,".",1)?7N S XMDATE=$P(XMDATE,".",1)
|
---|
97 | . E I XMDATE="" S XMDATE=DT
|
---|
98 | . E D
|
---|
99 | . . S XMDATE=$$CONVERT^XMXUTIL1(XMDATE)
|
---|
100 | . . S:XMDATE=-1 XMDATE=DT
|
---|
101 | . S $P(^XMB(3.9,XMZ,.6),U,1)=XMDATE
|
---|
102 | . S ^XMB(3.9,"C",XMDATE,XMZ)=""
|
---|
103 | . D ERR(XMZ,208) ; Msg has no local create date: fixed
|
---|
104 | I '$D(^XMB(3.9,"C",XMCRE8,XMZ)) D
|
---|
105 | . S ^XMB(3.9,"C",XMCRE8,XMZ)=""
|
---|
106 | . D ERR(XMZ,209) ; Local create date C xref missing: fixed
|
---|
107 | Q
|
---|
108 | RECIP(XMZ) ; Check recipient multiple
|
---|
109 | N I,XMVAL,XMXREF,XMRECIPS
|
---|
110 | D CXREF(XMZ)
|
---|
111 | S (I,XMRECIPS)=0
|
---|
112 | F S I=$O(^XMB(3.9,XMZ,1,I)) Q:'I D
|
---|
113 | . S XMVAL=$P($G(^XMB(3.9,XMZ,1,I,0)),U)
|
---|
114 | . I XMVAL="" D Q
|
---|
115 | . . Q:$P(^XMB(3.9,XMZ,.6),U,1)=DT
|
---|
116 | . . K ^XMB(3.9,XMZ,1,I)
|
---|
117 | . . D ERR(XMZ,221,I) ; Recipient |1| null, no C xref: fixed
|
---|
118 | . S XMRECIPS=XMRECIPS+1
|
---|
119 | . Q:$D(^XMB(3.9,XMZ,1,"C",$E(XMVAL,1,30),I))
|
---|
120 | . I $L(XMVAL)>30,$D(^XMB(3.9,XMZ,1,"C",XMVAL,I)) D Q
|
---|
121 | . . ;K ^XMB(3.9,XMZ,1,"C",XMVAL,I)
|
---|
122 | . . ;D ERR(XMZ,223,I) ; Recipient |1| C xref too long: xref shortened
|
---|
123 | . . ;S ^XMB(3.9,XMZ,1,"C",$E(XMVAL,1,30),I)=""
|
---|
124 | . D ERR(XMZ,222,I) ; Recipient |1| no C xref: xref created
|
---|
125 | . S ^XMB(3.9,XMZ,1,"C",$E(XMVAL,1,30),I)=""
|
---|
126 | I $D(^XMB(3.9,XMZ,1,0)) S:$P(^XMB(3.9,XMZ,1,0),U,4)'=XMRECIPS $P(^(0),U,4)=XMRECIPS Q
|
---|
127 | S ^XMB(3.9,XMZ,1,0)="^3.91A^"_I_U_XMRECIPS
|
---|
128 | Q
|
---|
129 | CXREF(XMZ) ; Check C xref for Recipient multiple
|
---|
130 | N I,XMVAL,XMXREF
|
---|
131 | S (I,XMXREF)=""
|
---|
132 | F S XMXREF=$O(^XMB(3.9,XMZ,1,"C",XMXREF)) Q:XMXREF="" D
|
---|
133 | . F S I=$O(^XMB(3.9,XMZ,1,"C",XMXREF,I)) Q:'I D
|
---|
134 | . . S XMVAL=$P($G(^XMB(3.9,XMZ,1,I,0)),U)
|
---|
135 | . . Q:$E(XMVAL,1,30)=$E(XMXREF,1,30)
|
---|
136 | . . I XMVAL="" D Q
|
---|
137 | . . . S $P(^XMB(3.9,XMZ,1,I,0),U)=XMXREF
|
---|
138 | . . . I $L(XMXREF)<30 D ERR(XMZ,231,I) Q ; C xref, but recip |1| null: fixed using xref
|
---|
139 | . . . D ERR(XMZ,232,I) ; C xref, but recip |1| null: fixed, but CHECK
|
---|
140 | . . K ^XMB(3.9,XMZ,1,"C",XMXREF,I)
|
---|
141 | . . D ERR(XMZ,233,I) ; C xref for recip |1| doesn't match recip: xref killed
|
---|
142 | Q
|
---|
143 | ERR(XMZ,XMERRNUM,XMDPARM) ;
|
---|
144 | N XMPARM
|
---|
145 | S XMERROR(XMERRNUM)=$G(XMERROR(XMERRNUM))+1
|
---|
146 | S XMPARM(1)=XMZ,XMPARM(2)=$J(XMERRNUM,3)
|
---|
147 | S XMPARM(3)=$$EZBLD^DIALOG(36300+XMERRNUM,.XMDPARM)
|
---|
148 | W !,$$EZBLD^DIALOG(36097,.XMPARM) ;Msg=|1|, Err=|2| |3|
|
---|
149 | Q
|
---|