|
Um bloco de uma instrução ou um parágrafo/seção será executado em PERFORM VARYING até que a condição se torne verdadeira na frase UNTIL.
No exemplo abaixo são três DEPARTAMENTOS e cada departamento com dois EMPREGADOS.
IDENTIFICATION DIVISION.
PROGRAM-ID. PERFORM.
AUTHOR. DORNELLES CARLOS ALBERTO.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-AUXILIARES.
05 WS-DEPTO-01 PIC 9(002) VALUE ZEROES.
05 WS-DEPTO-02 PIC 9(002) VALUE ZEROES.
01 TABELA-DEPARTAMENTO.
05 DEPARTAMENTO OCCURS 3 TIMES.
10 NOME-DEPTO PIC X(20).
10 NOME-EMPRE PIC X(20) OCCURS 2 TIMES.
PROCEDURE DIVISION.
MOVE "Faturamento" TO NOME-DEPTO (1)
MOVE "Qualidade" TO NOME-DEPTO (2)
MOVE "Marketing" TO NOME-DEPTO (3)
MOVE "Carlos" TO NOME-EMPRE (1 1)
MOVE "Alberto" TO NOME-EMPRE (1 2)
MOVE "Augusto" TO NOME-EMPRE (2 1)
MOVE "Eduardo" TO NOME-EMPRE (2 2)
MOVE "Lourdes" TO NOME-EMPRE (3 1)
MOVE "Maria" TO NOME-EMPRE (3 2)
DISPLAY "--------------------------------------------------------------------------------------------"
DISPLAY "Usando PERFORM VARYING UNTIL encadeados"
DISPLAY "--------------------------------------------------------------------------------------------"
PERFORM VARYING WS-DEPTO-01 FROM 1 BY 1
UNTIL WS-DEPTO-01 > 3
PERFORM VARYING WS-DEPTO-02 FROM 1 BY 1
UNTIL WS-DEPTO-02 > 2
PERFORM PARAGRAFO-1 THRU PARAGRAFO-1-SAI
END-PERFORM
END-PERFORM
DISPLAY "--------------------------------------------------------------------------------------------"
DISPLAY "Usando PERFORM VARYING UNTIL AFTER"
DISPLAY "--------------------------------------------------------------------------------------------"
PERFORM PARAGRAFO-1 THRU PARAGRAFO-1-SAI
VARYING WS-DEPTO-01 FROM 1 BY 1
UNTIL WS-DEPTO-01 > 3
AFTER WS-DEPTO-02 FROM 1 BY 1
UNTIL WS-DEPTO-02 > 2.
STOP RUN.
PARAGRAFO-1.
DISPLAY " DEPARTAMENTO: " NOME-DEPTO (WS-DEPTO-01)
" EMPREGADO : " NOME-EMPRE (WS-DEPTO-01 WS-DEPTO-02).
PARAGRAFO-1-SAI.
EXIT.
--------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL encadeados
--------------------------------------------------------------------------------------------
Departamento: Faturamento Empregado : Carlos
Departamento: Faturamento Empregado : Alberto
Departamento: Qualidade Empregado : Augusto
Departamento: Qualidade Empregado : Eduardo
Departamento: Marketing Empregado : Lourdes
Departamento: Marketing Empregado : Maria
--------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL AFTER
--------------------------------------------------------------------------------------------
Departamento: Faturamento Empregado : Carlos
Departamento: Faturamento Empregado : Alberto
Departamento: Qualidade Empregado : Augusto
Departamento: Qualidade Empregado : Eduardo
Departamento: Marketing Empregado : Lourdes
Departamento: Marketing Empregado : Maria
|