BUSCA - Busca cadena de texto dentro de un programa cargado en el espacio de trabajo

Esta rutina permite buscar una cadena de texto dentro de un programa. Funciona exclusivamente para BBj y permite hacer búsquedas en programas con y sin números de líneas. A pesar de que en BBj existe el comando en modo consola SCAN, que se señala con el símbolo backslash "\" más el texto que se busca, esta rutina incluya la mejora de resaltar el texto que se está buscando (BASIS planea agregar esta característica en futuras liberaciones; a la fecha - marzo de 2010 - sigue pendiente):

rem "[busca] Busca cadena en programa

rem "MundoBBx

rem

rem "Obtiene programa

rem "----------------

pgm!=BBjAPI().getProgramInfo(pgm(-1))

rem

rem "Obtiene listado

rem "---------------

lista!=PGM!.getListingVector()

rem

rem "Pide valor a buscar

rem "-------------------

input 'cs',@(0,1),fill(80,"-"),@(0,0),'sb',"Ingrese busqueda: ",'sf',busca$

print @(0,2),'CE',

rem

rem "Proceso de busqueda

rem "-------------------

fila=2

for z=0 to lista!.size()-1

rem

rem "obtiene linea

rem "-------------

line1$=lista!.getItem(z);line1$=cvs(line1$,1)

rem

rem "calcula lineas que usa al listar

rem "--------------------------------

if len(line1$) then

usa=int(len(line1$)/80)+1

else

continue

endif

rem

line2$=line1$

cadena$=$$

sep$=$$

hay=0

rem

rem "busca cadena

rem "------------

while pos(busca$=line1$)

j=pos(busca$=line1$)

cadena$=cadena$+line1$(1,j-1)

cadena$=cadena$+'BR'+line1$(j,len(busca$))+'ER'

line1$=line1$(j+len(busca$))

hay=hay+1

wend

if len(line1$) then

cadena$=cadena$+line1$

endif

rem

rem "muestra resultado si existe

rem "---------------------------

if hay then

print cadena$

fila=fila+usa

endif

rem

rem "cuando se llena ventana

rem "-----------------------

if fila>20 then

print @(0,fila),fill(80,"-")

input "Presiona cualquier tecla para continuar ",*,

print @(0,2),'ce',

fila=2

endif

next z

stop