Trabalhando com arquivos
Existem diversas maneiras de trabalhar com arquivos utilizando Progress 4GL, abaixo vou explicar as mais utilizadas.
A mais comum de ser encontrada é o método de definir uma stream, definir o arquivo de saída e depois utilizar o comando PUT para gerar os dados.
Veja exemplo:
DEF STREAM clientes.
OUTPUT STREAM clientes TO VALUE(‘C:\lista-clientes.txt’).
FOR EACH emitente NO-LOCK:
PUT STREAM clientes emitente.nome-emit emitente.cgc SKIP.
END.
OUTPUT STREAM clientes CLOSE.
Na segunda maneira, como vocês podem perceber não há a necessidade de definição da stream tornando a solução mais simples, a diferença é que nesse caso qualquer display ou comando de I/O vai ser gerado no arquivo definido.
OUTPUT TO c:\clientes.txt.
FOR EACH emitente NO-LOCK:
DISP emitente.nome-emit emitente.cgc SKIP.
END.
OUTPUT CLOSE.
A vantagem dessa situação acima é que podemos jogar a informação não só pra arquivo, mas pra variadas saídas como nos exemplos abaixo.
OUTPUT TO PRINTER.
DISPLAY “Jogar para a impressora padrão”.
OUTPUT CLOSE.
OUTPUT TO LPT1.
DISPLAY “Jogar na porta LPT1”.
OUTPUT CLOSE.
Agora a ultima opção e na minha opinião a mais útil:
Nessa opção é gerado um arquivo CSV que pode ser manipulado no Excel, caso você precise gerar arquivos no Excel veja mais detalhes em nosso outro artigo.
OUTPUT TO c:\clientes.csv.
FOR EACH emitente NO-LOCK:
EXPORT DELIMITER “;” emitente.nome-emit emitente.cgc SKIP.
END.
OUTPUT CLOSE.