PUT

Copiar os dados de variável ou tabela para um arquivo texto. Não causa alteração na variável ou tabela. Usar PUT SCREEN para enviar os dados para a tela.


/* exemplo 1 - enviar uma string para o arquivo teste.txt */
OUTPUT TO teste.txt.

PUT 'uma string'.

OUTPUT CLOSE.

/* exemplo 2 - enviar os dados da tabela customer para o arquivo cust.dat */
OUTPUT TO cust.dat.

FOR EACH customer:
    PUT customer.custnum
        customer.name.
END.

/* exemplo 3 - enviar um string para a tela */
PUT SCREEN 'teste de mensagem na tela'.

PARAMETER

Definir parâmetros de entrada, saída ou entrada-saída em programas e procedures. Abreviar: PARAM.


PROCEDURE testarParam:
    DEF INPUT PARAMETER p1 AS INT NO-UNDO.
    DEF OUTPUT PARAMETER p2 AS CHAR NO-UNDO.
    DEF INPUT-OUTPUT PARAMETER p3 AS INT NO-UNDO.

    MESSAGE 'durante' p1.
    PAUSE.

    ASSIGN p2 = 'novo p2'
           p3 = 999.
END PROCEDURE.

DEF VAR param2 AS CHAR NO-UNDO.
DEF VAR param3 AS INT NO-UNDO.

ASSIGN param2 = 'oi'
       param3 = 111.

MESSAGE 'antes' param2 param3.
PAUSE.

RUN testarParam(100, OUTPUT param2, INPUT-OUTPUT param3).

MESSAGE 'depois' param2 param3.
PAUSE.

NO-ERROR

Interceptar o erro em FIND, ASSIGN e RUN.


/* exemplo 1 - interceptar erro caso não ache o registro com código 10000 */
FIND FIRST customer WHERE
     customer.custnum = 10000 NO-ERROR.

/* exemplo 2 - interceptar erro ao tentar transformar um string com letra num integer */
DEF VAR c1 AS INT NO-UNDO.
ASSIGN c1 = INT('10a') NO-ERROR.

/* exemplo 3 - interceptar erro ao utilizar uma procedure ou programa com tipo de dados incorreto */
PROCEDURE proc1:
    DEF INPUT PARAM p AS INT NO-UNDO.
END PROCEDURE.

RUN proc1('x') NO-ERROR.

/* exemplo 4 - interceptar erro ao utilizar uma procedure ou programa com quantidade de dados incorreto */
PROCEDURE proc1:
    DEF INPUT PARAM p AS INT NO-UNDO.
END PROCEDURE.

RUN proc1() NO-ERROR.

/* exemplo 5 - interceptar erro numa lista que não possui a entrada */
DEF VAR item AS CHAR.
item = ENTRY(10, "a,b,c") NO-ERROR.

INPUT FROM

Abrir arquivo e prepara para receber os dados deste arquivo, e não da tela. Usado para importar dados para uma tabela ou variável. Sempre utilizado com o comando IMPORT.


/* exemplo 1 - menor código possível */
INPUT FROM dados.dat.

/* exemplo 2 - abrir um arquivo (três colunas por linha) e importar seus dados */
DEF VAR d1 AS CHAR.
DEF VAR d2 AS INT.
DEF VAR d3 AS DATE.

INPUT FROM arquivo.txt.

REPEAT: /* repete automaticamente até acabarem as linhas do arquivo */
    IMPORT d1 d2 d3. /* importando as três colunas */
    /* fazer algo com as três variáveis lidas (exemplo: salvar numa tabela) */
END.

/* exemplo 3 - importando os dados para a tabela customer */
INPUT FROM d1.txt.

REPEAT:
    CREATE customer.
    IMPORT customer.
END.

OUTPUT TO

Abrir um arquivo e direciona a saída de dados para este arquivo, e não para a tela. Utilizado para exportar dados de tabela ou variáveis. Sempre utilizado com o comando EXPORT. Este comando não altera uma tabela ou variável, apenas copia os dados para o arquivo de saída.


/* exemplo 1 - menor código possível */
OUTPUT TO arquivo.txt.

/* exemplo 2 - exportar todos os dados da tabela customer */
OUTPUT TO dados.dat.

FOR EACH customer NO-LOCK:
    EXPORT customer.
END.

/* exemplo 3 - exportar dado de uma variável */
DEF VAR v1 AS CHAR.

OUTPUT TO dados.txt.
EXPORT v1.

PUT UNFORMATTED

Copiar os dados de variáveis ou tabelas para um arquivo texto, mas sem formatar estas variáveis.


OUTPUT TO teste.txt.

PUT UNFORMATTED 'teste de uma mensagem sem formato'.

OUTPUT CLOSE.