source: IHS-VA_UTILITIES-XB/XB.m@ 641

Last change on this file since 641 was 641, checked in by Sam Habiel, 14 years ago

Initial commit of XB, move away from sf.net.
Includes kids file and documentation.

File size: 5.4 KB
Line 
1XB ; IHS/ADC/GTH - UTILITY MENU ; [ 04/28/2003 9:38 AM ]
2 ;;4.0;XB;;Jul 20, 2009;Build 2
3 ;
4 ; SEE ROUTINE XB1 FOR FURTHER DOCUMENTATION AND THE MENU
5 ; OPTIONS.
6 ;
7 ; This routine lists available utilities in the form of a
8 ; menu with a brief description of what the utility does.
9 ; New utilities may be added to this routine by adding the
10 ; appropriate ";;" entries to the bottom of routine XB1.
11 ;
12START ;
13 I '$D(^%ZOSF("TEST"))!('$D(^%ZOSF("TRAP"))) W !!,"Missing ^%ZOSF nodes!",! Q
14 S X="%ZIS"
15 D RCHK
16 I XBFAIL D EOJ Q
17 D ^XBKSET
18 S X="XBRPTL"
19 D RCHK
20 S:XBFAIL XBNH=""
21 S XBLBL="M",XBQ=0
22 F D MENU Q:XBQ
23 D EOJ
24 Q
25 ;
26MENU ;
27 D LIST
28 W !!,"Choose: "
29 R XBY:$G(DTIME,999)
30 S:XBY="^" XBY=""
31 I XBY["?" D HELP Q
32 I XBY="" S XBQ=1 Q
33 I XBY'=+XBY D LETTERS
34 I XBY'<1,XBY'>(XBI-1) D OPTION D:XBP="P" PAUSE S XBP="" Q
35 W *7
36 Q
37 ;
38HELP ;
39 I XBY="?" D Q
40 . S XBH=""
41 . D LIST
42 . KILL XBH
43 . W !!,"To get help on a non-menu option enter '?n' where n is the option number.",!
44 . D PAUSE
45 .Q
46 I XBY?1"?"1N.N S XBY=$P(XBY,"?",2) I XBY,XBY'>(XBI-1) D D PAUSE Q
47 . I $D(XBNH) W !!,"No help available. Routine ^XBRPTL not in UCI.",! Q
48 . KILL ^UTILITY($J)
49 . S XBX=$P($T(@XBLBL+XBY^XB1),";;",3)
50 . I XBX W !!,"No help available for menus." Q
51 . I XBX?1"!".E W !!,"No help available for executable code :",!,"[",$E(XBX,2,99),"]." Q
52 . S XBX=$P(XBX,"^",2),X=XBX
53 . D RCHK
54 . I XBFAIL W !!,"No help available. Routine ^",XBX," not in ",$S($E(XBX)="%":"MGR",1:"UCI"),".",! Q
55 . S %=$$RSEL^ZIBRSEL(XBX,"^UTILITY($J,")
56 . D EN^XBRPTL
57 . KILL ^UTILITY($J)
58 .Q
59 W *7
60 Q
61 ;
62LIST ; List menu options.
63 KILL XBTBL
64 ;W !!?5,$P($T(XB+1),";",4)," v ",$$CV^XBFUNC("XB");IHS/SET/GTH XB*3*9 10/29/2002
65 W !!?5,$P($T(XB+1),";",4)," v ",$$VERSION^XPDUTL("XB") ;IHS/SET/GTH XB*3*9 10/29/2002
66 W !!?5,$P($T(@XBLBL^XB1),";;",2),!
67 F XBI=1:1 S XBX=$T(@XBLBL+XBI^XB1) Q:$E(XBX)'=" " S XBY=$P(XBX,";;",3),XBX=$P(XBX,";;",2) D
68 . S X=$$UP^XLFSTR(XBX)
69 . S XBTBL(X)=XBI_"^"_XBX
70 . W !,XBI,?5,XBX," ",$S($D(XBH):$S(XBY:"[menu]",1:XBY),1:$S(XBY:"[menu]",1:""))
71 .Q
72 Q
73 ;
74LETTERS ;
75 KILL XBC
76 S XBY=$$UP^XLFSTR(XBY)
77 I $D(XBTBL(XBY)) S XBY=XBTBL(XBY) Q
78 S XBC=0,X=XBY
79 F S X=$O(XBTBL(X)) Q:X=""!($E(X,1,$L(XBY))'=XBY) S XBC=XBC+1,XBC(XBC)=+XBTBL(X)_"^"_$P(XBTBL(X),"^",2)
80 W !
81 I XBC=0 S XBY=0 Q
82 I XBC=1 S XBY=$P(XBC(1),"^",1) Q
83 F I=1:1:XBC W !,I," ",$P(XBC(I),"^",2)
84 W !!,"Which one? "
85 R XBY:$G(DTIME,999)
86 I XBY]"",$D(XBC(XBY)) W " ",$P(XBC(XBY),"^",2) S XBY=$P(XBC(XBY),"^",1) Q
87 W *7
88 S XBY=0
89 Q
90 ;
91OPTION ;
92 S XBX=$T(@XBLBL+XBY^XB1),XBP=$P(XBX,";;",4),XBX=$P(XBX,";;",3)
93 I XBX D RECURSE Q
94 W !
95 I XBX?1"!".E S XBX=$E(XBX,2,250)
96 E S X=$P(XBX,"^",2),XBX="D "_XBX D RCHK I XBFAIL W "Routine ",X," not in ",$S($E(X)="%":"MGR!",1:"UCI!") Q
97 S X="TRAP^XB",@^%ZOSF("TRAP")
98 ; D ^XBNEW("CALL^XB:XBX;DT;DTIME;U;DUZ") ;IHS/SET/GTH XB*3*9 10/29/2002
99 D EN^XBNEW("CALL^XB","XBX;DT;DTIME;U;DUZ") ;IHS/SET/GTH XB*3*9 10/29/2002
100 Q
101 ;
102CALL ;
103 S IOP=$I
104 D ^%ZIS
105 X XBX
106 U 0
107 Q
108 ;
109RECURSE ;
110 I $L(XBLBL)>6 W !,"Maximum menu depth exceeded." S XBQ=1 Q
111 S XBLBL=XBLBL_XBX
112 W !
113 F D MENU Q:XBQ
114 S XBQ=0,XBLBL=$E(XBLBL,1,$L(XBLBL)-1)
115 W !
116 Q
117 ;
118TRAP ; ERROR TRAP
119 W !!,"The following error has occurred: ",$$Z^ZIBNSSV("ERROR"),!
120 D:XBP="" PAUSE
121 Q
122 ;
123PAUSE ;EP
124 Q:'(IO=IO(0))
125 Q:'($E(IOST,1,2)="C-")
126 S Y=$$DIR^XBDIR("EO")
127 S:$D(DUOUT) XBQ=1
128 Q
129 ;
130CHECK ; CHECK XB OPTION ROUTINES (EXECUTED FROM ^XB MENU OPTION)
131 W !,"Patch ",$$PATS," is the highest XB/ZIB patch installed." ;IHS/SET/GTH XB*3*9 10/29/2002
132 F XBII=1:1 S X=$T(M+XBII^XB1) Q:X="" I $P(X,";;",1)=" " S X=$P(X,";;",3) I X'=+X,X'?1"!".E D
133 . I X'?.8UN1"^"1.8UN,X'?.8UN1"^"1"%"1.7UN S XBII(4,XBII)=$P($T(M+XBII^XB1),";;",2,9) Q
134 . S X=$P(X,"^",2)
135 . D RCHK
136 . I XBFAIL S XBII($S($E(X)'="%":1,$E(X,2,4)="ZIB":2,1:3),X)=""
137 .Q
138 I '$O(XBII(0)) W !,"All options seem to be ok.",! KILL XBII Q
139 I $D(XBII(1)) W !,"The following routines are not in this UCI:" S X="" F S X=$O(XBII(1,X)) Q:X="" W !?3,X
140 I $D(XBII(2)) W !,"The following ZIB* routines must be moved to MGR as % routines:" S X="" F S X=$O(XBII(2,X)) Q:X="" W !?3,X
141 I $D(XBII(3)) W !,"The following % routines are not in ",$S($$VERSION^%ZOSF(1)["Cache":"this Namespace",1:"MGR"),":" S X="" F S X=$O(XBII(3,X)) Q:X="" W !?3,X ;IHS/SET/GTH XB*3*9 10/29/2002
142 I $D(XBII(4)) W !,"The following options have invalid routine names:" S X="" F S X=$O(XBII(4,X)) Q:X="" W !?3,XBII(4,X)
143 W !
144 KILL XBII
145 Q
146 ;
147RCHK ;EP - Check Existence of Routine in X
148 S XBRTN=X,XUSLNT=1
149 ; I $E(XBRTN)="%" X ^%ZOSF("UCI") S XBUCI=Y,%UCI="MGR" D 2^%XUCI ; IHS/SET/GTH XB*3*9 10/29/2002
150 I ^%ZOSF("OS")["MSM",$E(XBRTN)="%" X ^%ZOSF("UCI") S XBUCI=Y,%UCI="MGR" D 2^%XUCI ; IHS/SET/GTH XB*3*9 10/29/2002
151 S X=XBRTN
152 X ^%ZOSF("TEST")
153 S XBFAIL='$T
154 ; I $E(XBRTN)="%" S %UCI=XBUCI D 2^%XUCI ; IHS/SET/GTH XB*3*9 10/29/2002
155 I ^%ZOSF("OS")["MSM",$E(XBRTN)="%" S %UCI=XBUCI D 2^%XUCI ; IHS/SET/GTH XB*3*9 10/29/2002
156 W:XBFAIL !!,"Routine ",XBRTN," missing!"
157 S X=XBRTN
158 KILL XUSLNT
159 Q
160 ;
161EOJ ;
162 D ^XBKTMP,EN^XBVK("XB")
163 KILL ^UTILITY($J)
164 KILL DIRUT,DTOUT,DUOUT
165 KILL X,Y
166 Q
167 ;
168OSNO ;EP
169 W $C(7),!,"Sorry...",!,"Operating System '",$P(^%ZOSF("OS"),"^",1),"' is not supported."
170 I $$DIR^XBDIR("EO","Press RETURN") ;IHS/SET/GTH XB*3*9 10/29/2002
171 Q
172 ;
173 ;Begin New Code;IHS/SET/GTH XB*3*9 10/29/2002
174PATS() ;Display patches installed for XB.
175 NEW I,P,V
176 S I=$O(^DIC(9.4,"C","XB",0))
177 Q:'I "??"
178 S V=$O(^DIC(9.4,I,22,"B",$P($T(+2),";",3),0))
179 Q:'V "??"
180 S P=0
181 F %=0:0 S %=$O(^DIC(9.4,I,22,V,"PAH",%)) Q:'% I $P(^(%,0),"^",1)>P S P=$P(^(0),"^",1)
182 Q P
183 ;End New Code;IHS/SET/GTH XB*3*9 10/29/2002
Note: See TracBrowser for help on using the repository browser.