Procurar por um conjunto de caracteres

Discussão em 'Progress 4GL' iniciado por eder.luca2012, Julho 25, 2013.

  1. eder.luca2012

    eder.luca2012 Membro Participativo

    Pessoal estou com uma dúvida eu estou finalizando um programa que faz importação do arquivo mfd de uma impressora fiscal para correção de erros de venda, porém não consegui tratar a seguinte situação:
    I barras descricao------------------------- qtde valor
    2 7897316801154 ATROPINA - 1 SOL OFT COL FR 1UN F1 7,44G

    Todos os meus campos são separador por espaço porém tem um que banguça tudo que é a descricao então eu consegui pegar o campo I(indice) consegui pegar o valor do campo codigo de barras porém preciso pegar o campo valor que sempre é terminado com G ou seja é o valor seguido da letra G e preciso pegar a quantidade que sempre é seguido de um valor inteiro mais UN alguem tem alguma ideia de como pegar esses dois valores ?
  2. eder.luca2012

    eder.luca2012 Membro Participativo

    Pessoal consegui resolver segue solução abaixo:

    Código:
    FUNCTION retornaquantidade RETURN CHARACTER (linha AS CHAR):
        DEF VAR j AS INTEGER.
        DEF VAR i AS INTEGER.
        DEF VAR lg-achou AS LOGICAL.
        DEF VAR aux01 AS CHARACTER FORMAT 'X(02)'.
        DEF VAR tratamento AS CHARACTER FORMAT 'X(01)' EXTENT 58.
        
        ASSIGN lg-achou = NO.
        ASSIGN aux01 = ''.
        ASSIGN tratamento = ''.
        ASSIGN i = 1.
    
        REPEAT:
           IF (i = 58) THEN DO:
              LEAVE.
           END.
    
           ASSIGN tratamento[i] = SUBSTRING(linha,i,1).
    
           ASSIGN i = i + 1.                           
        END.
    
        ASSIGN i = 58.
    
        REPEAT:
            IF (i = 0) THEN DO:
               LEAVE.
            END.
    
            IF (tratamento[i] = 'N') AND (lg-achou = NO) THEN  DO:
                 ASSIGN j = i - 3.
                 ASSIGN aux01 = SUBSTRING(linha,j,2).
                 ASSIGN lg-achou = YES.
            END.
    
            ASSIGN i = i - 1.
        END.
        
        ASSIGN linha = REPLACE(aux01,' ','').
    
        RETURN linha.
    END FUNCTION.
    
    

Compartilhe esta Página