1 | LEXXST3 ; ISL Lexicon Status (KIDS/Routines Patch) ; 05/14/2003
|
---|
2 | ;;2.0;LEXICON UTILITY;**4,5,8,25**;Sep 23, 1996
|
---|
3 | Q
|
---|
4 | KIDS ; KIDS entries
|
---|
5 | N LEXBLD D GB,SB Q
|
---|
6 | GB ; Get KIDs builds
|
---|
7 | K LEXBLD Q:'$D(^DIC(9.4,"C","LEX"))
|
---|
8 | N LEXC,LEXIN,LEXPIN,LEXPN,LEXPA S LEXPA=$$PAC("LEX") Q:LEXPA=0
|
---|
9 | N LEXB S LEXB=0 F S LEXB=$O(^XPD(9.6,"C",LEXPA,LEXB)) Q:+LEXB=0 D
|
---|
10 | . S LEXPN=$P($G(^XPD(9.6,LEXB,0)),"^",1)
|
---|
11 | . S LEXIN=$$INS(LEXPN)
|
---|
12 | . I LEXPN'["*" D
|
---|
13 | . . S LEXC=+($G(LEXBLD(1,0))),LEXC=LEXC+1
|
---|
14 | . . S LEXBLD(1,0)=LEXC,LEXBLD(1,LEXC)=LEXB_"^"_LEXPN_"^"_LEXIN
|
---|
15 | . I LEXPN["*" D
|
---|
16 | . . S LEXC=+($P(LEXPN,"*",3)) I $D(LEXBLD(2,LEXC)) D
|
---|
17 | . . . S LEXC=LEXC+99999
|
---|
18 | . . S LEXBLD(2,0)=LEXC,LEXBLD(2,LEXC)=LEXB_"^"_LEXPN_"^"_LEXIN
|
---|
19 | Q
|
---|
20 | SB ; Save KIDs builds
|
---|
21 | I '$D(LEXBLD) D NOINS Q
|
---|
22 | I +($G(LEXBLD(1,0)))=0 D NOPAC G SP
|
---|
23 | N LEXLN,LEXIN I +($G(LEXBLD(1,0)))>0 D
|
---|
24 | . D BL,TT("KIDS INSTALLATION (PACKAGE)"),BL
|
---|
25 | . N LEXI S LEXI=0 F S LEXI=$O(LEXBLD(1,LEXI)) Q:+LEXI=0 D
|
---|
26 | . . S LEXLN=$P($G(LEXBLD(1,LEXI)),"^",2) Q:'$L(LEXLN)
|
---|
27 | . . S LEXIN=$P($G(LEXBLD(1,LEXI)),"^",3) S:$L(LEXIN) LEXLN=LEXLN_$J("",(40-$L(LEXLN)))_" "_LEXIN
|
---|
28 | . . S LEXLN=" "_LEXLN D TL(LEXLN)
|
---|
29 | SP ; Save patches
|
---|
30 | I +($G(LEXBLD(2,0)))=0 D NOPAT Q
|
---|
31 | I +($G(LEXBLD(2,0)))>0 D
|
---|
32 | . D BL,TT("KIDS INSTALLATIONS (PATCHES)"),BL
|
---|
33 | . N LEXI S LEXI=0 F S LEXI=$O(LEXBLD(2,LEXI)) Q:+LEXI=0 D
|
---|
34 | . . S LEXLN=$P($G(LEXBLD(2,LEXI)),"^",2) Q:'$L(LEXLN)
|
---|
35 | . . S LEXIN=$P($G(LEXBLD(2,LEXI)),"^",3) S:$L(LEXIN) LEXLN=LEXLN_$J("",(40-$L(LEXLN)))_" "_LEXIN
|
---|
36 | . . S LEXLN=" "_LEXLN D TL(LEXLN)
|
---|
37 | Q
|
---|
38 | NOINS ; None found
|
---|
39 | D BL,TT("KIDS INSTALLATION (PACKAGE/PATCHES)"),BL D TL(" NONE FOUND") Q
|
---|
40 | NOPAC ; No package
|
---|
41 | D BL,TT("KIDS INSTALLATION (PACKAGE)"),BL,TL(" NONE FOUND") Q
|
---|
42 | NOPAT ; No patches
|
---|
43 | D BL,TT("KIDS INSTALLATIONS (PATCHES)"),BL,TL(" NONE FOUND") Q
|
---|
44 | PAC(LEXX) ; Package Entry
|
---|
45 | S LEXX=+($O(^DIC(9.4,"C",LEXX,0))) Q LEXX
|
---|
46 | INS(LEXX) ; Installation Entry
|
---|
47 | S LEXX=$G(LEXX) Q:LEXX="" LEXX Q:'$D(^XPD(9.7,"B",LEXX)) ""
|
---|
48 | N LEXIA,LEXM,LEXI S (LEXIA,LEXM)=0
|
---|
49 | F S LEXIA=$O(^XPD(9.7,"B",LEXX,LEXIA)) Q:+LEXIA=0 D
|
---|
50 | . S LEXI=$P($G(^XPD(9.7,LEXIA,1)),"^",3),LEXI=+LEXI
|
---|
51 | . S:LEXI>LEXM LEXM=LEXI
|
---|
52 | S:+LEXM=0 LEXM="" S:+LEXM>0 LEXM=$$FTE^LEXXST4(+LEXM)
|
---|
53 | S LEXX=LEXM Q LEXX
|
---|
54 | ;
|
---|
55 | RTN ; Find Patched Routines
|
---|
56 | I '$D(^DIC(9.4,"C","LEX"))!('$D(^DIC(9.8,"B","LEXA1"))) D NORTN Q
|
---|
57 | N LEX,LEXPT,LEXP,LEXRT,LEXC,LEXT S LEXRT="LEW~",LEXC="LEX"
|
---|
58 | ; PCH 5 replace indirection $T(@LEXRT) with executable string
|
---|
59 | F S LEXRT=$O(^DIC(9.8,"B",LEXRT)) Q:LEXRT=""!($E(LEXRT,1,$L(LEXC))'=LEXC) D
|
---|
60 | . ; PCH 8 quit if routine is a environment check, pre/post install
|
---|
61 | . Q:$E(LEXRT,4)?1N
|
---|
62 | . N LEXEXC,X S X=LEXRT X ^%ZOSF("TEST") I $T D
|
---|
63 | . . S LEXT="",LEXEXC="S LEXT=$T("_LEXRT_"+1^"_LEXRT_")" X LEXEXC
|
---|
64 | . . S LEXT=$G(LEXT),LEXP=$$TRIM($P($G(LEXT),";",5)) I +LEXP>0 D
|
---|
65 | . . . N LEXPN,LEXPT F LEXPN=1:1 Q:$P(LEXP,",",LEXPN)="" D
|
---|
66 | . . . . S LEXPT=$P(LEXP,",",LEXPN) I '$D(LEX(LEXPT,LEXRT)) D
|
---|
67 | . . . . . N LEXI F LEXI=1:1 Q:$L($G(LEX(LEXPT,LEXI)))<200
|
---|
68 | . . . . . S LEX(LEXPT,LEXI)=$G(LEX(LEXPT,LEXI))_", "_LEXRT,LEX(LEXPT,LEXRT)=""
|
---|
69 | . . . . . S:$E($G(LEX(LEXPT,LEXI)),1,2)=", " LEX(LEXPT,LEXI)=$E(LEX(LEXPT,LEXI),3,$L(LEX(LEXPT,LEXI)))
|
---|
70 | D PAT
|
---|
71 | Q
|
---|
72 | PAT ; Save Patch Routines
|
---|
73 | D:+($O(LEX(0)))=0 NORTN Q:+($O(LEX(0)))=0
|
---|
74 | D:+($O(LEX(0)))>0 BL,TT("PATCHED ROUTINES")
|
---|
75 | N LEXSP,LEXLN,LEXLP S LEXLP=+($O(LEX(9999999),-1)),LEXSP=" "
|
---|
76 | I LEXLP>0 D BL,TL((" LAST ROUTINE PATCH # "_LEXLP))
|
---|
77 | I +($O(LEX(0)))>0 D BL,TL(" PATCH ROUTINES"),TL(" ------------------------------------------------------------------------")
|
---|
78 | N LEXPN,LEXI S LEXPN=0 F S LEXPN=$O(LEX(LEXPN)) Q:+LEXPN=0 F LEXI=1:1 Q:'$D(LEX(LEXPN,LEXI)) D
|
---|
79 | . S LEXLN=$G(LEX(LEXPN,LEXI)) I $L(LEXLN),LEXI'>1 S LEXLN=$J("",(9-$L(LEXPN)))_LEXPN_" "_LEXLN D PL(LEXLN,LEXI)
|
---|
80 | . I $L(LEXLN),LEXI>1 D PL(LEXLN,LEXI)
|
---|
81 | D:+($O(LEX(0)))>0 BL
|
---|
82 | Q
|
---|
83 | PL(LEXX,LEXI) ; Patch Line
|
---|
84 | S LEXX=$G(LEXX) Q:'$L(LEXX) S LEXI=+($G(LEXI)) I LEXI>1 D
|
---|
85 | . N LEXNX,LEXNI S LEXNI=$O(^TMP("LEXINS",$J,9999999999),-1) Q:+LEXNI'>0
|
---|
86 | . S LEXNX=$G(^TMP("LEXINS",$J,LEXNI))
|
---|
87 | . I $L(LEXNX) D
|
---|
88 | . . K ^TMP("LEXINS",$J,LEXNI)
|
---|
89 | . . S ^TMP("LEXINS",$J,0)=(LEXNI-1),LEXX=LEXNX_", "_LEXX
|
---|
90 | N LEXLL S LEXLL=78 S:LEXI>1 LEXLL=60 D:$L(LEXX)'>LEXLL TL(LEXX) Q:$L(LEXX)'>LEXLL N LEXP,LEXNL
|
---|
91 | PL2 ; Patch Line (over 78 characters)
|
---|
92 | F LEXP=78:-1:1 Q:$E(LEXX,(LEXP-1),LEXP)=", "
|
---|
93 | I LEXP>1 S LEXNL=$E(LEXX,1,(LEXP-1)) D TL(LEXNL) S LEXX=$E(LEXX,(LEXP+1),$L(LEXX))
|
---|
94 | S LEXLL=60 I $L(LEXX)>LEXLL S LEXX=LEXSP_LEXX G PL2
|
---|
95 | S:$L(LEXX)'>LEXLL&(LEXX'[LEXSP) LEXX=LEXSP_LEXX D TL(LEXX)
|
---|
96 | Q
|
---|
97 | NORTN ; No patched routines found
|
---|
98 | D BL,TT("PATCHED ROUTINES"),BL D TL(" NONE FOUND") Q
|
---|
99 | TT(LEXX) ; Title Line
|
---|
100 | D TT^LEXXST($G(LEXX)) Q
|
---|
101 | TL(LEXX) ; Text Line
|
---|
102 | D TL^LEXXST($G(LEXX)) Q
|
---|
103 | BL ; Blank Line
|
---|
104 | D BL^LEXXST Q
|
---|
105 | TRIM(LEXX) ; Trim spaces
|
---|
106 | S LEXX=$G(LEXX),LEXX=$TR(LEXX,"*","")
|
---|
107 | F Q:$E(LEXX,1)'=" " S LEXX=$E(LEXX,2,$L(LEXX))
|
---|
108 | F Q:$E(LEXX,$L(LEXX))'=" " S LEXX=$E(LEXX,1,($L(LEXX)-1))
|
---|
109 | F Q:LEXX'[" " S LEXX=$P(LEXX," ",1)_" "_$P(LEXX," ",2)
|
---|
110 | Q LEXX
|
---|
111 | Q
|
---|