1 | XMP2 ;(WASH ISC)/GM/CAP-PackMan Print/Install/Summarize/Compare ;04/17/2002 11:07
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; Entry points used by MailMan options (not covered by DBIA):
|
---|
4 | ; XC XMPCOM - Compare message
|
---|
5 | ; XI XMPINS - Install message
|
---|
6 | ; XP XMPPRT - Print message
|
---|
7 | ; XS XMPSUM - Summarize message
|
---|
8 | ;;XMP2 IS INSTALLED AS XMP2Z TO AVOID CLOBBER ERRORS / FILE AS XMP2
|
---|
9 | Q
|
---|
10 | ;
|
---|
11 | LIST ;LIST MESSAGE
|
---|
12 | S XCN=.999 F M=1:1 D NT Q:+XCN'=XCN W !,X
|
---|
13 | Q
|
---|
14 | ;
|
---|
15 | ;
|
---|
16 | PP ;PRETTY PRINT
|
---|
17 | S:'$D(XCN) XCN=.999 S XCN=+XCN K XMOUT
|
---|
18 | F I=1:1 D NT Q:XCN'=+XCN Q:$E(X)="$" D @($P("P1,G1,G2,K1",",",%1)) Q:$D(XMOUT)
|
---|
19 | Q
|
---|
20 | ;
|
---|
21 | P1 Q:X?1"KEY ;;;".E
|
---|
22 | I XMP2="T" W !,$P(X," ",1)_" " S X=$P(X," ",2,99)
|
---|
23 | E W !,$P(X," ",1)," ",?8 S X=$P(X," ",2,999)
|
---|
24 | P2 I $Y+5>IOSL K DIR S DIR(0)="E" D:'$D(ZTQUEUED) ^DIR:$E(IOST)="C"&$S('$D(XMP):1,'XMP:1,1:0) K DIR,DIRUT W @IOF I $D(DTOUT)!$D(DUOUT) S XMOUT=1 Q
|
---|
25 | I $G(XMP2(0))=1 W "=" K XMP2(0)
|
---|
26 | I $X+$L(X)+1<IOM!(IOM<22) W X Q
|
---|
27 | F J=(IOM-$X-1):-1:20 Q:"),@_:"[$E(X,J) Q:J<20 I $E(X,J)?1P Q:$E(X,J-2)'=" "
|
---|
28 | W $E(X,1,J),!,?10 S X=$E(X,J+1,999)
|
---|
29 | G P2
|
---|
30 | ;
|
---|
31 | XT S XMP2="T" G 1
|
---|
32 | ;
|
---|
33 | XP S XMP2="P"
|
---|
34 | 1 I $D(XMLOAD) W $C(7),!,"YOU CAN NOT PRINT a message while you are creating it." Q
|
---|
35 | S XCF=1 D MM,SP G SC
|
---|
36 | ;
|
---|
37 | XR S XMP2="R" G 0
|
---|
38 | ;
|
---|
39 | XI S XMP2="I"
|
---|
40 | 0 D MM S XCF=2 G ENH^XMP2A
|
---|
41 | ;
|
---|
42 | ENI D ^XMP3 G Q:X=U D S G Q:XMP2'="I"
|
---|
43 | I $D(XMINIT),$P(XMR,U,7)="X" D @XMINIT
|
---|
44 | I $D(XMINTEG) D @XMINTEG
|
---|
45 | Q K XMA0,XMB0,XMP2,XMPASS,XMPKIDS,XMINIT,XMINTEG Q
|
---|
46 | ;
|
---|
47 | XC S XCF=3,XMP2="C" D MM,SP G SC ; Compare Message (DOPT 9)
|
---|
48 | ;
|
---|
49 | XS S XCF=0,XMP2="S" D MM,SP G SC
|
---|
50 | ;
|
---|
51 | SP G DEV^XMPH ; Output where? Queued by default. AND !!! Runs @XMP2 opt.
|
---|
52 | ;
|
---|
53 | SC K XMP2 Q
|
---|
54 | ;
|
---|
55 | ;
|
---|
56 | ; From DEV+2^XMPH and ZTASK+4^XMPH only for EVERYTHING!!!! XMP2=What
|
---|
57 | S S XCN=.999 G ENTR^XMP2A:XMP2="R",ENTT^XMP2A:XMP2="T" I '$D(XMR) S XMR=^XMB(3.9,XMZ,0)
|
---|
58 | F I=1:1 D NT Q:+XCN'=XCN D:$E(X)="$" S1:X'["$TXT" Q:+XCN'=XCN I $D(XMOUT) K XMOUT Q
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | S1 Q:$E(X,1,5)="$END "!($E(X,1,5)'?1"$"3U1" ")
|
---|
62 | I XMP2="I",$P(XMR,U,7)["X",$E(X,1,9)'="$END ROU ",$E(X,1,5)'="$ROU " S XMOUT=1 Q
|
---|
63 | S T=$E(X,2,4),A=$T(@T) I A="" W $C(7),"Unknown identifier '",A,"'" K A Q
|
---|
64 | W:XCF=1 @IOF W !,"Line ",XCN,?10,"Message #"_XMZ,?29 W:XCF $P(",Unloading,Comparing,Verifying",",",XCF) W " ",$P(A,";;",2)," ",$E(X,5,999)
|
---|
65 | I XCF=0 D:$E(A,1,3)="KID" K2 Q
|
---|
66 | S A=$P($T(@T+XCF),";;",2,999) I A=";" W !,"Not implemented yet" Q
|
---|
67 | I $E(X,1,4)="$ROU",'$D(XMINIT),XMP2="I" S %=$P(X," ",2) S:%?.1"^".AN1"INIT" XMINIT="^"_% I %?.1"^".AN1"NTEG" S XMINTEG="^"_%
|
---|
68 | X A K A Q
|
---|
69 | ;
|
---|
70 | NT S XCN=$O(^XMB(3.9,XMZ,2,XCN)) Q:+XCN'=XCN S X=^(XCN,0) D:$E(X)="$" CHECK^XMPSEC Q
|
---|
71 | ;
|
---|
72 | MM S (DIE,DIF)="^XMB(3.9,XMZ,2," Q
|
---|
73 | ;
|
---|
74 | G1 W !,X D NT Q:+XCN'=XCN G P2
|
---|
75 | ;
|
---|
76 | G2 W !,X D NT Q:+XCN'=XCN S XMP2(0)=1 G P2
|
---|
77 | ;
|
---|
78 | K1 ;print KIDS Distribution routines
|
---|
79 | F S XCN=$O(^XMB(3.9,XMZ,2,XCN)) Q:+XCN'=XCN S X=^(XCN,0) Q:$E(X)="$" D:X?1"""RTN"","""1.8AN1""")"
|
---|
80 | .S XCN=XCN+1,X1=$E(X,1,$L(X)-1) W !,"Routine ",$TR($P(X1,",",2),"""")
|
---|
81 | .F S XCN=$O(^XMB(3.9,XMZ,2,XCN)) Q:+XCN'=XCN S X=^(XCN,0) Q:$P(X,",",1,2)'=X1 S XCN=$O(^XMB(3.9,XMZ,2,XCN)),X=^(XCN,0) D P1 Q:$D(XMOUT)
|
---|
82 | .S:XCN=+XCN XCN=XCN-1
|
---|
83 | S XMOUT=1 Q
|
---|
84 | ;
|
---|
85 | K2 ;print summary of KIDS Distribution
|
---|
86 | Q:$T(XMP2^XPDDP)="" K ^TMP($J,"BLD"),M
|
---|
87 | F S XCN=$O(^XMB(3.9,XMZ,2,XCN)) Q:+XCN'=XCN S X=^(XCN,0) Q:$E(X)="$" I X?1"""BLD"","1.N1",0)" S XCN=$O(^XMB(3.9,XMZ,2,XCN)),M=^(XCN,0) Q
|
---|
88 | Q:'$D(M) S @("^TMP("_$J_","_X)=M,X1=$P(X,",",1,2)
|
---|
89 | F S XCN=$O(^XMB(3.9,XMZ,2,XCN)) Q:+XCN'=XCN S X=^(XCN,0) Q:$P(X,",",1,2)'=X1 S XCN=$O(^XMB(3.9,XMZ,2,XCN)),M=^(XCN,0),@("^TMP("_$J_","_X)=M
|
---|
90 | D XMP2^XPDDP("TMP("_$J_","_X1_")",$P(X1,",",2))
|
---|
91 | S XMOUT=1 Q
|
---|
92 | ;
|
---|
93 | SAVE D NT Q:"$END "_T=$P(X," ",1,2) S X1=X D NT Q:"$END "_T=$P(X," ",1,2)
|
---|
94 | ;I $A(X)=126 S %=X D NT S X=%_$E(X,2,999) ; Set by ^DIFROM1, but DIFROM is no longer used.
|
---|
95 | S @X1=$E(X,2-$G(XMP2(0)),999)
|
---|
96 | G SAVE
|
---|
97 | ;
|
---|
98 | BEG S %=0,ROU=$E(X,6,99),^TMP("XMS",$J,ROU,0,1)="""" F %0=1:1 D NT Q:$E(X)="$" S ^TMP("XMS",$J,ROU,0,%0)=X,%=%+$L(X)
|
---|
99 | S ^TMP("XMS",$J,ROU,0)=%,%0=%0-1 Q
|
---|
100 | ;
|
---|
101 | COMP D NT Q:$E(X)="$"
|
---|
102 | S X1=X D NT Q:$E(X)="$"
|
---|
103 | ;
|
---|
104 | ;Globals
|
---|
105 | ;I $A(X)=126 S %=$E(X,2,999) D NT S X=%_$E(X,2,999) ; Set by ^DIFROM1, but DIFROM is no longer used.
|
---|
106 | I '$D(@X1) W !,"Node '",X1,"' not on disk." G COMP
|
---|
107 | S Y=@X1,B=$E(X,2-$G(XMP2(0)),999)
|
---|
108 | G COMP:Y=B
|
---|
109 | W !,"Node: ",X1,!,"Disk: ",Y
|
---|
110 | W !,"Message: ",$E(X,2-$G(XMP2(0)),99)
|
---|
111 | S X=$E(X,2,999) F J=1:1:$L(X) Q:$E(X,J)'=$E(Y,J)
|
---|
112 | W !,?12+J,"^"
|
---|
113 | G COMP
|
---|
114 | ;
|
---|
115 | ;TAG ;;Description of type of PackMan Data
|
---|
116 | ; ;;Executable Print Code
|
---|
117 | ; ;;Executable Installation code
|
---|
118 | ; ;;Executable Comparison to Installed
|
---|
119 | ; ;;Executable Verification code
|
---|
120 | ;
|
---|
121 | ROU ;;Routine
|
---|
122 | ;;S %1=1 D PP
|
---|
123 | ;;S X=$P(X," ",2) S:X="XMP2" X="XMP2Z" S DIE="^XMB(3.9,XMZ,2," X ^%ZOSF("SAVE") W:X="XMP2Z" !,$C(7),"CHANGE NAME OF ROUTINE XMP2Z TO XMP2"
|
---|
124 | ;;D LOAD^XMPC
|
---|
125 | ;;G BEG
|
---|
126 | DDD ;;Data Dictionary
|
---|
127 | ;;S %1=2 D PP
|
---|
128 | ;;D SAVE
|
---|
129 | ;;D COMP
|
---|
130 | ;;
|
---|
131 | OPT ;;Options
|
---|
132 | ;;S %1=2 D PP
|
---|
133 | ;;D SAVE
|
---|
134 | ;;Q
|
---|
135 | ;;
|
---|
136 | HEL ;;Help Frames
|
---|
137 | ;;S %1=2 D PP
|
---|
138 | ;;D SAVE
|
---|
139 | ;;Q
|
---|
140 | ;;
|
---|
141 | BUL ;;Bulletins
|
---|
142 | ;;S %1=2 D PP
|
---|
143 | ;;D SAVE
|
---|
144 | ;;Q
|
---|
145 | ;;
|
---|
146 | KEY ;;Security keys
|
---|
147 | ;;S %1=2 D PP
|
---|
148 | ;;D SAVE
|
---|
149 | ;;Q
|
---|
150 | ;;
|
---|
151 | FUN ;;Functions
|
---|
152 | ;;S %1=2 D PP
|
---|
153 | ;;D SAVE
|
---|
154 | ;;Q
|
---|
155 | ;;
|
---|
156 | PKG ;;Package File
|
---|
157 | ;;S %1=2 D PP
|
---|
158 | ;;D SAVE
|
---|
159 | ;;Q
|
---|
160 | ;;
|
---|
161 | RTN ;;Routine Documentation
|
---|
162 | ;;S %1=2 D PP
|
---|
163 | ;;D SAVE
|
---|
164 | ;;Q
|
---|
165 | ;;
|
---|
166 | DIE ;;Input Templates
|
---|
167 | ;;S %1=2 D PP
|
---|
168 | ;;D SAVE
|
---|
169 | ;;Q
|
---|
170 | ;;
|
---|
171 | DIP ;;Print Templates
|
---|
172 | ;;S %1=2 D PP
|
---|
173 | ;;D SAVE
|
---|
174 | ;;Q
|
---|
175 | ;;
|
---|
176 | DIB ;;Sort Templates
|
---|
177 | ;;S %1=2 D PP
|
---|
178 | ;;D SAVE
|
---|
179 | ;;Q
|
---|
180 | ;;
|
---|
181 | GLB ;;Global
|
---|
182 | ;;S %1=2 D PP
|
---|
183 | ;;D SAVE
|
---|
184 | ;;D COMP
|
---|
185 | ;;
|
---|
186 | DTA ;;FileMan Data
|
---|
187 | ;;S %1=1 D PP
|
---|
188 | ;;D SAVE
|
---|
189 | ;;Q
|
---|
190 | ;;
|
---|
191 | TXT ;;Text
|
---|
192 | ;;Q
|
---|
193 | ;;Q
|
---|
194 | ;;Q
|
---|
195 | ;;Q
|
---|
196 | GLO ;;Global
|
---|
197 | ;;S %1=3 D PP
|
---|
198 | ;;S XMP2(0)=1 D SAVE K XMP2(0)
|
---|
199 | ;;S XMP2(0)=1 D COMP K XMP2(0)
|
---|
200 | ;;Q
|
---|
201 | KID ;;KIDS Distribution
|
---|
202 | ;;S %1=4 D PP
|
---|
203 | ;;I $T(XMP2^XPDIPM)]"" D XMP2^XPDIPM
|
---|
204 | ;;;
|
---|
205 | ;;;
|
---|