Script de busca em pasta de fontes(.p e .w) se tem palavra.

Discussão em 'Progress 4GL' iniciado por primont, Agosto 13, 2009.

  1. af.dums

    af.dums Membro Ativo

    Apesar de já ter achado sua solução, caso alguém precise, eu uso esta rotina quando preciso descobrir todos os programas que usam determinada tabela ou possuem determinada include ou palavra, quando preciso recompilar. Trabalhando um pouco nela, pode-se gerar o script de compilação pronto por ela.

    Abrass....

    Código:
    DEF VAR h-acomp AS HANDLE NO-UNDO.
    
    DEF VAR c-diretorio AS CHAR INIT "c:\fontes" NO-UNDO. 
    
    DEF TEMP-TABLE tt-texto NO-UNDO 
    FIELD w-texto AS CHAR FORMAT "X(80)". 
    
    DEF BUFFER b-texto FOR tt-texto. 
    
    RUN utp/ut-acomp.p PERSISTENT SET h-acomp.
    
    RUN pi-inicializar IN h-acomp(INPUT "Lendo Diret¢rios").
    
    RUN pi-acompanhar IN h-acomp(INPUT "Varrendo diret¢rio").
    
    DOS SILENT DIR /s /b VALUE(c-diretorio) > "c:\temp\arq.txt". /*copia arquivos e subdiretorio para o arquivo c:\temp\arq.txt*/
    
    INPUT FROM c:\temp\arq.txt NO-ECHO.
    REPEAT: 
        RUN pi-acompanhar IN h-acomp(INPUT "Importando Linhas").
        CREATE tt-texto. /*copia os programas do arquivo para a temp-table*/
        IMPORT UNFORMATTED tt-texto. 
    END. 
    INPUT CLOSE.
    
    OUTPUT TO c:\temp\programas.txt.
    FOR EACH tt-texto NO-LOCK:
        RUN pi-acompanhar IN h-acomp(INPUT tt-texto.w-texto).
        IF INDEX(tt-texto.w-texto,".w") = 0 AND
           INDEX(tt-texto.w-texto,".i") = 0 AND 
           INDEX(tt-texto.w-texto,".p") = 0 THEN
            NEXT.
    
        RUN pi-buscar-arquivo(INPUT tt-texto.w-texto,
                              INPUT "et0718brp.i").
    
        IF RETURN-VALUE = "NOK":U THEN
            NEXT.
    
        DISP tt-texto.w-texto WITH STREAM-IO SCROLLABLE. 
    END.
    
    RUN pi-finalizar IN h-acomp.
    
    PROCEDURE pi-buscar-arquivo:
        DEF INPUT PARAM p-arquivo AS CHAR    NO-UNDO.
        DEF INPUT PARAM p-buscar  AS CHAR    NO-UNDO.
    
        DEF VAR clinha AS CHAR NO-UNDO.
    
        ASSIGN FILE-INFO:FILE-NAME = p-arquivo.
    
        IF FILE-INFO:FULL-PATHNAME = ? THEN
            RETURN "".
    
        INPUT FROM VALUE( p-arquivo ).
        REPEAT:
            IMPORT UNFORMATTED clinha.
    
            IF INDEX(clinha,p-buscar) <> 0 THEN DO:
                INPUT CLOSE.
                RETURN "OK":U.
            END.
    
        END.
        INPUT CLOSE.
        RETURN "NOK":U.
    END PROCEDURE.
    
    
    jeffyssantos curtiu isso.

Compartilhe esta Página