Index: LSFind/trunk/VWBFPFND.m
===================================================================
--- LSFind/trunk/VWBFPFND.m	(revision 1769)
+++ LSFind/trunk/VWBFPFND.m	(revision 1769)
@@ -0,0 +1,83 @@
+VWBFPFND	;WV/BFP/jBell Portland, OR display labels in routine(s)  May 2016
+	;;**LOCAL**
+	;; This program is free software: you can redistribute it and/or modify
+	;; it under the terms of the GNU General Public License as published by
+	;; the Free Software Foundation, either version 3 of the License, or
+	;; (at your option) any later version.
+	;;
+	;; This program is distributed in the hope that it will be useful,
+	;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+	;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	;; GNU General Public License for more details.
+	;;
+	;; You should have received a copy of the GNU General Public License
+	;; along with this program.  If not, see <http://www.gnu.org/licenses>
+	Q
+	;
+LL      ;Find labels or strings
+	;***********************************************************
+	;*For gtm environs					 *
+	;* After driving myself to Van Gogh level insanity trying  *
+	;* to remember line labels in only MY routines, or using   *
+	;* %RSE for string find and getting some several thousand  *
+	;* routine names AND being in a non-connective locale      *
+	;* (idyll fingers, etc, etc...) I finally did this routine *
+	;* that will only list the targeted item in the routine    *
+	;* set. The immediate benefit: I still have 2 ears.	*
+	;***********************************************************
+	;
+	Q
+	;
+X       W !?5 F I=1:1:10 W !,$T(LL+I^VWBFPFND)
+	W !
+	Q
+	;
+C       R !,"String: ",MATCH:30
+	I '$L(MATCH) Q
+	E  W !?10,"Searching for ",$S(WHAT="L":"LABEL ",1:"STRING "),""""_MATCH_"""" G @WHERE
+	;
+A       G @WHERE
+	;
+ASK     N WHAT,WHERE,ANS,R,X,I,J
+	D X
+A2      K %ZR S ANS=""
+	W !!,"(L)abel only, (S)tring match in routine set?: " R WHAT:30 Q:'$L(WHAT)
+	S WHAT=$E($$UP^XLFSTR(WHAT),1)
+	S WHERE=$S(WHAT="L":"LAB",WHAT="S":"STR",WHAT="H":"HELP",1:"LAB")
+	S ANS="C"
+	S ANS=$E($$UP^XLFSTR(ANS),1)
+A3      D @ANS
+	G A2
+	;
+LAB     D ^%RSEL
+	Q:$D(%ZR)#11  ;No selection array
+	D ^%ZIS U IO
+	S R="" F  S R=$O(%ZR(R)) Q:R=""  D
+	. S MATCH=$S('$L($G(MATCH)):"",1:MATCH)
+	. F I=1:1 S X=$T(@R+I^@R) Q:X=""  S LABEL=$P(X," ") I $L(LABEL) D
+	.. I ANS="A",MATCH="" S %ZR(R,$O(%ZR(R," "),-1)+1)=X Q
+	.. I ANS="C",X[MATCH S %ZR(R,$O(%ZR(R," "),-1)+1)=X Q
+	.. I ANS="E",X=MATCH S %ZR(R,$O(%ZR(R," "),-1)+1)=X Q
+	D WR,^%ZISC
+	Q
+	;
+STR     ;Strings in the code
+	I '$L(MATCH) W !?4,"Dude! No info!" Q
+	D ^%RSEL
+	Q:$D(%ZR)#11  ;No selection array
+	D ^%ZIS U IO
+	S R="" F  S R=$O(%ZR(R)) Q:R=""  D
+	. F I=1:1 S X=$T(@R+I^@R) Q:X=""  D
+	.. F J=1:1:$L(X,MATCH) I X[MATCH S %ZR(R,$O(%ZR(" "),-1)+1)="+"_I_" ->"_X
+	D WR,^%ZISC
+	Q
+	;
+WR      ;Go through %ZR array and only print path/routine name
+	;					    target...
+	W !,"Searching for ",MATCH
+	S R="" F  S R=$O(%ZR(R)) Q:R=""  D:$O(%ZR(R,0))
+	. W !,%ZR(R)_R
+	. S N=0 F  S N=$O(%ZR(R,N)) Q:'+N  W !?4,%ZR(R,N)
+	Q
+	;
+	;fini
