Identificando CHAR dentro de DEC

Discussão em 'Progress 4GL' iniciado por DFResmer, Junho 18, 2012.

  1. DFResmer

    DFResmer Membro Participativo

    Bom dia Pessoal,
    Não me lembro como fazer para identificar em um determinado campo se existe caracteres, exemplo:
    Preciso importar alguns campo de um txt, mas quando em um determinado local se tiver caracteres, eu quero importar o valor 0 Zero.
    A função no-error não posso usar, ele acabam não importando a linha toda.


    Att,

    Diogo
  2. eriutoncharles

    eriutoncharles Membro Participativo

    Bom dia Meu caro.


    Digamos que você esteja importando dessa forma:
    Código:
    DEF TEMP-TABLE tt-Teste
        FIELD Teste AS CHAR.
    
    input from C:\a.txt.
        Repeat.  
        create tt-Teste. 
        import delimiter ";" tt-Teste no-error. 
    end.
    input close.
    
    Nessa tt você teria os dados vindo do arquivo.... então é só tratar... faz uma procedure:
    Código:
    PROCEDURE Descobre_Caracter.
    DEF INPUT PARAMETER vCaracter AS CHAR.
    DEF OUTPUT PARAMETER vNumero AS LOG.
    
      if asc(vCaracter) > 47 and
             asc(vCaracter) < 58 THEN ASSIGN vNumero = YES.
      ELSE ASSIGN vNumero = NO.
    
    
    END PROCEDURE.
    
    Ai no seu Código .. chama a procedure passando o parâmetro do campo da tt:
    Código:
    FOR EACH tt-Teste.
        
        DO i = 1 TO LENGTH(tt-Teste.Teste).
           RUN Descobre_Caracter(INPUT SUBSTRING(tt-Teste.Teste,i,1),
                                 OUTPUT vNumero).
    
           disp vNumero SUBSTRING(tt-Teste.Teste,i,1).
               PAUSE.
         /* Aqui você vai ver se o caracter é número ou não... ai vc trata... 
          if vNumero = NO THEN ASSIGN SUBSTRING(tt-Teste.Teste,i,1) = "0". */
        END.
      END.
    
    Deu pra sacar?

    Um Abraço!
    Eriuton Charles
  3. DFResmer

    DFResmer Membro Participativo

    blz, entendi! fiz um teste aqui e deu certo, obrigado!

Compartilhe esta Página