Merge lp:~jontai/openvista-gtm-integration/bug392194 into lp:openvista-gtm-integration
- bug392194
- Merge into mainline
Proposed by
Jon Tai
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~jontai/openvista-gtm-integration/bug392194 |
Merge into: | lp:openvista-gtm-integration |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~jontai/openvista-gtm-integration/bug392194 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
jeff.apple | Approve | ||
Review via email: mp+7962@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
jeff.apple (jeff-apple) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'mumps/MSCZJOB.m' | |||
2 | --- mumps/MSCZJOB.m 2009-05-21 00:50:25 +0000 | |||
3 | +++ mumps/MSCZJOB.m 2009-06-26 21:06:41 +0000 | |||
4 | @@ -1,4 +1,4 @@ | |||
6 | 1 | MSCZJOB ;GFT,JDS/MSC;1 MAY 2009 | 1 | MSCZJOB ;GFT,JDS/MSC;26JUN2009 |
7 | 2 | ;;8.0;KERNEL;**MSC** | 2 | ;;8.0;KERNEL;**MSC** |
8 | 3 | W !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 3 | W !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
9 | 4 | N MSC | 4 | N MSC |
10 | @@ -7,9 +7,10 @@ | |||
11 | 7 | D ^DDS Q | 7 | D ^DDS Q |
12 | 8 | ; | 8 | ; |
13 | 9 | UNLOCK(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK | 9 | UNLOCK(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK |
15 | 10 | N X,R S R=$G(@MSC@(MSCJOBID,"L",D0)) I R'["^" Q ;CAN'T SEE IT | 10 | N X,R,N S R=$G(@MSC@(MSCJOBID,"L",D0)) I R'["^" Q ;CAN'T SEE IT |
16 | 11 | S R=$P(R," ",2),X="L "_R D ^DIM Q:'$D(X) | 11 | S R=$P(R," ",2),X="L "_R D ^DIM Q:'$D(X) |
18 | 12 | D UNLOCK^MSCZJOBU(R) | 12 | S N=$$NSP(MSCJOBD0) |
19 | 13 | D UNLOCK^MSCZJOBU(R,N) | ||
20 | 13 | Q | 14 | Q |
21 | 14 | ; | 15 | ; |
22 | 15 | KILL(J) ;FROM FIELD | 16 | KILL(J) ;FROM FIELD |
23 | @@ -18,7 +19,8 @@ | |||
24 | 18 | ; | 19 | ; |
25 | 19 | COMPMUL ;COMPUTED MULTIPLE FOR MSCZJOBEXAM BLOCK | 20 | COMPMUL ;COMPUTED MULTIPLE FOR MSCZJOBEXAM BLOCK |
26 | 20 | N X,D0,J | 21 | N X,D0,J |
28 | 21 | S MSC="^TMP(""MSCZJOB"")" D POLL | 22 | S MSC="^TMP(""MSCZJOB1"",$J)" D POLL |
29 | 23 | D JOBEXAM^MSCZJOBU(MSC) | ||
30 | 22 | F D0=0:0 S D0=$O(MSCZJOB(D0)) Q:'D0 D | 24 | F D0=0:0 S D0=$O(MSCZJOB(D0)) Q:'D0 D |
31 | 23 | .S MSCZJOB(D0)=MSCZJOB(D0)_U_$$DEV(D0)_U_$$USER(D0)_U_$$NSP(D0)_U_U_U_U_U_$$ROUTINE(D0) | 25 | .S MSCZJOB(D0)=MSCZJOB(D0)_U_$$DEV(D0)_U_$$USER(D0)_U_$$NSP(D0)_U_U_U_U_U_$$ROUTINE(D0) |
32 | 24 | .S X=MSCZJOB(D0) X DICMX | 26 | .S X=MSCZJOB(D0) X DICMX |
33 | @@ -29,7 +31,7 @@ | |||
34 | 29 | .N L,P S N=$$FIND(D0,"I","$ZGBLDIR"),L=$L(N,"/") I L<2 Q | 31 | .N L,P S N=$$FIND(D0,"I","$ZGBLDIR"),L=$L(N,"/") I L<2 Q |
35 | 30 | .F L=L-1:-1:2 S P=$P(N,"/",L) I P'[".",P'["globals" Q | 32 | .F L=L-1:-1:2 S P=$P(N,"/",L) I P'[".",P'["globals" Q |
36 | 31 | .S P=1 I $P(N,"/")="" S P=2 | 33 | .S P=1 I $P(N,"/")="" S P=2 |
38 | 32 | .S N=$P(N,"/",P,L) | 34 | .S N=$P(N,"/",L) |
39 | 33 | USER(D0) Q $P($G(^VA(200,+$$FIND(D0,"V","DUZ"),0)),U) | 35 | USER(D0) Q $P($G(^VA(200,+$$FIND(D0,"V","DUZ"),0)),U) |
40 | 34 | ROUTINE(D0) Q $$FIND(D0,"V","%ZPOS") | 36 | ROUTINE(D0) Q $$FIND(D0,"V","%ZPOS") |
41 | 35 | ; | 37 | ; |
42 | @@ -38,7 +40,8 @@ | |||
43 | 38 | Q X | 40 | Q X |
44 | 39 | ; | 41 | ; |
45 | 40 | COMPSTK ;COMPUTED MULTIPLE FOR MSCZJOBSTACK BLOCK | 42 | COMPSTK ;COMPUTED MULTIPLE FOR MSCZJOBSTACK BLOCK |
47 | 41 | S MSC="^TMP(""MSCZJOB"")" K @MSC@(MSCJOBID) D POLL1 | 43 | S MSC="^TMP(""MSCZJOB1"",$J)" K @MSC@(MSCJOBID) D POLL1 |
48 | 44 | D JOBEXAM^MSCZJOBU(MSC,MSCJOBID) | ||
49 | 42 | N D0,J S J=MSCJOBID | 45 | N D0,J S J=MSCJOBID |
50 | 43 | F D0=1:1:$O(@MSC@(J,"S",""),-1) S X="" X DICMX | 46 | F D0=1:1:$O(@MSC@(J,"S",""),-1) S X="" X DICMX |
51 | 44 | Q | 47 | Q |
52 | @@ -47,13 +50,15 @@ | |||
53 | 47 | Q X | 50 | Q X |
54 | 48 | ; | 51 | ; |
55 | 49 | COMPVARS ;COMPUTED MULTIPLE FOR MSCZJOBVARS BLOCK | 52 | COMPVARS ;COMPUTED MULTIPLE FOR MSCZJOBVARS BLOCK |
57 | 50 | S MSC="^TMP(""MSCZJOB"")" K @MSC@(MSCJOBID) D POLL1 | 53 | S MSC="^TMP(""MSCZJOB1"",$J)" K @MSC@(MSCJOBID) D POLL1 |
58 | 54 | D JOBEXAM^MSCZJOBU(MSC,MSCJOBID) | ||
59 | 51 | N D0,J S J=MSCJOBID | 55 | N D0,J S J=MSCJOBID |
60 | 52 | F D0=1:1:$O(@MSC@(J,"V",""),-1) S X="" X DICMX | 56 | F D0=1:1:$O(@MSC@(J,"V",""),-1) S X="" X DICMX |
61 | 53 | Q | 57 | Q |
62 | 54 | ; | 58 | ; |
63 | 55 | COMPLKS ;COMPUTED MULTIPLE FOR MSCZJOBLOCKS BLOCK | 59 | COMPLKS ;COMPUTED MULTIPLE FOR MSCZJOBLOCKS BLOCK |
65 | 56 | S MSC="^TMP(""MSCZJOB"")" D POLL1 | 60 | S MSC="^TMP(""MSCZJOB1"",$J)" D POLL1 |
66 | 61 | D JOBEXAM^MSCZJOBU(MSC,MSCJOBID) | ||
67 | 57 | N D0 | 62 | N D0 |
68 | 58 | F D0=1:1:$$LOCKS S X="" X DICMX | 63 | F D0=1:1:$$LOCKS S X="" X DICMX |
69 | 59 | Q | 64 | Q |
70 | @@ -81,9 +86,9 @@ | |||
71 | 81 | TEST Q | 86 | TEST Q |
72 | 82 | COMPLK ;COMPUTED MULTIPLE FOR MSCZLOCK BLOCK | 87 | COMPLK ;COMPUTED MULTIPLE FOR MSCZLOCK BLOCK |
73 | 83 | N X,D0,J | 88 | N X,D0,J |
75 | 84 | S MSC="^TMP(""MSCZJOB"")" D POLL S D0=0 | 89 | S MSC="^TMP(""MSCZJOB1"",$J)" K @MSC D POLL,JOBEXAM^MSCZJOBU(MSC) S D0=0 |
76 | 85 | F K=0:0 S K=$O(MSCZJOB(K)) Q:'K D | 90 | F K=0:0 S K=$O(MSCZJOB(K)) Q:'K D |
78 | 86 | .F J=0:0 S J=$O(^TMP("MSCZJOB",MSCZJOB(K),"L",J)) Q:'J S A=$TR(^(J),U,"~") D | 91 | .F J=0:0 S J=$O(^TMP("MSCZJOB1",$J,MSCZJOB(K),"L",J)) Q:'J S A=$TR(^(J),U,"~") D |
79 | 87 | ..S D0=D0+1,MSCZLK(D0)=$P(A,"LOCK ",2,9)_U_$$USER(K)_U_$TR($$ROUTINE(K),U,"~")_"^^"_MSCZJOB(K) | 92 | ..S D0=D0+1,MSCZLK(D0)=$P(A,"LOCK ",2,9)_U_$$USER(K)_U_$TR($$ROUTINE(K),U,"~")_"^^"_MSCZJOB(K) |
80 | 88 | ..S X=MSCZLK(D0) X DICMX | 93 | ..S X=MSCZLK(D0) X DICMX |
81 | 89 | Q | 94 | Q |
82 | @@ -91,6 +96,7 @@ | |||
83 | 91 | S DDSFILE=3.081,DR="[MSCZLOCK]",DDSPARM="S" | 96 | S DDSFILE=3.081,DR="[MSCZLOCK]",DDSPARM="S" |
84 | 92 | D ^DDS Q | 97 | D ^DDS Q |
85 | 93 | UNL(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK | 98 | UNL(D0) ;FROM FIELD 2, PAGE 3: UNLOCK THE LOCK |
87 | 94 | N X,R S R=$P($G(MSCZLK(D0)),U),P=$P($G(MSCZLK(D0)),U,5) ;I R'["^" Q ;CAN'T SEE IT | 99 | N X,R,N S R=$P($G(MSCZLK(D0)),U),P=$P($G(MSCZLK(D0)),U,5) ;I R'["^" Q ;CAN'T SEE IT |
88 | 95 | S R=$P(R,"~",2),R="^"_$S(R'["(":$P(R," "),1:$P(R,")")_")"),X="L "_R D ^DIM Q:'$D(X) ;GOOD SYNTAX? | 100 | S R=$P(R,"~",2),R="^"_$S(R'["(":$P(R," "),1:$P(R,")")_")"),X="L "_R D ^DIM Q:'$D(X) ;GOOD SYNTAX? |
90 | 96 | D UNLOCK^MSCZJOBU(R) | 101 | S N=$$NSP(D0) |
91 | 102 | D UNLOCK^MSCZJOBU(R,N) | ||
92 | 97 | 103 | ||
93 | === modified file 'mumps/MSCZJOBS.m' | |||
94 | --- mumps/MSCZJOBS.m 2009-06-01 18:46:25 +0000 | |||
95 | +++ mumps/MSCZJOBS.m 2009-06-26 17:39:51 +0000 | |||
96 | @@ -1,4 +1,4 @@ | |||
98 | 1 | MSCZJOBS ;JKT/MSC - OpenVista System status ;27MAY2009 | 1 | MSCZJOBS ;JKT/MSC - OpenVista System status ;26JUN2009 |
99 | 2 | ;;8.0;KERNEL;**MSC** | 2 | ;;8.0;KERNEL;**MSC** |
100 | 3 | ; | 3 | ; |
101 | 4 | ALL D SS() Q | 4 | ALL D SS() Q |
102 | @@ -13,19 +13,22 @@ | |||
103 | 13 | D INTRPT^MSCZJOBU("*") H .5 | 13 | D INTRPT^MSCZJOBU("*") H .5 |
104 | 14 | ; | 14 | ; |
105 | 15 | N DATETIME S DATETIME=$$HTE^XLFDT($H) | 15 | N DATETIME S DATETIME=$$HTE^XLFDT($H) |
109 | 16 | W #!,?22,"OpenVista System Status" | 16 | W #!,?28,"OpenVista System Status" |
110 | 17 | W !,?(34-($L(DATETIME)/2)\1),DATETIME | 17 | W !,?(40-($L(DATETIME)/2)\1),DATETIME |
111 | 18 | W !!,?1,"Process",?12,"Device",?30,"Instance",?42,"Routine",?56,"User" | 18 | W !!,?1,"Process",?12,"Device",?30,"Instance",?42,"Routine",?56,"User",?70,"Identity" |
112 | 19 | ; | 19 | ; |
113 | 20 | N MSC S MSC="^TMP(""MSCZJOB1"",$J)" K @MSC | ||
114 | 21 | D JOBEXAM^MSCZJOBU(MSC) | ||
115 | 20 | N PID S PID="" | 22 | N PID S PID="" |
118 | 21 | D PIDS^MSCZJOBU(.PID) | 23 | F S PID=$O(@MSC@(PID)) Q:PID="" D |
117 | 22 | F S PID=$O(PID(PID)) Q:PID="" D | ||
119 | 23 | . I $G(THIS) Q:$$INSTANCE(PID)'=$$CURRENT^ZCD() | 24 | . I $G(THIS) Q:$$INSTANCE(PID)'=$$CURRENT^ZCD() |
120 | 24 | . W !,$$PID(PID) | 25 | . W !,$$PID(PID) |
121 | 25 | . W ?12,$$DEVICE(PID) | 26 | . W ?12,$$DEVICE(PID) |
122 | 26 | . W ?30,$$INSTANCE(PID) | 27 | . W ?30,$$INSTANCE(PID) |
123 | 27 | . W ?42,$$ROUTINE(PID) | 28 | . W ?42,$$ROUTINE(PID) |
124 | 28 | . W ?56,$$USER(PID) | 29 | . W ?56,$$USER(PID) |
125 | 30 | . W ?70,$$IDENT(PID) | ||
126 | 31 | K @MSC | ||
127 | 29 | ; | 32 | ; |
128 | 30 | W !! ZSY "uptime" | 33 | W !! ZSY "uptime" |
129 | 31 | Q | 34 | Q |
130 | @@ -34,22 +37,24 @@ | |||
131 | 34 | Q $J(PID,8)_$S($J=PID:"*",1:"") | 37 | Q $J(PID,8)_$S($J=PID:"*",1:"") |
132 | 35 | ; | 38 | ; |
133 | 36 | DEVICE(PID) ;Return device | 39 | DEVICE(PID) ;Return device |
135 | 37 | Q $$FIND("^TMP(""MSCZJOB"")",PID,"I","$PRINCIPAL") | 40 | Q $$FIND(PID,"I","$PRINCIPAL") |
136 | 38 | ; | 41 | ; |
137 | 39 | INSTANCE(PID) ;Return name of OpenVista instance | 42 | INSTANCE(PID) ;Return name of OpenVista instance |
139 | 40 | N ZG S ZG=$$FIND("^TMP(""MSCZJOB"")",PID,"I","$ZGBLDIR") | 43 | N ZG S ZG=$$FIND(PID,"I","$ZGBLDIR") |
140 | 41 | Q $P(ZG,"/",$L(ZG,"/")-2) | 44 | Q $P(ZG,"/",$L(ZG,"/")-2) |
141 | 42 | ; | 45 | ; |
142 | 43 | ROUTINE(PID) ;Return routine | 46 | ROUTINE(PID) ;Return routine |
152 | 44 | Q $P($$FIND("^TMP(""MSCZJOB"")",PID,"V","%ZPOS"),"^",2) | 47 | Q $P($$FIND(PID,"V","%ZPOS"),"^",2) |
153 | 45 | ; | 48 | ; |
154 | 46 | USER(PID) ;Return OpenVista user | 49 | USER(PID) ;Return Linux user |
155 | 47 | N DUZ S DUZ=+$$FIND("^TMP(""MSCZJOB"")",PID,"V","DUZ") | 50 | Q $$OWNER^MSCZJOBU(PID) |
156 | 48 | ; FIXME: this code is looking up the name of the person in *this* | 51 | ; |
157 | 49 | ; instance, which assumes that ^VA(200) is the same across databases | 52 | IDENT(PID) ;Return OpenVista user |
158 | 50 | Q $P($G(^VA(200,DUZ,0)),"^") | 53 | N DUZ S DUZ=+$$FIND(PID,"V","DUZ") |
159 | 51 | ; | 54 | N ZG S ZG=$$FIND(PID,"I","$ZGBLDIR") |
160 | 52 | FIND(NODE,PID,ARR,KEY) ;Return the value of a key in one of the ZSHOW arrays | 55 | Q $P($G(^|ZG|VA(200,DUZ,0)),"^") |
161 | 56 | ; | ||
162 | 57 | FIND(PID,ARR,KEY) ;Return the value of a key in one of the ZSHOW arrays | ||
163 | 53 | N I,X S I="",X="" | 58 | N I,X S I="",X="" |
165 | 54 | F S I=$O(@NODE@(PID,ARR,I)) Q:'I I $P(^(I),KEY_"=")="" S X=$TR($P(^(I),"=",2),"""") Q | 59 | F S I=$O(@MSC@(PID,ARR,I)) Q:'I I $P(@MSC@(PID,ARR,I),KEY_"=")="" S X=$TR($P(@MSC@(PID,ARR,I),"=",2),"""") Q |
166 | 55 | Q X | 60 | Q X |
167 | 56 | 61 | ||
168 | === modified file 'mumps/MSCZJOBU.m' | |||
169 | --- mumps/MSCZJOBU.m 2009-05-21 01:38:37 +0000 | |||
170 | +++ mumps/MSCZJOBU.m 2009-06-26 21:06:41 +0000 | |||
171 | @@ -1,4 +1,4 @@ | |||
173 | 1 | MSCZJOBU ;RHL,JDS,JKT/MSC;20MAY2009 | 1 | MSCZJOBU ;RHL,JDS,JKT/MSC;26JUN2009 |
174 | 2 | ;;8.0;KERNEL;**MSC** | 2 | ;;8.0;KERNEL;**MSC** |
175 | 3 | ; | 3 | ; |
176 | 4 | ; JOB EXAM UTILITIES FOR GT.M | 4 | ; JOB EXAM UTILITIES FOR GT.M |
177 | @@ -10,7 +10,7 @@ | |||
178 | 10 | ; | 10 | ; |
179 | 11 | N DEV | 11 | N DEV |
180 | 12 | S DEV="psdev" | 12 | S DEV="psdev" |
182 | 13 | OPEN DEV:(COMM="ps -o pid= -C mumps")::"PIPE" U DEV | 13 | OPEN DEV:(COMM="ps -o pid= -C mumps":READONLY)::"PIPE" U DEV |
183 | 14 | ; | 14 | ; |
184 | 15 | N %I S %I=$I | 15 | N %I S %I=$I |
185 | 16 | N %J ; $JOB | 16 | N %J ; $JOB |
186 | @@ -21,6 +21,39 @@ | |||
187 | 21 | C DEV | 21 | C DEV |
188 | 22 | Q | 22 | Q |
189 | 23 | ; | 23 | ; |
190 | 24 | JOBEXAM(XARY,ONEPID) ; GET ARRAY OF JOB EXAM DATA FOR ALL MUMPS PROCESSES | ||
191 | 25 | ; XARY PASSED BY REFERENCE | ||
192 | 26 | ; | ||
193 | 27 | ; get a list of all OpenVista instances and look up their $ZG values | ||
194 | 28 | N Y D LIST^ZCD | ||
195 | 29 | N INSTANCE S INSTANCE="" | ||
196 | 30 | F S INSTANCE=$O(Y("B",INSTANCE)) Q:INSTANCE="" D | ||
197 | 31 | . N %ZG,%ZRO D NEWZGZRO^ZCD(INSTANCE) | ||
198 | 32 | . S Y("B",INSTANCE)=%ZG | ||
199 | 33 | ; | ||
200 | 34 | I $G(ONEPID) D GETJOB(ONEPID) Q | ||
201 | 35 | ; for each mumps process, search each OpenVista instance for the latest job exam data | ||
202 | 36 | D PIDS(.XARY) | ||
203 | 37 | N PID S PID="" | ||
204 | 38 | F S PID=$O(XARY(PID)) Q:PID="" D GETJOB(PID) | ||
205 | 39 | Q | ||
206 | 40 | GETJOB(PID) ; | ||
207 | 41 | N SORTDATE | ||
208 | 42 | F S INSTANCE=$O(Y("B",INSTANCE)) Q:INSTANCE="" D | ||
209 | 43 | . N H S H=$G(^|Y("B",INSTANCE)|TMP("MSCZJOB",PID,0)) Q:H="" | ||
210 | 44 | . S SORTDATE($$SEC^XLFDT(H))=INSTANCE | ||
211 | 45 | N MAXDATE S MAXDATE=$O(SORTDATE(""),-1) Q:MAXDATE="" | ||
212 | 46 | M @XARY@(PID)=^|Y("B",SORTDATE(MAXDATE))|TMP("MSCZJOB",PID) | ||
213 | 47 | Q | ||
214 | 48 | ; | ||
215 | 49 | OWNER(PID) ; get owner of process with PID | ||
216 | 50 | N DEV | ||
217 | 51 | S DEV="psdev" | ||
218 | 52 | OPEN DEV:(COMM="ps -o user= -p "_PID:READONLY)::"PIPE" U DEV | ||
219 | 53 | N UID R UID | ||
220 | 54 | C DEV | ||
221 | 55 | Q UID | ||
222 | 56 | ; | ||
223 | 24 | INTRPT(PID) ; SEND mupip intrpt to process with PID | 57 | INTRPT(PID) ; SEND mupip intrpt to process with PID |
224 | 25 | ; WHICH CAUSES THE $ZINTERRUPT CODE TO BE EXECUTED. | 58 | ; WHICH CAUSES THE $ZINTERRUPT CODE TO BE EXECUTED. |
225 | 26 | ; PID PASSED BY VALUE | 59 | ; PID PASSED BY VALUE |
226 | @@ -32,7 +65,7 @@ | |||
227 | 32 | N CMD,DEV | 65 | N CMD,DEV |
228 | 33 | S CMD="gtmsignal -q "_$S(PID="*":"-a",1:PID) | 66 | S CMD="gtmsignal -q "_$S(PID="*":"-a",1:PID) |
229 | 34 | S DEV="gtmsignaldev" | 67 | S DEV="gtmsignaldev" |
231 | 35 | OPEN DEV:(COMM=CMD)::"PIPE" U DEV C DEV | 68 | OPEN DEV:(COMM=CMD:READONLY)::"PIPE" U DEV C DEV |
232 | 36 | Q | 69 | Q |
233 | 37 | ; | 70 | ; |
234 | 38 | KILL(PID) ; Send mupip stop to process with PID | 71 | KILL(PID) ; Send mupip stop to process with PID |
235 | @@ -43,12 +76,15 @@ | |||
236 | 43 | ; | 76 | ; |
237 | 44 | N DEV | 77 | N DEV |
238 | 45 | S DEV="gtmsignaldev" | 78 | S DEV="gtmsignaldev" |
240 | 46 | OPEN DEV:(COMM="gtmsignal -q -s "_PID)::"PIPE" U DEV C DEV | 79 | OPEN DEV:(COMM="gtmsignal -q -s "_PID:READONLY)::"PIPE" U DEV C DEV |
241 | 47 | Q | 80 | Q |
242 | 48 | ; | 81 | ; |
244 | 49 | UNLOCK(NODE) ; Use lke to remove lock on NODE. | 82 | UNLOCK(NODE,INSTANCE) ; Use lke to remove lock on NODE. |
245 | 83 | N %ZG,%ZRO | ||
246 | 84 | D:$G(INSTANCE)'="" NEWZGZRO^ZCD(INSTANCE) | ||
247 | 50 | N CMD,DEV | 85 | N CMD,DEV |
248 | 51 | S CMD="lke clear -lock="""_NODE_""" -nointeractive -output=/dev/null" | 86 | S CMD="lke clear -lock="""_NODE_""" -nointeractive -output=/dev/null" |
249 | 87 | S:$G(%ZG)'="" CMD="gtmgbldir="""_%ZG_""" "_CMD | ||
250 | 52 | S DEV="lkedev" | 88 | S DEV="lkedev" |
252 | 53 | OPEN DEV:(COMM=CMD)::"PIPE" U DEV C DEV | 89 | OPEN DEV:(SHELL="/bin/sh":COMM=CMD:READONLY)::"PIPE" U DEV C DEV |
253 | 54 | Q | 90 | Q |
254 | 55 | 91 | ||
255 | === modified file 'mumps/ZCD.m' | |||
256 | --- mumps/ZCD.m 2009-06-25 00:16:23 +0000 | |||
257 | +++ mumps/ZCD.m 2009-06-25 23:15:27 +0000 | |||
258 | @@ -1,4 +1,4 @@ | |||
260 | 1 | ZCD ; MSC/JKT,JDS ; "Namespace" utilities for GT.M/Unix ; 24JUN2009 | 1 | ZCD ; MSC/JKT,JDS ; "Namespace" utilities for GT.M/Unix ; 25JUN2009 |
261 | 2 | ;;8.0;KERNEL;**MSC**;April 21 2009 | 2 | ;;8.0;KERNEL;**MSC**;April 21 2009 |
262 | 3 | ; This routine assumes that your global directory file exists one | 3 | ; This routine assumes that your global directory file exists one |
263 | 4 | ; directory below the root of the instance, e.g., | 4 | ; directory below the root of the instance, e.g., |
264 | @@ -57,15 +57,7 @@ | |||
265 | 57 | Q | 57 | Q |
266 | 58 | ; | 58 | ; |
267 | 59 | SWITCH(INSTANCE) ; switch to another OpenVista instance | 59 | SWITCH(INSTANCE) ; switch to another OpenVista instance |
277 | 60 | ; | 60 | N %ZG,%ZRO D NEWZGZRO(INSTANCE) I %ZG="",%ZRO="" Q 0 |
269 | 61 | ; don't allow switching if GT.M versions aren't the same | ||
270 | 62 | Q:$$GTMPATH($$CURRENT())'=$$GTMPATH(INSTANCE) 0 | ||
271 | 63 | ; | ||
272 | 64 | ; there are several ways to determine new values of $ZG and $ZRO | ||
273 | 65 | ; try each method until one succeeds | ||
274 | 66 | N %ZG,%ZRO,%METHOD S %ZG="",%ZRO="" | ||
275 | 67 | F %METHOD="ENV","CAT","REP" Q:$$@("SWITCH"_%METHOD)(INSTANCE) | ||
276 | 68 | I %ZG="",%ZRO="" Q 0 | ||
278 | 69 | ; | 61 | ; |
279 | 70 | ; FIXME: set gtm_dist="$root/$instance/gtm" | 62 | ; FIXME: set gtm_dist="$root/$instance/gtm" |
280 | 71 | N %TEMPDIR S %TEMPDIR=$$MKTEMP() S $ZG=%ZG,$ZRO=%ZRO_" "_%TEMPDIR | 63 | N %TEMPDIR S %TEMPDIR=$$MKTEMP() S $ZG=%ZG,$ZRO=%ZRO_" "_%TEMPDIR |
281 | @@ -99,26 +91,39 @@ | |||
282 | 99 | Q:'$Q | 91 | Q:'$Q |
283 | 100 | Q 1 | 92 | Q 1 |
284 | 101 | ; | 93 | ; |
286 | 102 | SWITCHENV(INSTANCE) ; private entry point to be used by $$SWITCH only | 94 | NEWZGZRO(INSTANCE) ; determine new values of $ZG and $ZRO |
287 | 95 | S %ZG="",%ZRO="" | ||
288 | 96 | ; | ||
289 | 97 | ; don't allow switching if GT.M versions aren't the same | ||
290 | 98 | Q:$$GTMPATH($$CURRENT())'=$$GTMPATH(INSTANCE) | ||
291 | 99 | ; | ||
292 | 100 | ; there are several ways to determine new values of $ZG and $ZRO | ||
293 | 101 | ; try each method until one succeeds | ||
294 | 102 | N %METHOD F %METHOD="ENV","CAT","REP" D @("SWITCH"_%METHOD)(INSTANCE) Q:%ZG'=""&(%ZRO'="") | ||
295 | 103 | Q | ||
296 | 104 | ; | ||
297 | 105 | SWITCHENV(INSTANCE) ; private entry point | ||
298 | 103 | ; set new $ZG and $ZRO by parsing env file in target instance | 106 | ; set new $ZG and $ZRO by parsing env file in target instance |
299 | 104 | ; | 107 | ; |
300 | 105 | ; FIXME: implement this | 108 | ; FIXME: implement this |
302 | 106 | Q 0 | 109 | Q |
303 | 107 | ; | 110 | ; |
306 | 108 | SWITCHCAT(INSTANCE) ; private entry point to be used by $$SWITCH only | 111 | SWITCHCAT(INSTANCE) ; private entry point |
307 | 109 | ; set new $ZG and $ZRO by concatenating conventional names to $$ROOT | 112 | ; set new $ZG and $ZRO by concatenating conventional names to $$ROOT. |
308 | 113 | ; NOTE: this code makes assumptions about the directory layout of the | ||
309 | 114 | ; OpenVista instance. | ||
310 | 110 | ; | 115 | ; |
311 | 111 | S %ZG=$$PATH(INSTANCE)_"/globals/mumps.gld" | 116 | S %ZG=$$PATH(INSTANCE)_"/globals/mumps.gld" |
312 | 112 | S %ZRO=$$PATH(INSTANCE)_"/objects("_$$PATH(INSTANCE)_"/routines) "_$$PATH(INSTANCE)_"/gtm" | 117 | S %ZRO=$$PATH(INSTANCE)_"/objects("_$$PATH(INSTANCE)_"/routines) "_$$PATH(INSTANCE)_"/gtm" |
313 | 113 | ; | 118 | ; |
314 | 114 | ; FIXME: check that %ZG actually exists and that all pieces of %ZRO exist | 119 | ; FIXME: check that %ZG actually exists and that all pieces of %ZRO exist |
316 | 115 | Q 1 | 120 | Q |
317 | 116 | ; | 121 | ; |
319 | 117 | SWITCHREP(INSTANCE) ; private entry point to be used by $$SWITCH only | 122 | SWITCHREP(INSTANCE) ; private entry point |
320 | 118 | ; set new $ZG and $ZRO by replacing $$PATH($$CURRENT()) with $$PATH(INSTANCE) | 123 | ; set new $ZG and $ZRO by replacing $$PATH($$CURRENT()) with $$PATH(INSTANCE) |
321 | 119 | ; | 124 | ; |
322 | 120 | ; FIXME: implement this | 125 | ; FIXME: implement this |
324 | 121 | Q 0 | 126 | Q |
325 | 122 | ; | 127 | ; |
326 | 123 | MKTEMP() ; create a secure temporary directory, returns path to new directory | 128 | MKTEMP() ; create a secure temporary directory, returns path to new directory |
327 | 124 | N %PIPE,%I S %PIPE="mktemp",%I=$I | 129 | N %PIPE,%I S %PIPE="mktemp",%I=$I |
328 | 125 | 130 | ||
329 | === modified file 'mumps/ZOSFGUX.m' | |||
330 | --- mumps/ZOSFGUX.m 2009-06-05 18:44:13 +0000 | |||
331 | +++ mumps/ZOSFGUX.m 2009-06-26 07:02:30 +0000 | |||
332 | @@ -1,4 +1,4 @@ | |||
334 | 1 | ZOSFGUX ;SFISC/MVB,PUG/TOAD MSC/JDS- ZOSF Table for GT.M for Unix ;6JUN2009 | 1 | ZOSFGUX ;SFISC/MVB,PUG/TOAD MSC/JDS,JKT- ZOSF Table for GT.M for Unix ;26JUN2009 |
335 | 2 | ;;8.0;KERNEL;**275,MSC**;Jul 10, 1995 | 2 | ;;8.0;KERNEL;**275,MSC**;Jul 10, 1995 |
336 | 3 | ;; for GT.M for Unix, version 4.3 | 3 | ;; for GT.M for Unix, version 4.3 |
337 | 4 | ; | 4 | ; |
338 | @@ -100,7 +100,7 @@ | |||
339 | 100 | ;;RSUM | 100 | ;;RSUM |
340 | 101 | ;;S Y=0 F %=1,3:1 S %1=$T(+%^@X),%3=$F(%1," ") Q:'%3 S %3=$S($E(%1,%3)'=";":$L(%1),$E(%1,%3+1)=";":$L(%1),1:%3-2) F %2=1:1:%3 S Y=$A(%1,%2)*%2+Y | 101 | ;;S Y=0 F %=1,3:1 S %1=$T(+%^@X),%3=$F(%1," ") Q:'%3 S %3=$S($E(%1,%3)'=";":$L(%1),$E(%1,%3+1)=";":$L(%1),1:%3-2) F %2=1:1:%3 S Y=$A(%1,%2)*%2+Y |
341 | 102 | ;;SS | 102 | ;;SS |
343 | 103 | ;;D ^MSCZJOB | 103 | ;;D ^%SS |
344 | 104 | ;;SAVE | 104 | ;;SAVE |
345 | 105 | ;;D SAVE^%ZOSV2(X) ;N %I,%F S %I=$I,%F=$P($S($ZRO["(":$P($P($ZRO,"(",2),")"),1:$ZRO)," ")_"/"_X_".m" O %F:(NEWVERSION) U %F X "F S XCN=$O(@(DIE_XCN_"")"")) Q:+XCN'=XCN S %=@(DIE_XCN_"",0)"") Q:$E(%,1)=""$"" I $E(%)'="";"" W %,!" C %F U %I | 105 | ;;D SAVE^%ZOSV2(X) ;N %I,%F S %I=$I,%F=$P($S($ZRO["(":$P($P($ZRO,"(",2),")"),1:$ZRO)," ")_"/"_X_".m" O %F:(NEWVERSION) U %F X "F S XCN=$O(@(DIE_XCN_"")"")) Q:+XCN'=XCN S %=@(DIE_XCN_"",0)"") Q:$E(%,1)=""$"" I $E(%)'="";"" W %,!" C %F U %I |
346 | 106 | ;;SIZE | 106 | ;;SIZE |
347 | 107 | 107 | ||
348 | === modified file 'mumps/ZUGTM.m' | |||
349 | --- mumps/ZUGTM.m 2009-06-09 20:13:51 +0000 | |||
350 | +++ mumps/ZUGTM.m 2009-06-26 00:26:42 +0000 | |||
351 | @@ -1,4 +1,4 @@ | |||
353 | 1 | ZU ;SF/JLI,RWF MSC/JDS- For GT.M, TIE ALL TERMINALS TO THIS ROUTINE!! ;01MAY2009 | 1 | ZU ;SF/JLI,RWF MSC/JDS,JKT- For GT.M, TIE ALL TERMINALS TO THIS ROUTINE!! ;25JUN2009 |
354 | 2 | ;;8.0;KERNEL;**275,MSC**;Jul 10, 1995 | 2 | ;;8.0;KERNEL;**275,MSC**;Jul 10, 1995 |
355 | 3 | ; for GT.M for VMS & Unix, version 4.3 | 3 | ; for GT.M for VMS & Unix, version 4.3 |
356 | 4 | ; | 4 | ; |
357 | @@ -81,6 +81,7 @@ | |||
358 | 81 | I $G(^XUTL("XUSYS","COMMAND"))'="EXAM" ZSHOW "SD":^XUTL("XUSYS",$J,"JE") | 81 | I $G(^XUTL("XUSYS","COMMAND"))'="EXAM" ZSHOW "SD":^XUTL("XUSYS",$J,"JE") |
359 | 82 | I $G(^XUTL("XUSYS","COMMAND"))="EXAM" ZSHOW "*":^XUTL("XUSYS",$J,"JE") | 82 | I $G(^XUTL("XUSYS","COMMAND"))="EXAM" ZSHOW "*":^XUTL("XUSYS",$J,"JE") |
360 | 83 | I $G(^XUTL("XUSYS",$J,"CMD"))="HALT" ;To do. | 83 | I $G(^XUTL("XUSYS",$J,"CMD"))="HALT" ;To do. |
361 | 84 | S ^TMP("MSCZJOB",$J,0)=$H | ||
362 | 84 | ZSHOW "*":^TMP("MSCZJOB",$J) | 85 | ZSHOW "*":^TMP("MSCZJOB",$J) |
363 | 85 | Q 1 | 86 | Q 1 |
364 | 86 | ; | 87 | ; |