miércoles, 2 de marzo de 2011

Ubicar Registro Relativo en Archivo - Cobol AS400

Ubicar el registro 100 desde un RPG es simple, solo indicamos el numero del registro que queremos ubicar en el código de operación CHAIN

      100         CHAIN       ARCHIVO

Hacerlo en Cobol es igual de sencillo pero en la Declaración del Archivo debemos indicar algunas cosas adicionales. La cláusula RELATIVE nos permite organizarlo por registro relativo, es decir, en el orden tal como ingresaron al archivo. A la vez nos permite actualizar o eliminar los registros procesados.
 
 ORGANIZATION   IS RELATIVE             

El acceso se realiza con clave relativa
             ACCESS MODE    IS RANDOM               
             RELATIVE KEY   IS RRN-PLANO            

En este ejemplo procesamos un archivo plano, ubicamos el registro 100 y lo eliminamos.

ENVIRONMENT DIVISION.                              
*---------------------                               
 INPUT-OUTPUT SECTION.                              
 FILE-CONTROL.                                      
*
     SELECT  PLANO                                  
             ASSIGN TO      DATABASE-PLANO          
             ORGANIZATION   IS RELATIVE             
             ACCESS MODE    IS RANDOM               
             RELATIVE KEY   IS RRN-PLANO            
             FILE   STATUS  IS FS-PLANO.            
                                                    
 DATA DIVISION.                                     
*--------------                                     
 FILE SECTION.                                      
 FD  PLANO                                          
     LABEL RECORDS ARE STANDARD.                    
 01  REG-PLANO.                                     
     03  FILLER   PIC X(648).                       
*                                                   
                                                    
 WORKING-STORAGE SECTION.                            
* Variables
 01  RRN-PLANO       PIC 9(5).                      

* Files Status                                     
 77  FS-PLANO                 PIC XX.              
     88 PLANO-EOF                 VALUE "10".      
                                                    
 77  SW-FIN-PROGRAMA          PIC 9.               
     88 FIN-PROGRAMA              VALUE 1.         

PROCEDURE DIVISION.                                
*-------------------                                
 PRINCIPAL.                                         
*----------                                         
     PERFORM INICIO                                 
     PERFORM PROCESO UNTIL FIN-PROGRAMA             
     PERFORM FIN                                     
     STOP RUN.                                      
*                                                   
 INICIO.                                            
*-------                                            
     OPEN I-O     PLANO.                             
                                                    
 FIN.                                               
*----                                               
     CLOSE        PLANO.                            
                                                     
 PROCESO.                                           
*--------                                           
     MOVE 100  TO RRN-PLANO                         
     READ PLANO                                     
        AT END                                      
                DISPLAY "REGISTRO NO ENCONTRADO"    
        NOT AT END                             
                DISPLAY REG-PLANO              
                DELETE PLANO                   
     END-READ.                                 
     MOVE 1  TO  SW-FIN-PROGRAMA.              
                                               

Esto se puede aplicar a archivos con DDS, con claves o archivos sin DDS (planos).

No hay comentarios:

Publicar un comentario