REF. PROBLEMA EN COMPILACION PROG. COBOL MANTENCIÓN DE ARCHIVO VSAM

Todo lo relacionado con Cobol en ambientes batch, online(CICS,IMS) con bases de datos(DB2, Adabas) etc.
Responder
ALDO
Usuario
Usuario
Mensajes: 28
Registrado: 27 Nov 2018, 11:45
País: CHILE
Ciudad: VIÑA DEL MAR
Ocupación: Jefe de area de sistemas

REF. PROBLEMA EN COMPILACION PROG. COBOL MANTENCIÓN DE ARCHIVO VSAM

Mensaje por ALDO » 20 Dic 2018, 16:17

Estimados
REF. PROBLEMA EN COMPILACION PROG. COBOL MANTENCIÓN DE ARCHIVO VSAM
Presente
Me encuentro revisando el sgte ejercicio que se indica en la referencia
(detalle a Continuación), Al Compilar la Instrucción relacionada con el DELETE
del Registro me arroja el Sgte Error:
..... (**)
*-------------
2200-BAJA-VSAM.
*-------------
DELETE REG-VSAM (*)

(**) IGYPS2074-S "REG-VSAM" was defined as a type that was invalid
in thype that was invalid in this context. The statement was discarded.


Detalle del Programa.
'-------------------

Código: Seleccionar todo

 IDENTIFICATION DIVISION.                                      
 PROGRAM-ID. PROG010.                                          
 AUTHOR. ALDO RODRIGUEZ VERA.                                  
*============================================*                 
* PROGRAMA LEE ARCHIVO VSAM                  *                 
*============================================*                 
*                                                              
 ENVIRONMENT DIVISION.                                         
*                                                              
 CONFIGURATION SECTION.                                        
 SPECIAL-NAMES.                                                
     DECIMAL-POINT IS COMMA.                                   
*                                                              
 INPUT-OUTPUT SECTION.                                         
 FILE-CONTROL.                                                 
     SELECT ENTRADA0 ASSIGN TO ENTRADA0                        
     FILE STATUS IS FS-ENTRADA0.                               
                                                               
     SELECT ENTRADA1 ASSIGN TO ENTRADA1                        
     FILE STATUS IS FS-ENTRADA1.                               
                                                               
     SELECT SALIDA ASSIGN TO SALIDA                            
     ORGANIZATION IS INDEXED                                   
     ACCESS MODE  IS RANDOM                                    
     RECORD KEY   IS CLAVE-OFICVSM                             
     FILE STATUS  IS FS-SALIDA.                                
*                                                              
 DATA DIVISION.                                                
*                                                              
 FILE SECTION.                                                 
*                                                              
**** FICHEROS DE ENTRADA ****  
*                                                              
**--> OFICINAS VERSION 0 (FICHERO SECUENCIAL)                  
 FD  ENTRADA0                                                  
     LABEL RECORD STANDARD                                     
     RECORDING MODE IS F                                       
     BLOCK CONTAINS 0 RECORDS.                                 
 01  REG-ENTRADA0             PIC X(52).                       
*                                                              
*--> OFICINAS VERSION -1 (FICHERO SECUENCIAL)                  
 FD  ENTRADA1                                                  
     LABEL RECORD STANDARD                                     
     RECORDING MODE IS F                                       
     BLOCK CONTAINS 0 RECORDS.                                 
 01  REG-ENTRADA1             PIC X(52).                       
**** FICHERO DE ENTRADA - SALIDA ****                          
*                                                              
*--> OFICINAS (FICHERO VSAM)                                   
 FD  SALIDA.                                                   
 01  REG-VSAM.                                                 
     05 CLAVE-OFICVSM          PIC X(08).                      
     05 RESTO-OFICVSM          PIC X(44).                      
*                                                              
**********************************************                 
*                                                              
 WORKING-STORAGE SECTION.                                      
*                                                              
*--------------------------------------------                  
*--- AREA DE COPYS ---*                                        
*---------------------------------------------                 
*                                                              
*--------------- COPY FICHERO OFICINAS ------------            
      COPY COFICINA.                                            
      COPY COFICINA REPLACING CSAM-COFICINA BY ==ENT-V0==.      
*                                                               
      COPY COFICINA REPLACING CSAM-COFICINA BY ==ENT-V1==.      
*                                                               
*--------------------------------------------------             
* AREA DE SWITCHES                                              
*-------------------------------------------------              
*--> FINAL FICHERO OFICINAS VERSION 0                           
 01  WS-FIN-ENTRADA0            PIC X(1) VALUE 'N'.             
     88 FIN-ENTRADA0                     VALUE 'S'.             
*--> FINAL FICHERO OFICINAS VERSION 1                           
 01  WS-FIN-ENTRADA1           PIC X(1)  VALUE 'N'.             
     88 FIN-ENTRADA1                     VALUE 'S'.             
*------------------------------------------------               
* CODIGOS DE ESTADO DE FICHEROS                                 
*-------------------------------------------------              
* FILE STATUS                                                   
 01  FS-STATUS.                                                 
     05 FS-ENTRADA0            PIC X(2).                        
        88 FS-ENTRADA0-OK                VALUE '00'.            
        88 FS-ENTRADA0-EOF               VALUE '10'.            
     05 FS-ENTRADA1            PIC X(2).                        
        88 FS-ENTRADA1-OK                VALUE '00'.            
        88 FS-ENTRADA1-EOF               VALUE '10'.            
     05 FS-SALIDA              PIC X(2).                        
        88 FS-SALIDA-OK                  VALUE '00'.            
*----------------------------------------------------           
* REGISTROS LEIDOS - GRABADOS - BORRADOS - MODIFICADOS          
*----------------------------------------------------           
 01  WS-PROCESADOS.                                             
     03 REG-LEIDOS-EN0         PIC 9(09) VALUE ZEROS.           
     03 REG-LEIDOS-EN1         PIC 9(09) VALUE ZEROS. 
     03 REG-GRABADOS-VSAM      PIC 9(09) VALUE ZEROS.         
     03 REG-BORRADOS-VSAM      PIC 9(09) VALUE ZEROS.         
     03 REG-MODIF-VSAM         PIC 9(09) VALUE ZEROS.         
*                                                             
 PROCEDURE DIVISION.                                          
*                                                             
************************************************************  
* | 0000 - PRINCIPAL                                          
*--|------------------+----------><----------+-------------*  
* 1| EJECUTA EL INICIO DEL PROGRAMA                           
* 2| EJECUTA EL PROCESO DEL PROGRAMA                          
* 3| EJECUTA EL FINAL DEL PROGRAMA                            
************************************************************  
 0000-PRINCIPAL.                                              
     PERFORM 1000-INICIO                                      
     PERFORM 2000-PROCESO                                     
       UNTIL FIN-ENTRADA0 AND FIN-ENTRADA1.                   
     PERFORM 3000-FINAL.                                      
*-----------                                                  
 1000-INICIO.                                                 
*-----------                                                  
     PERFORM 1100-ABRIR-FICHEROS                              
*                                                             
*--> LEEMOS PRIMERA OFICINA                                   
     PERFORM 1101-LEER-ENTRADA0.                              
     PERFORM 1102-LEER-ENTRADA1.                              
*---------------                                              
 2000-PROCESO.                                                
*---------------                                              
     EVALUATE TRUE                                            
        WHEN CSAM-CLAVE OF ENT-V0                             
             EQUAL CSAM-CLAVE OF ENT-V1 
             IF ENT-V0 NOT EQUAL ENT-V1                       
*---------> ACTUALIZAR CLAVE EN FICHERO VSAM                  
                MOVE ENT-V0 TO REG-VSAM                       
                PERFORM 2100-MODIFICAR-VSAM                   
             END-IF                                           
             PERFORM 1101-LEER-ENTRADA0                       
             PERFORM 1102-LEER-ENTRADA1                       
        WHEN CSAM-CLAVE OF ENT-V0 GREATER THAN                
             CSAM-CLAVE OF ENT-V1                             
*---------> DAR DE BAJA CLAVE DE V1 EN FICHERO VSAM           
             MOVE CSAM-CLAVE OF ENT-V1                        
               TO CLAVE-OFICVSM                               
             PERFORM 2200-BAJA-VSAM                           
             PERFORM 1102-LEER-ENTRADA1                       
        WHEN CSAM-CLAVE OF ENT-V0 LESS THAN                   
             CSAM-CLAVE OF ENT-V1                             
*---------> DAR DE ALTA LA CLAVE DE V0 EN FICHERO VSAM        
             MOVE ENT-V0 TO REG-VSAM                          
             PERFORM 2300-ALTA-VSAM                           
             PERFORM 1101-LEER-ENTRADA0                       
     END-EVALUATE.                                            
*-----------                                                  
 3000-FINAL.                                                  
*-----------                                                  
     PERFORM 3010-CERRAR-FICHEROS.                            
     PERFORM 3020-ESTADISTICAS.                               
     STOP RUN.                                                
*-----------------------                                      
 1100-ABRIR-FICHEROS.                                         
*-----------------------                                      
     OPEN INPUT ENTRADA0                                      
                ENTRADA1  
              I-O SALIDA.                                     
     IF NOT FS-ENTRADA0-OK                                    
        DISPLAY 'ERROR EN ABRIR-ENTRADA0'                     
        DISPLAY 'FILE-STATUS = ' FS-ENTRADA0                  
     END-IF.                                                  
     IF NOT FS-ENTRADA1-OK                                    
        DISPLAY 'ERROR EN ABRIR-ENTRADA1'                     
        DISPLAY 'FILE-STATUS = ' FS-ENTRADA1                  
     END-IF.                                                  
     IF NOT FS-SALIDA-OK                                      
        DISPLAY 'ERROR EN ABRIR-FVSAM'                        
        DISPLAY 'FILE-STATUS = ' FS-SALIDA                    
     END-IF.                                                  
*----------------------                                       
 1101-LEER-ENTRADA0.                                          
*----------------------                                       
     READ ENTRADA0 INTO ENT-V0                                
     EVALUATE TRUE                                            
        WHEN FS-ENTRADA0-OK                                   
             ADD 1 TO REG-LEIDOS-EN0                          
        WHEN FS-ENTRADA0-EOF                                  
             SET FIN-ENTRADA0 TO TRUE                         
        WHEN OTHER                                            
             DISPLAY 'ERROR EN 1101-LEER-ENTRADA0'            
             DISPLAY 'FILE-STATUS = ' FS-ENTRADA0             
             PERFORM 3020-ESTADISTICAS                        
     END-EVALUATE.                                            
*------------------------                                     
 3010-CERRAR-FICHEROS.                                        
*------------------------                                     
     CLOSE ENTRADA0                                           
           ENTRADA1     
           SALIDA.                                              
     IF NOT FS-ENTRADA0-OK                                      
        DISPLAY 'ERROR EN 3010-CERRAR-ENTRADA0'                 
        DISPLAY 'FILE-STATUS = ' FS-ENTRADA0                    
        PERFORM 3020-ESTADISTICAS                               
     END-IF.                                                    
     IF NOT FS-ENTRADA1-OK                                      
        DISPLAY 'ERROR EN 3010-CERRAR-ENTRADA1'                 
        DISPLAY 'FILE-STATUS = ' FS-ENTRADA1                    
        PERFORM 3020-ESTADISTICAS                               
     END-IF.                                                    
     IF NOT FS-SALIDA-OK                                        
        DISPLAY 'ERROR EN 3010-CERRAR-FVSAM'                    
        DISPLAY 'FILE-STATUS = ' FS-SALIDA                      
        PERFORM 3020-ESTADISTICAS                               
     END-IF.                                                    
*----------------------                                         
 1102-LEER-ENTRADA1.                                            
*----------------------                                         
      READ ENTRADA1 INTO ENT-V1                                 
      EVALUATE TRUE                                             
        WHEN FS-ENTRADA1-OK                                     
             ADD 1 TO REG-LEIDOS-EN1                            
        WHEN FS-ENTRADA1-EOF                                    
             SET FIN-ENTRADA1 TO TRUE                           
        WHEN OTHER                                              
             DISPLAY 'ERROR EN 1102-LEER-ENTRADA1'              
             DISPLAY 'FILE-STATUS = ' FS-ENTRADA1               
             PERFORM 3020-ESTADISTICAS                          
     END-EVALUATE.                                              
*------------------                                             
 2100-MODIFICAR-VSAM.  
*------------------                                           
     REWRITE REG-VSAM                                         
     INVALID KEY                                              
        DISPLAY 'ERROR EN MODIFICAR-VSAM'                     
        DISPLAY 'FILE-STATUS = ' FS-SALIDA                    
        PERFORM 3020-ESTADISTICAS                             
        ADD 1 TO REG-MODIF-VSAM.                              
*-------------                                                
 2200-BAJA-VSAM.                                              
*-------------                                                
     DELETE REG-VSAM                                          
     INVALID KEY                                              
        DISPLAY 'ERROR EN BAJA-VSAM'                          
        DISPLAY 'FILE-STATUS = ' FS-SALIDA                    
        PERFORM 3020-ESTADISTICAS.                            
     ADD 1 TO REG-BORRADOS-VSAM.                              
*-------------                                                
 2300-ALTA-VSAM.                                              
*-------------                                                
     WRITE REG-VSAM                                           
     INVALID KEY                                              
        DISPLAY 'ERROR EN ALTA-VSAM'                          
        DISPLAY 'FILE-STATUS = ' FS-SALIDA                    
        PERFORM 3020-ESTADISTICAS.                            
     ADD 1 TO REG-GRABADOS-VSAM.                              
*------------------------------------------                   
* 3020-ESTADISTICAS                                           
*-------------------------------------------                  
 3020-ESTADISTICAS.                                           
*-------------                                                
     DISPLAY '******************************************'     
     DISPLAY '* E S T A D I S T I C A S *'                    
     DISPLAY '******************************************'      
     DISPLAY ' PROGRAMA PROG009'                               
     DISPLAY '******************************************'      
     DISPLAY 'REG. LEIDOS OFI V0 ........ ' REG-LEIDOS-EN0.    
     DISPLAY 'REG. LEIDOS OFI V-1 ....... ' REG-LEIDOS-EN1.    
     DISPLAY 'REG. GRABADOS OFI VSAM .... ' REG-GRABADOS-VSAM. 
     DISPLAY 'REG. BORRADOS OFI VSAM .... ' REG-BORRADOS-VSAM. 
     DISPLAY 'REG. MODIFIC EN OFI VSAM .. ' REG-MODIF-VSAM.    
     DISPLAY '******************************************'.     
**************FIN FISICO DEL PROGRAMA PROG010 *************            


'-------------------
Nota: Probe la "Lectura" sequencial(READ NEXT) del archivo Vsam (con otro program) y no me arrojo
ningún Problema con Definición de acceso Secuencial (SEQUENTIAL).

Agradeciendo su importante apoyo.
Aldo Rodríguez Vera.

Pedro Pablo Concha
Usuario
Usuario
Mensajes: 8
Registrado: 03 Ene 2011, 09:28
País: Chile
Ciudad: Santiago
Ocupación: Analista de desarrollo

Re: REF. PROBLEMA EN COMPILACION PROG. COBOL MANTENCIÓN DE ARCHIVO VSAM

Mensaje por Pedro Pablo Concha » 31 Dic 2018, 08:54

Estimado Aldo,

El problema que se produce en este caso es debido a que la sentencia DELETE requiere del nombre de archivoi, no del nombre de registro; tu estas haciendo DELETE REG-VSAM en lugar de DELETE SALIDA.

Espero tengas un muy buen fin de año 2018 y un excelente 2019.

Saludos

Pedro Concha

ALDO
Usuario
Usuario
Mensajes: 28
Registrado: 27 Nov 2018, 11:45
País: CHILE
Ciudad: VIÑA DEL MAR
Ocupación: Jefe de area de sistemas

Re: REF. PROBLEMA EN COMPILACION PROG. COBOL MANTENCIÓN DE ARCHIVO VSAM

Mensaje por ALDO » 03 Ene 2019, 17:01

Gracias por vuestra ayuda... un feliz año. Saludos

Responder