|
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 dois DEPARTAMENTOS, cada departamento com duas SEÇÕES e cada seção 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.
05 WS-DEPTO-04 PIC 9(002) VALUE ZEROES.
01 TABELA-DEPARTAMENTO.
05 EMPRESA OCCURS 2 TIMES.
10 NOME-EMPRESA PIC X(20).
10 DEPARTAMENTO OCCURS 2 TIMES.
15 NOME-DEPTO PIC X(20).
15 SECAO OCCURS 2 TIMES.
20 NOME-SECAO PIC X(20).
20 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 "Contabilidade" TO NOME-DEPTO (2 1)
MOVE "Loja " TO NOME-DEPTO (2 2)
MOVE "AAAAAAAA " TO NOME-SECAO (1 1 1)
MOVE "BBBBBBBB " TO NOME-SECAO (1 1 2)
MOVE "CCCCCCCC " TO NOME-SECAO (1 2 1)
MOVE "DDDDDDDD " TO NOME-SECAO (1 2 2)
MOVE "EEEEEEEE " TO NOME-SECAO (2 1 1)
MOVE "FFFFFFFF " TO NOME-SECAO (2 1 2)
MOVE "GGGGGGGG " TO NOME-SECAO (2 2 1)
MOVE "HHHHHHHH " TO NOME-SECAO (2 2 2)
MOVE "Carlos " TO NOME-EMPRE (1 1 1 1)
MOVE "Alberto " TO NOME-EMPRE (1 1 1 2)
MOVE "José " to NOME-EMPRE (1 1 2 1)
MOVE "Lili " to NOME-EMPRE (1 1 2 2)
MOVE "Augusto " TO NOME-EMPRE (1 2 1 1)
MOVE "Eduardo " TO NOME-EMPRE (1 2 1 2)
MOVE "Manuel " TO NOME-EMPRE (1 2 2 1)
MOVE "Eduardo " TO NOME-EMPRE (1 2 2 2)
MOVE "Carlos 1 " TO NOME-EMPRE (2 1 1 1)
MOVE "Alberto 1 " TO NOME-EMPRE (2 1 1 2)
MOVE "José 1 " to NOME-EMPRE (2 1 2 1)
MOVE "Lili 1 " to NOME-EMPRE (2 1 2 2)
MOVE "Augusto 1 " TO NOME-EMPRE (2 2 1 1)
MOVE "Eduardo 1 " TO NOME-EMPRE (2 2 1 2)
MOVE "Manuel 1 " TO NOME-EMPRE (2 2 2 1)
MOVE "Eduardo 1 " TO NOME-EMPRE (2 2 2 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 > 2
PERFORM VARYING WS-DEPTO-03 FROM 1 BY 1
UNTIL WS-DEPTO-03 > 2
PERFORM VARYING WS-DEPTO-04 FROM 1 BY 1
UNTIL WS-DEPTO-04 > 2
PERFORM PARAGRAFO-1 THRU PARAGRAFO-1-SAI
END-PERFORM
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 > 2
AFTER WS-DEPTO-03 FROM 1 BY 1
UNTIL WS-DEPTO-03 > 2
AFTER WS-DEPTO-04 FROM 1 BY 1
UNTIL WS-DEPTO-04 > 2
STOP RUN.
PARAGRAFO-1.
DISPLAY " EMPRESA : " NOME-EMPRESA (WS-DEPTO-01)
" DEPARTAMENTO: " NOME-DEPTO (WS-DEPTO-01
WS-DEPTO-02)
" SECAO : " NOME-SECAO (WS-DEPTO-01
WS-DEPTO-02
WS-DEPTO-03)
" EMPREGADO : " NOME-EMPRE (WS-DEPTO-01
WS-DEPTO-02
WS-DEPTO-03
WS-DEPTO-04).
PARAGRAFO-1-SAI.
EXIT.
--------------------------------------------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL encadeados
--------------------------------------------------------------------------------------------------------------------------------
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : AAAAAAAA EMPREGADO : Carlos
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : AAAAAAAA EMPREGADO : Alberto
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : BBBBBBBB EMPREGADO : José
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : BBBBBBBB EMPREGADO : Lili
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : CCCCCCCC EMPREGADO : Augusto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : CCCCCCCC EMPREGADO : Eduardo
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : DDDDDDDD EMPREGADO : Manuel
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : DDDDDDDD EMPREGADO : Eduardo
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : EEEEEEEE EMPREGADO : Carlos 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : EEEEEEEE EMPREGADO : Alberto 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : FFFFFFFF EMPREGADO : José 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : FFFFFFFF EMPREGADO : Lili 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : GGGGGGGG EMPREGADO : Augusto 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : GGGGGGGG EMPREGADO : Eduardo 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : HHHHHHHH EMPREGADO : Manuel 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : HHHHHHHH EMPREGADO : Eduardo 1
--------------------------------------------------------------------------------------------------------------------------------
Usando PERFORM VARYING UNTIL AFTER
--------------------------------------------------------------------------------------------------------------------------------
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : AAAAAAAA EMPREGADO : Carlos
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : AAAAAAAA EMPREGADO : Alberto
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : BBBBBBBB EMPREGADO : José
EMPRESA : Empresa 01 DEPARTAMENTO: Faturamento SECAO : BBBBBBBB EMPREGADO : Lili
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : CCCCCCCC EMPREGADO : Augusto
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : CCCCCCCC EMPREGADO : Eduardo
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : DDDDDDDD EMPREGADO : Manuel
EMPRESA : Empresa 01 DEPARTAMENTO: Qualidade SECAO : DDDDDDDD EMPREGADO : Eduardo
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : EEEEEEEE EMPREGADO : Carlos 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : EEEEEEEE EMPREGADO : Alberto 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : FFFFFFFF EMPREGADO : José 1
EMPRESA : Empresa 02 DEPARTAMENTO: Contabilidade SECAO : FFFFFFFF EMPREGADO : Lili 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : GGGGGGGG EMPREGADO : Augusto 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : GGGGGGGG EMPREGADO : Eduardo 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : HHHHHHHH EMPREGADO : Manuel 1
EMPRESA : Empresa 02 DEPARTAMENTO: Loja SECAO : HHHHHHHH EMPREGADO : Eduardo 1
|