COBOL - Exemplos simples - PERFORM VARYING UNTIL AFTER BIDIMENSIONAL



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Exemplos simples - PERFORM VARYING UNTIL AFTER BIDIMENSIONAL

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.

Resultado do teste
--------------------------------------------------------------------------------------------
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