Comandos parte 8

02/06/2019


TRUNCATE

Trunca as casas decimais de um número.

MESSAGE TRUNCATE(8.568,0).

MESSAGE TRUNCATE(8.568,2).

ROUND

Arredondar as casas decimais um número.

MESSAGE ROUND(7.58,1).

MESSAGE ROUND(7.58,0).

APPLY

Aplicar a última tecla lida. Usar com KEYFUNCTION(LASTKEY) no caso de UPDATE ou READKEY.

MESSAGE 'Digite uma tecla'.

READKEY.

APPLY KEYFUNCTION(LASTKEY).

FRAME-FIELD

Retorna o nome do campo ativo do frame

UPDATE w1 AS CHAR. /* definir e fazer update na variável com o mesmo comando */

MESSAGE FRAME-FIELD. /* mostra o nome do campo com foco no frame */

EDITING

Editar digitação de campos com UPDATE.

/* exemplo 1 - menor código possível */
UPDATE teste AS CHAR
EDITING:
    READKEY.
    APPLY KEYFUNCTION(LASTKEY).
END.

/* exemplo 2 - editing completo */
DEF VAR campo AS CHAR.

UPDATE campo
EDITING:
    READKEY.

    IF FRAME-FIELD = 'campo'
    THEN DO:
        IF KEYFUNCTION(LASTKEY) = 'return'
        THEN DO:
            ASSIGN campo.
            MESSAGE 'Digitou' campo
                VIEW-AS ALERT-BOX INFO BUTTONS OK.
            APPLY KEYFUNCTION(LASTKEY).
        END.
        ELSE APPLY KEYFUNCTION(LASTKEY).
    END.
    ELSE APPLY KEYFUNCTION(LASTKEY).
END.

ALERT-BOX

Mensagem informativa. Utilizar com MESSAGE.

MESSAGE 'Teste mensagem'
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

QUESTION

Mensagem informativa, mostra traz opções para escolha: sim/não/cancela e salva numa variável lógica.

MESSAGE 'Escolha uma opção'
    VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO-CANCEL
    TITLE 'Selecionar' UPDATE variavel_escolha AS LOG.

QUERY

Definir uma fonte de dados com tabelas e campos. Usar com os comandos: DEFINE, OPEN, GET FIRST, GET NEXT.

DEFINE QUERY q1 FOR customer.

OPEN QUERY q1 FOR EACH customer NO-LOCK.

GET FIRST q1.

DO WHILE AVAIL customer:
    MESSAGE customer.custNum customer.name.
    GET NEXT q1.
END.

ENABLE

Solicitar leitura de uma variável ou tabela.

DEF VAR teste AS CHAR.

ENABLE teste.

ON RETURN OF 'teste':
    ASSIGN teste.
END.

WAIT-FOR 'f4' OF CURRENT-WINDOW OR
         'return' OF CURRENT-WINDOW.

MESSAGE KEYFUNCTION(LASTKEY) teste.

BROWSE

Definir uma estrutura para apresentar query e permitir navegação. Cursor-up/down, Page-up/down.

DEF QUERY q1 FOR customer.

DEF BROWSE b1 QUERY q1
    DISP customer.CustNum customer.Name 
    WITH 12 DOWN SEPARATORS CENTERED DCOLOR 05 NO-BOX OVERLAY.

DEF FRAME t1
    b1 HELP "Teclar    page-up/down    cursor-up/down"
    WITH TITLE " Customers " CENTERED OVERLAY.

OPEN QUERY q1 FOR EACH customer NO-LOCK.

ENABLE ALL WITH FRAME t1.

APPLY 'ENTRY' TO b1 IN FRAME t1.

WAIT-FOR 'f4' OF FRAME t1.

VIEW-FRAME

Mostrar um frame.

FORM 'teste' WITH FRAME t1.

VIEW FRAME t1.

ACCUMULATE

Acumular valores de tabelas. Abreviar: ACCUM.

FOR EACH invoice, customer OF Invoice:
    ACCUM invoice.amount (TOTAL).
    ACCUM invoice.amount (COUNT).

    MESSAGE Customer.Name
            Invoice.amount
            ACCUM TOTAL invoice.amount
            ACCUM COUNT invoice.amount.
END.

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'.

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.