1 | LEXXST2 ; ISL Lexicon Status (Routine Count) ; 12-08-97
|
---|
2 | ;;2.0;LEXICON UTILITY;**4,5,8**;Sep 23, 1996;Build 1
|
---|
3 | Q
|
---|
4 | RTT ; Total Routines
|
---|
5 | D BL,TT("ROUTINES"),BL
|
---|
6 | D:$O(^DIC(9.8,"B","LEW~"))'["LEX" BL,TL(" NO ROUTINES FOUND")
|
---|
7 | Q:$O(^DIC(9.8,"B","LEW~"))'["LEX" N LEXT,LEXR,LEXROU,LEXV,LEXVD,LEXL,LEXP,LEXROU,LEXRC,LEXC,LEXVER,LEXVERD,LEXLAST,LEXFST,LEXSEC S LEXRC=0,LEXR=$E("LEX",1,($L("LEX")-1))_$C($A($E("LEX",$L("LEX")))-1)_"~",LEXC="LEX"
|
---|
8 | F S LEXR=$O(^DIC(9.8,"B",LEXR)) Q:LEXR=""!($E(LEXR,1,$L(LEXC))'=LEXC) D GET
|
---|
9 | I +($G(LEXRC))>0 D SET
|
---|
10 | Q
|
---|
11 | GET ; Retrieve first 2 lines of routine
|
---|
12 | ; PCH 8 quit if routine is a environment check, pre/post install
|
---|
13 | Q:$E(LEXR,4)?1N
|
---|
14 | ; PCH 5 replace indirection $T(@LEXR) with executable string
|
---|
15 | K LEXFST,LEXSEC N X,LEXEXC S X=LEXR X ^%ZOSF("TEST") I $T D
|
---|
16 | . S LEXRC=+($G(LEXRC))+1
|
---|
17 | . S LEXEXC="S LEXFST=$T(^"_LEXR_")"
|
---|
18 | . X LEXEXC S LEXFST=$G(LEXFST),LEXL=$$TRIMD($P($G(LEXFST),";",3)) D LAST
|
---|
19 | . S LEXEXC="S LEXSEC=$T("_LEXR_"+1^"_LEXR_")"
|
---|
20 | . X LEXEXC S LEXSEC=$G(LEXSEC),LEXV=$$TRIMS($P($G(LEXSEC),";",3)),LEXVD=$$TRIMS($P($G(LEXSEC),";",6)),LEXP=$$TRIMS($P($G(LEXSEC),";",5)) D VER,VERD
|
---|
21 | Q
|
---|
22 | SET ; Update global array
|
---|
23 | N LEXT,LEXV,LEXVD,LEXL
|
---|
24 | S LEXV=$G(LEXVER(0)),LEXVD=$G(LEXVERD(0)),LEXL=$G(LEXLAST(0))
|
---|
25 | S LEXT=" ROUTINES FOUND: "_LEXRC D TL(LEXT)
|
---|
26 | I $L($G(LEXV)) S LEXT=" VERSION: "_LEXV D TL(LEXT)
|
---|
27 | I $L($G(LEXVD)) S LEXT=" VERSION DATE: "_LEXVD D TL(LEXT)
|
---|
28 | I $L(LEXL) S LEXT=" DATE LAST MODIFIED: "_LEXL D TL(LEXT)
|
---|
29 | Q
|
---|
30 | PT ; Pointed to ...
|
---|
31 | D BL,TT("POINTED TO BY") D:'$D(^DD(757.01,0,"PT")) BL,TL(" NO FILES POINT TO THE LEXICON") Q:'$D(^DD(757.01,0,"PT"))
|
---|
32 | N LEXC,LEXFI,LEXFIN,LEXFF,LEXFD,LEXFDN,LEXND,LEXPT,LEXF1,LEXF2,LEXD1,LEXD2
|
---|
33 | S (LEXFI,LEXC)=0 F S LEXFI=$O(^DD(757.01,0,"PT",LEXFI)) Q:+LEXFI=0 I $E(LEXFI,1,3)'["757" S LEXFD=0 F S LEXFD=$O(^DD(757.01,0,"PT",LEXFI,LEXFD)) Q:+LEXFD=0 D PTX
|
---|
34 | D:LEXC=0 BL,TL(" NO FILES POINT TO THE LEXICON")
|
---|
35 | Q
|
---|
36 | PTX ; Pointed to Text
|
---|
37 | S LEXFIN=$O(^DD(LEXFI,0,"NM","")) Q:LEXFIN="" S LEXFDN=$P($G(^DD(LEXFI,LEXFD,0)),"^",1) Q:LEXFDN=""
|
---|
38 | S LEXFF=LEXFI_";"_LEXFD,LEXF1=" "_LEXFIN_" FILE"
|
---|
39 | S LEXD1=$P(LEXFI,".",1),LEXD2=$P(LEXFI,".",2.299),LEXF1=LEXF1_$J("",(55-($L(LEXF1)+$L(LEXD1))))_LEXD1_$S(LEXFF[".":".",1:"")_LEXD2
|
---|
40 | S LEXD1=$P(LEXFD,".",1),LEXD2=$P(LEXFD,".",2.299),LEXF1=LEXF1_$J("",(70-($L(LEXF1)+$L(LEXD1))))_LEXD1_$S(LEXFF[".":".",1:"")_LEXD2
|
---|
41 | S LEXF2=" "_LEXFDN_" FIELD"
|
---|
42 | S LEXC=LEXC+1 D BL,TL(LEXF1),TL(LEXF2)
|
---|
43 | Q
|
---|
44 | TT(LEXX) ; Title Text
|
---|
45 | D TT^LEXXST($G(LEXX)) Q
|
---|
46 | TL(LEXX) ; Noraml Text Line
|
---|
47 | D TL^LEXXST($G(LEXX)) Q
|
---|
48 | BL ; Blank Line
|
---|
49 | D BL^LEXXST Q
|
---|
50 | LAST ; Routine date-last-modified
|
---|
51 | S LEXL=$G(LEXL) Q:LEXL="" N LEXS,LEXD S LEXS=$$DTS^LEXXST4(LEXL)
|
---|
52 | S LEXD=$$STL^LEXXST4(LEXS) S:(+(LEXS)>+($G(LEXLAST))) LEXLAST=LEXS,LEXLAST(0)=LEXD Q
|
---|
53 | VER ; Routine version number
|
---|
54 | S LEXV=$G(LEXV) S:(+(LEXV)>+($G(LEXVER))) LEXVER=+(LEXV),LEXVER(0)=LEXV Q
|
---|
55 | VERD ; Routine version date
|
---|
56 | S LEXVD=$G(LEXVD) N LEXY,LEXM,LEXD,LEXL S LEXY=$E(LEXVD,($L(LEXVD)-1),$L(LEXVD))
|
---|
57 | S LEXD=+($P(LEXVD," ",2)),LEXM=$$UP^XLFSTR($P(LEXVD," ",1))
|
---|
58 | S LEXM=$S(LEXM["JAN":"01",LEXM["FEB":"02",LEXM["MAR":"03",LEXM["APR":"04",LEXM["MAY":"05",LEXM["JUN":"06",LEXM["JUL":"07",LEXM["AUG":"08",LEXM["SEP":"09",LEXM["OCT":"10",LEXM["NOV":"11",LEXM["DEC":"12",1:"01")
|
---|
59 | S LEXL=LEXY_LEXM_LEXD S:+LEXL>+($G(LEXVERD)) LEXVERD=+LEXL,LEXVERD(0)=LEXVD
|
---|
60 | Q
|
---|
61 | TRIMD(LEXX) ; Trim Date
|
---|
62 | S LEXX=$G(LEXX),LEXX=$$TRIMS(LEXX)
|
---|
63 | S:LEXX["@" LEXX=$P(LEXX,"@",1)
|
---|
64 | S:LEXX["-"&(LEXX[" ") LEXX=$P(LEXX," ",1) S:LEXX["/"&(LEXX[" ") LEXX=$P(LEXX," ",1)
|
---|
65 | S:$E(LEXX,1)?1A&($L(LEXX," ")>3) LEXX=$P(LEXX," ",1,3)
|
---|
66 | S:$E(LEXX,1)?1N&($L(LEXX," ")>3) LEXX=$P(LEXX," ",1,3)
|
---|
67 | S LEXX=$$TRIMW(LEXX)
|
---|
68 | I $L(LEXX," ")'=3&($L(LEXX,"-")'=3)&($L(LEXX,"/")'=3) S LEXX=""
|
---|
69 | N LEX,LEXP S LEX=LEXX
|
---|
70 | F LEXP=1:1:3 D
|
---|
71 | . I LEX["-",$L($P(LEX,"-",LEXP))>4 S LEXX=""
|
---|
72 | . I LEX["/",$L($P(LEX,"/",LEXP))>4 S LEXX=""
|
---|
73 | . I LEX[" ",$L($P(LEX," ",LEXP))>4 S LEXX=""
|
---|
74 | Q LEXX
|
---|
75 | TRIMS(LEXX) ; Trim String
|
---|
76 | S LEXX=$G(LEXX),LEXX=$TR(LEXX,"*",""),LEXX=$$TRIMW(LEXX) Q LEXX
|
---|
77 | TRIMW(LEXX) ; Trim Word
|
---|
78 | S LEXX=$G(LEXX) F Q:$E(LEXX,1)'=" " S LEXX=$E(LEXX,2,$L(LEXX))
|
---|
79 | F Q:$E(LEXX,$L(LEXX))'=" " S LEXX=$E(LEXX,1,($L(LEXX)-1))
|
---|
80 | F Q:LEXX'[" " S LEXX=$P(LEXX," ",1)_" "_$P(LEXX," ",2)
|
---|
81 | Q LEXX
|
---|