Busca cadena de texto en programa

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
Publicado en: BBj, Tutoriales

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>