1 | ARJTDDKU ;PUG/TOAD-FileMan Search Utilities ;7/10/02 16:14
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;
|
---|
4 | ; this routine was used for experimenting with search criteria
|
---|
5 | ;
|
---|
6 | ; table of contents:
|
---|
7 | ; EXTRACT - find non-MUMPS $EXTRACT fields
|
---|
8 | ; LIKELY - flag likely fields
|
---|
9 | ; RESULTS - report results of report
|
---|
10 | ; RTEST - test RSE^ARJTDDKR with alternation in pattern match
|
---|
11 | ; RDSM - test RSE^ARJTDDKR with DSM-specific code
|
---|
12 | ;
|
---|
13 | ; calls: nothing
|
---|
14 | ; called by: nothing
|
---|
15 | ;
|
---|
16 | EXTRACT ; subroutine: find "free text" MUMPS fields
|
---|
17 | ;
|
---|
18 | ; calls: LIKELY - flag likely fields
|
---|
19 | ;
|
---|
20 | W !!,"Building list of non-MUMPS $EXTRACT fields..."
|
---|
21 | K ^TMP("DIDUF",$J) ; clear master list array
|
---|
22 | N SEARCHED S SEARCHED=0
|
---|
23 | N FOUND S FOUND=0
|
---|
24 | N FILE S FILE=0 F S FILE=$O(^DD(FILE)) Q:'FILE D
|
---|
25 | . N FIELD S FIELD=0 F S FIELD=$O(^DD(FILE,FIELD)) Q:'FIELD D
|
---|
26 | . . S SEARCHED=SEARCHED+1
|
---|
27 | . . N NODE S NODE=$G(^DD(FILE,FIELD,0))
|
---|
28 | . . N POS S POS=$P(NODE,U,4)
|
---|
29 | . . Q:$E($P(POS,";",2))'="E" ; $extract, not $piece
|
---|
30 | . . N FLDNAME S FLDNAME=$P(NODE,U)
|
---|
31 | . . N TYPE S TYPE=$E($P(NODE,U,2))
|
---|
32 | . . I TYPE="R" S TYPE=$E($P(NODE,U,2),2) ; R = required
|
---|
33 | . . Q:TYPE'="F"&(TYPE'="M") ; only want free text or "M"
|
---|
34 | . . ; M is not a real field type, but several fields use it to mean MUMPS
|
---|
35 | . . Q:'$$LIKELY(FLDNAME,FILE,FIELD)
|
---|
36 | . . S FOUND=FOUND+1
|
---|
37 | . . S ^TMP("DIDUF",$J,FILE,FIELD)=""
|
---|
38 | . . W !,FILE," ",?10,$O(^DD(FILE,0,"NM",""))," "
|
---|
39 | . . W ?40,FIELD," ",?50,FLDNAME,?79,TYPE
|
---|
40 | K ^TMP("DIDUF",$J) ; clear master list array
|
---|
41 | W !!,SEARCHED," non-MUMPS fields examined."
|
---|
42 | W !,FOUND," of them may contain MUMPS code."
|
---|
43 | QUIT ; end of EXTRACT
|
---|
44 | ;
|
---|
45 | ;
|
---|
46 | LIKELY(NAME,FILE,FIELD) ; function: flag likely fields
|
---|
47 | ;
|
---|
48 | ; input:
|
---|
49 | ; NAME - name of field
|
---|
50 | ; FILE - file DD #
|
---|
51 | ; FIELD - field DD #
|
---|
52 | ; called by: EXTRACT
|
---|
53 | ;
|
---|
54 | I NAME["CODE" Q 1
|
---|
55 | I NAME["ACTION" Q 1
|
---|
56 | I NAME["LOGIC" Q 1
|
---|
57 | I NAME["DIR(0)" Q 1
|
---|
58 | I NAME["DIR(?)" Q 1
|
---|
59 | I NAME["DIR(??)" Q 1
|
---|
60 | I NAME["DR {DIE}" Q 1
|
---|
61 | I $G(^DD(FILE,FIELD,3))["MUMPS" Q 1 ; 'Help'-Prompt attribute (3)
|
---|
62 | I $G(^DD(FILE,FIELD,21,1,0))["MUMPS" Q 1 ; Description attribute (21)
|
---|
63 | Q 0
|
---|
64 | ;
|
---|
65 | ;
|
---|
66 | RESULTS(EXIT,COUNT,FOUND,STEP,SENTITY,SVERB,FENTITY) ;
|
---|
67 | ;
|
---|
68 | ; input:
|
---|
69 | ; EXIT = 1 if search was interrupted
|
---|
70 | ; COUNT = # of routines searched
|
---|
71 | ; FOUND = # of instances found
|
---|
72 | ; STEP = verb-name of step ended (e.g., "Search")
|
---|
73 | ; SENTITY = kind of entity being searched/checked (e.g., "routine")
|
---|
74 | ; SVERB = action being performed (e.g., "searched")
|
---|
75 | ; FENTITY = kind of entity being found (e.g., "instance")
|
---|
76 | ; called by: ^ARJTDDK*
|
---|
77 | ;
|
---|
78 | S SVERB=$G(SVERB,"searched")
|
---|
79 | S FENTITY=$G(FENTITY,"instance")
|
---|
80 | W !!,STEP," ",$S(EXIT:"interrupted",1:"completed"),"."
|
---|
81 | W !,$FN(COUNT,",")," ",SENTITY,$E("s",COUNT'=1)," ",SVERB,"."
|
---|
82 | W !,$FN(FOUND,",")," ",FENTITY,$E("s",FOUND'=1)," found."
|
---|
83 | QUIT ; end of RESULTS
|
---|
84 | ;
|
---|
85 | ;
|
---|
86 | RTEST ; test RSE^ARJTDDKR with alternation in pattern match
|
---|
87 | ;
|
---|
88 | ; calls:
|
---|
89 | ; ^%ZOSF("PRIINQ") - return current process priority
|
---|
90 | ; RSE - search selected routines
|
---|
91 | ; ^%ZOSF("PRIORITY") - lower & raise priority
|
---|
92 | ;
|
---|
93 | W !!,"Testing RSE^ARJTDDKR with alternation in pattern match."
|
---|
94 | W !!,"Lowering priority for duration of search.",!
|
---|
95 | N ARJTPRI,Y X ^%ZOSF("PRIINQ") S ARJTPRI=Y
|
---|
96 | N X S X=1 X ^%ZOSF("PRIORITY")
|
---|
97 | K ^XTMP("DSMROUTINES")
|
---|
98 | D RSE^ARJTDDKR("?","?(")
|
---|
99 | S X=ARJTPRI X ^%ZOSF("PRIORITY")
|
---|
100 | W !!,"Priority restored."
|
---|
101 | QUIT ; end of TEST
|
---|
102 | ;
|
---|
103 | ;
|
---|
104 | RDSM ; test RSE^ARJTDDKR with DSM-specific code
|
---|
105 | ;
|
---|
106 | ; calls:
|
---|
107 | ; ^%ZOSF("PRIINQ") - return current process priority
|
---|
108 | ; RSE - search selected routines
|
---|
109 | ; ^%ZOSF("PRIORITY") - lower & raise priority
|
---|
110 | ;
|
---|
111 | W !!,"Testing RSE^ARJTDDKR with DSM-specific code."
|
---|
112 | I '$D(TOAD) N ARJTPRI D
|
---|
113 | . W !!,"Lowering priority for duration of search.",!
|
---|
114 | . N Y X ^%ZOSF("PRIINQ") S ARJTPRI=Y
|
---|
115 | . N X S X=1 X ^%ZOSF("PRIORITY")
|
---|
116 | K ^XTMP("DSMROUTINES")
|
---|
117 | N CONTAINS
|
---|
118 | S CONTAINS("Z")=""
|
---|
119 | S CONTAINS("&")=""
|
---|
120 | S CONTAINS("^%")=""
|
---|
121 | S CONTAINS("(%")=""
|
---|
122 | S CONTAINS("U ")=""
|
---|
123 | S CONTAINS("U:")=""
|
---|
124 | S CONTAINS("O ")=""
|
---|
125 | S CONTAINS("O:")=""
|
---|
126 | S CONTAINS("C ")=""
|
---|
127 | S CONTAINS("C:")=""
|
---|
128 | D RSE^ARJTDDKR(.CONTAINS,"DSM")
|
---|
129 | I '$D(TOAD) D
|
---|
130 | . S X=ARJTPRI X ^%ZOSF("PRIORITY")
|
---|
131 | . W !!,"Priority restored."
|
---|
132 | QUIT ; end of DSM
|
---|
133 | ;
|
---|