|
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 duas EMPRESAS, cada empresa com 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.
05 WS-DEPTO-03 PIC 9(002) VALUE ZEROES.
01 TABELA-DEPARTAMENTO.
05 EMPRESA OCCURS 2 TIMES.
10 NOME-EMPRESA PIC X(20).
10 DEPARTAMENTO OCCURS 3 TIMES.
15 NOME-DEPTO PIC X(20).
15 NOME-EMPRE PIC X(20) OCCURS 2 TIMES.
PROCEDURE DIVISION.
MOVE "Empresa 01 " TO NOME-EMPRESA (1)
MOVE "Empresa 02 " TO NOME-EMPRESA (2)
MOVE "Faturamento " TO NOME-DEPTO (1 1)
MOVE "Qualidade " TO NOME-DEPTO (1 2)
MOVE "Marketing " TO NOME-DEPTO (1 3)
MOVE "Contabilidade" TO NOME-DEPTO (2 1)
MOVE "Loja " TO NOME-DEPTO (2 2)
MOVE "Esportes " TO NOME-DEPTO (2 3)
MOVE "Carlos " TO NOME-EMPRE (1 1 1)
MOVE "Alberto " TO NOME-EMPRE (1 1 2)
MOVE "Augusto " TO NOME-EMPRE (1 2 1)
MOVE "Eduardo " TO NOME-EMPRE (1 2 2)
MOVE "Lourdes " TO NOME-EMPRE (1 3 1)
MOVE "Maria " TO NOME-EMPRE (1 3 2)
MOVE "João " TO NOME-EMPRE (2 1 1)
MOVE "Ricardo " TO NOME-EMPRE (2 1 2)
MOVE "Junior " TO NOME-EMPRE (2 2 1)
MOVE "Anselmo " TO NOME-EMPRE (2 2 2)
MOVE "Rita " TO NOME-EMPRE (2 3 1)
MOVE "Ivana " TO NOME-EMPRE (2 3 2)
DISPLAY "--------------------------------------------------------------------------------------------"
DISPLAY "Usando PERFORM VARYING UNTIL encadeados"
DISPLAY "--------------------------------------------------------------------------------------------"
PERFORM VARYING WS-DEPTO-01 FROM 1 BY 1
UNTIL WS-DEPTO-01 > 2
PERFORM VARYING WS-DEPTO-02 FROM 1 BY 1
UNTIL WS-DEPTO-02 > 3
PERFORM VARYING WS-DEPTO-03 FROM 1 BY 1
UNTIL WS-DEPTO-03 > 2
PERFORM PARAGRAFO-1 THRU PARAGRAFO-1-SAI
END-PERFORM
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 > 2
AFTER WS-DEPTO-02 FROM 1 BY 1
UNTIL WS-DEPTO-02 > 3
AFTER WS-DEPTO-03 FROM 1 BY 1
UNTIL WS-DEPTO-03 > 2.
STOP RUN.
PARAGRAFO-1.
DISPLAY " EMPRESA : " NOME-EMPRESA (WS-DEPTO-01)
" DEPARTAMENTO: " NOME-DEPTO (WS-DEPTO-01
WS-DEPTO-02)
" EMPREGADO : " NOME-EMPRE (WS-DEPTO-01
WS-DEPTO-02
WS-DEPTO-03).
PARAGRAFO-1-SAI.
EXIT.
--------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL encadeados
--------------------------------------------------------------------------------------------
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento EMPREGADO : Carlos
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento EMPREGADO : Alberto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade EMPREGADO : Augusto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade EMPREGADO : Eduardo
EMPRESA : Empresa 01 DEPARTAMENTO: Marketing EMPREGADO : Lourdes
EMPRESA : Empresa 01 DEPARTAMENTO: Marketing EMPREGADO : Maria
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade EMPREGADO : João
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade EMPREGADO : Ricardo
EMPRESA : Empresa 02 DEPARTAMENTO: Loja EMPREGADO : Junior
EMPRESA : Empresa 02 DEPARTAMENTO: Loja EMPREGADO : Anselmo
EMPRESA : Empresa 02 DEPARTAMENTO: Esportes EMPREGADO : Rita
EMPRESA : Empresa 02 DEPARTAMENTO: Esportes EMPREGADO : Ivana
--------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL AFTER
--------------------------------------------------------------------------------------------
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento EMPREGADO : Carlos
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento EMPREGADO : Alberto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade EMPREGADO : Augusto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade EMPREGADO : Eduardo
EMPRESA : Empresa 01 DEPARTAMENTO: Marketing EMPREGADO : Lourdes
EMPRESA : Empresa 01 DEPARTAMENTO: Marketing EMPREGADO : Maria
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade EMPREGADO : João
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade EMPREGADO : Ricardo
EMPRESA : Empresa 02 DEPARTAMENTO: Loja EMPREGADO : Junior
EMPRESA : Empresa 02 DEPARTAMENTO: Loja EMPREGADO : Anselmo
EMPRESA : Empresa 02 DEPARTAMENTO: Esportes EMPREGADO : Rita
EMPRESA : Empresa 02 DEPARTAMENTO: Esportes EMPREGADO : Ivana
|