COBOL - Exemplos simples - SEARCH ALL - TABELA ORDENADA - CHAVE NUMERICA



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

COBOL - Exemplos simples - SEARCH ALL - TABELA ORDENADA - CHAVE NUMERICA

      *-----------------------------------------------------------------
       IDENTIFICATION DIVISION.                                         
      *-----------------------------------------------------------------
       PROGRAM-ID.      SEARCHALL.                                       
       AUTHOR.          DORNELLES CARLOS ALBERTO.                       
      *-----------------------------------------------------------------
      *  PROGRAMA      : SEARCH                                       
      *  OBJETIVO      : COMANDO SEARCH ALL COM TABELA ORDENADA           
      *                : CHAVE NUMERICA                                 
      *  ANALISTA      : CARLOS ALBERTO DORNELLES                       
      *  DESENVOLVEDOR : CARLOS ALBERTO DORNELLES                       
      *  LINGUAGEM     : COBOL                                          
      *  MODO OPERACAO : BATCH                                          
      *-----------------------------------------------------------------
      *  VERSAO DD.MM.AAAA  HISTORICO        AUTOR                             
      *  ------ ----------  ---------------  ---------------------------                           
      *    001  20.06.2021  PROGRAMA INICIAL DORNELLES CARLOS ALBERTO                           
      *-----------------------------------------------------------------

      *-----------------------------------------------------------------
       ENVIRONMENT DIVISION.                                            
      *-----------------------------------------------------------------
       CONFIGURATION SECTION.                                           
       SPECIAL-NAMES.                                                   
                        DECIMAL-POINT IS COMMA.                         

      *-----------------------------------------------------------------
       DATA DIVISION.                                                   
      *-----------------------------------------------------------------

       WORKING-STORAGE SECTION.                                         
                                                                        
        01  WS-TABELA-PRODUTOS.                                           
           05 TAB-PRODUTOS.                                              
              10  FILLER       PIC X(021) VALUE "01ARROZ              ".
              10  FILLER       PIC X(021) VALUE "02FEIJAO             ".
              10  FILLER       PIC X(021) VALUE "03SAL                ".
              10  FILLER       PIC X(021) VALUE "04MACARRAO           ".
              10  FILLER       PIC X(021) VALUE "05AZEITE             ".
              10  FILLER       PIC X(021) VALUE "06CARNE              ".
              10  FILLER       PIC X(021) VALUE "07BISCOITO           ".
              10  FILLER       PIC X(021) VALUE "08SABAO              ".
              10  FILLER       PIC X(021) VALUE "09SABONETE           ".
              10  FILLER       PIC X(021) VALUE "10PAPEL HIGIENICO    ".
              10  FILLER       PIC X(021) VALUE "11AGUA SANITARIA     ".
              10  FILLER       PIC X(021) VALUE "12ALFACE             ".
              10  FILLER       PIC X(021) VALUE "13CHEIRO VERDE       ".
              10  FILLER       PIC X(021) VALUE "14REPOLHO            ".
              10  FILLER       PIC X(021) VALUE "15CAFE               ".
              10  FILLER       PIC X(021) VALUE "16NESCAFE            ".
              10  FILLER       PIC X(021) VALUE "17PAO                ".
              10  FILLER       PIC X(021) VALUE "18MEXERICA           ".
              10  FILLER       PIC X(021) VALUE "19LARANJA            ".
              10  FILLER       PIC X(021) VALUE "20ABACATE            ".
              10  FILLER       PIC X(021) VALUE "21MAMAO PAPAIA       ".
              10  FILLER       PIC X(021) VALUE "22MAMAO FORMOSA      ".
              10  FILLER       PIC X(021) VALUE "23MELAO AMARELO      ".
              10  FILLER       PIC X(021) VALUE "24SABAO EM PO        ".
              10  FILLER       PIC X(021) VALUE "25SHAMPOO            ".
              10  FILLER       PIC X(021) VALUE "26CREME RINSE        ".
              10  FILLER       PIC X(021) VALUE "27GEL DENTAL         ".
           05 TAB-PRODUTOS-R    REDEFINES  TAB-PRODUTOS.                  
              07  WS-CAJUGUDU  OCCURS 27 TIMES                          
                               ASCENDING KEY COD-PRODUTO                  
                               INDEXED BY IX-TAB.                       
                  10  COD-PRODUTO   PIC 9(002).                              
                  10  NOME-PRODUTO  PIC X(019).  
                            
       01  WS-AUXILIARES.                                               
           05 NAO-ACHOU-NADA        PIC 9(003) VALUE ZEROES.       
           05 WS-COD-PRODUTO        PIC 9(002) VALUE ZEROES.       
           05 VARIAVEL              PIC X(019) VALUE SPACES. 
           05 WS-X                  PIC 9(002) VALUE ZEROES. 

      *-----------------------------------------------------------------
       PROCEDURE DIVISION. 
      *-----------------------------------------------------------------

           MOVE ZEROES TO NAO-ACHOU-NADA                                
           MOVE 23 TO WS-COD-PRODUTO
           
           SEARCH ALL WS-CAJUGUDU                                        
                  AT END                                                
                     MOVE 1 TO NAO-ACHOU-NADA    
                WHEN COD-PRODUTO (IX-TAB) EQUAL WS-COD-PRODUTO 
                     MOVE NOME-PRODUTO (IX-TAB) TO VARIAVEL                           
           END-SEARCH                                                   

           IF  NAO-ACHOU-NADA EQUAL 0
               DISPLAY "ACHOU " WS-COD-PRODUTO " Nome do produto: " VARIAVEL 
           ELSE
               DISPLAY "NAO ACHOU" 
           END-IF. 

	   STOP RUN.

           ACHOU 23 Nome do produto: MELAO AMARELO

           MOVE 28 TO WS-COD-PRODUTO
           NAO ACHOU - Código do produto - 28