Comandos Parte 6

19/05/2019


HANDLE

Tipo de variável para manipular objetos

DEF VAR h1 AS HANDLE.

VALID-HANDLE

Retornar se uma variável do tipo handle está referenciada a algum objeto.

DEF VAR h1 AS HANDLE.

MESSAGE 'Status da handle' VALID-HANDLE(h1).

PERSISTENT-SET

Referenciar uma variável handle a um programa

DEF VAR h1 AS HANDLE.

RUN prog1.p PERSISTENT SET h1.

RUN IN

Utilizar uma procedure de um programa refenciado numa variável handle.

DEF VAR h1 AS HANDLE.

RUN prog1.p PERSISTENT SET h1.

RUN testeProc IN h1.

DYNAMIC-FUNCTION

Utilizar uma function de um programa referenciado numa variável handle.

DEF VAR h1 AS HANDLE.

RUN prog1.p PERSISTENT SET h1.

MESSAGE DYNAMIC-FUNCTION('testeFunc' IN h1).

DELETE OBJECT

Retirar a referência entre variável handle e programa.

/* exemplo 1 - menor código possível */
DEF VAR h1 AS HANDLE.

RUN prog1.p PERSISTENT SET h1.

DELETE OBJECT h1.

/* exemplo 2 - código completo */
DEF VAR param1 AS CHAR.
DEF VAR h1 AS HANDLE.

IF NOT VALID-HANDLE(h1)
THEN RUN prog1.p PERSISTENT SET h1.

RUN proc1 IN h1 (param1).

MESSAGE DYNAMIC-FUNCTION('func1' IN h1, param1).

IF VALID-HANDLE(h1)
THEN DELETE OBJECT h1.

WHEN

Executar ação quando uma condição é satisfeita. Utilizar no DISP e no ASSIGN.

/* exemplo 1 - utilizar com DISP */
DISP 'frase' WHEN TRUE.
DISP 'outra frase' WHEN 1 = 2.

/* exemplo 2 - utilizar com ASSIGN */
DEF VAR vx AS CHAR.

ASSIGN cx =  'teste' WHEN 1 = 2.

DISP cx.

AUTO-RETURN

Aplica enter automaticamente ao preencher variável.

DEF VAR wi AS INT.

UPDATE wi AUTO-RETURN.

DOWN FRAME

Definir frame para mostrar dados em várias linhas. Utilizar o comando DOWN para gerar um nova linha.

/* exemplo 1 - utilizar DOWN FRAME com variável */
DEF VAR v AS CHAR.

DISP 'linha' @ v WITH DOWN FRAME a.
DOWN WITH FRAME a.

DISP 'outra' @ v WITH DOWN FRAME a.
DOWN WITH FRAME a.

DISP 'linha' @ v WITH DOWN FRAME a.
DOWN WITH FRAME a.

DISP 'outra' @ v WITH DOWN FRAME a.
DOWN WITH FRAME a.

/* exemplo 2 - utilizar DOWN FRAME com tabela*/
FOR EACH customer:
    DISP customer.name WITH DOWN FRAME b.
    DOWN WITH FRAME b.
END.

DO TO

Definir bloco de repetição com início e fim determinado.

DEF VAR k AS INT.

DO k = 1 TO 10:
    MESSAGE k.
END.

DO TO BY

Definir bloco de repetição com início, fim e intervalo de atribuição.

DEF VAR i AS INT NO-UNDO.

DO i = 1 TO 10 BY 2:
    MESSAGE i.
END.

EQ

Operadores lógicos. Também NE, GT, LT, GE, LE.

IF 1 EQ 1 THEN MESSAGE '1 igual a 1'.

IF 1 NE 2 THEN MESSAGE '1 diferente de 2'.

IF 1 GT 0 THEN MESSAGE '1 maior que 0'.

IF 1 LT 2 THEN MESSAGE '1 menor que 2'.

IF 1 GE 1 THEN MESSAGE '1 maior ou igual a 1'.

IF 1 LE 1 THEN MESSAGE '1 menor ou igual a 1'.

=

Operadores lógicos . Também <>, >, <, >=, <=

IF 1 = 1 THEN MESSAGE '1 igual a 1'.

IF 1 <> 2 THEN MESSAGE '1 diferente de 2'.

IF 1 > 0 THEN MESSAGE '1 maior que 0'.

IF 1 < 2 THEN MESSAGE '1 menor que 2'.

IF 1 >= 1 THEN MESSAGE '1 maior ou igual a 1'.

IF 1 <= 1 THEN MESSAGE '1 menor ou igual a 1'.