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 avanzado
Usuario avanzado
Mensajes: 30
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 avanzado
Usuario avanzado
Mensajes: 30
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