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