Ver Mensaje Individual
  #25
Antiguo 28 de noviembre de 2022, 18:49
luisbago
Forero Junior
Última Actividad 02.10.2026 22:20
Posts Posts: 48
Likes enviados Enviados: 5
Likes recibidos Recibidos: 17

Usando opencobolide la última versión

comando para ver si soporta archivos indexados, en CMD
[ATTACH=CONFIG]828[/ATTACH]

resultado
[ATTACH=CONFIG]829[/ATTACH]

confirmando que soporta archivos indexados vsam

Código COBOL:
  1.             IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. PRUEBA10.
  3.        ENVIRONMENT DIVISION.
  4.  
  5.        INPUT-OUTPUT SECTION.
  6.      *Archivo fÃ*sico en modo dinámico.
  7.        FILE-CONTROL.
  8.        SELECT EMPLEADOS-ARCHIVO
  9.          ASSIGN TO "EMPINX"
  10.        ORGANIZATION IS INDEXED
  11.        RECORD KEY IS EMPLEADOS-ID
  12.        ACCESS MODE IS DYNAMIC
  13.        FILE STATUS IS FS-ST.
  14.  
  15.        DATA DIVISION.
  16.        FILE SECTION.
  17.      *Archivo lógico.
  18.        FD EMPLEADOS-ARCHIVO.
  19.            01 EMPLEADOS-REGISTRO.
  20.              05 EMPLEADOS-ID PIC 9(3).
  21.              05 EMPLEADOS-NOMBRE PIC X(25).
  22.              05 EMPLEADOS-APELLIDOS PIC X(35).
  23.  
  24.  
  25.        WORKING-STORAGE SECTION.
  26.        01  IDENTIFICADOR PIC X(36)
  27.            VALUE "INTRODUCE UN ID DEL NUEVO EMPLEADO: ".
  28.        01  NOMBRE PIC X(33)
  29.            VALUE "INTRODUCE UN NOMBRE DE EMPLEADO: ".
  30.        01  APELLIDOS PIC X(25)
  31.            VALUE "INTRODUCE LOS APELLIDOS: ".
  32.  
  33.  
  34.        77  FS-ST PIC 99.
  35.        77  SI-NO PIC X.
  36.        77  ENTRADA PIC X.
  37.  
  38.  
  39.        PROCEDURE DIVISION.
  40.        MAIN-LOGIC SECTION.
  41.  
  42.        PROGRAM-BEGIN.
  43.        PERFORM PROCEDIMIENTO-DE-APERTURA.
  44.        MOVE "S" TO SI-NO.
  45.        PERFORM AGREGAR-REGISTROS
  46.        UNTIL SI-NO = "N".
  47.        PERFORM PROCEDIMIENTO-DE-CIERRE.
  48.  
  49.        FINALIZA-PROGRAMA.
  50.        STOP RUN.
  51.  
  52.        PROCEDIMIENTO-DE-APERTURA.
  53.        OPEN I-O EMPLEADOS-ARCHIVO.
  54.         DISPLAY "APERTURA: " FS-ST.
  55.  
  56.  
  57.        PROCEDIMIENTO-DE-CIERRE.
  58.        CLOSE EMPLEADOS-ARCHIVO.
  59.          DISPLAY "CERRAR" FS-ST.
  60.  
  61.        AGREGAR-REGISTROS.
  62.        MOVE "N" TO ENTRADA.
  63.  
  64.        PERFORM OBTENER-CAMPOS UNTIL ENTRADA = "S".
  65.  
  66.        PERFORM ESCRIBIR-REGISTRO.
  67.          PERFORM REINICIAR.
  68.  
  69.        OBTENER-CAMPOS.
  70.        MOVE 0 TO EMPLEADOS-ID.
  71.        MOVE SPACE TO EMPLEADOS-NOMBRE.
  72.        MOVE SPACE TO EMPLEADOS-APELLIDOS.
  73.  
  74.        DISPLAY IDENTIFICADOR WITH NO ADVANCING
  75.        ACCEPT EMPLEADOS-ID.
  76.  
  77.        DISPLAY NOMBRE WITH NO ADVANCING
  78.        ACCEPT EMPLEADOS-NOMBRE.
  79.        DISPLAY APELLIDOS WITH NO ADVANCING
  80.        ACCEPT EMPLEADOS-APELLIDOS.
  81.  
  82.        MOVE "S" TO ENTRADA.
  83.        IF  EMPLEADOS-NOMBRE = SPACE
  84.        MOVE "N" TO ENTRADA.
  85.  
  86.  
  87.        ESCRIBIR-REGISTRO.
  88.        WRITE EMPLEADOS-REGISTRO.
  89.        DISPLAY "GRABAR: " FS-ST.
  90.           IF FS-ST EQUAL 22
  91.         DISPLAY "REGISTRO YA EXISTE, REVISE Y VUELVA A INGRESAR OTRO".
  92.         PERFORM REINICIAR.
  93.  
  94.        REINICIAR.
  95.        DISPLAY "¿PARA MAS REGISTROS PULSE -S- O -N- PARA TERMINAR: "
  96.             WITH NO ADVANCING
  97.        ACCEPT SI-NO.
  98.        IF SI-NO = "s" OR "S"
  99.            PERFORM AGREGAR-REGISTROS
  100.        ELSE
  101.             PERFORM PROCEDIMIENTO-DE-CIERRE
  102.            stop run.

leer el resultado
Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. CAPITULO-27.
  3.        ENVIRONMENT DIVISION.
  4.        INPUT-OUTPUT SECTION.
  5.        FILE-CONTROL.
  6.      *Archivo físico en modo dinámico.
  7.        SELECT EMPLEADOS-ARCHIVO
  8.        ASSIGN TO "EMPINX"
  9.        ORGANIZATION IS INDEXED
  10.        RECORD KEY IS EMPLEADOS-ID
  11.        ACCESS MODE IS DYNAMIC.
  12.        DATA DIVISION.
  13.        FILE SECTION.
  14.      *Archivo lógico.
  15.        FD EMPLEADOS-ARCHIVO.
  16.        
  17.            01 EMPLEADOS-REGISTRO.
  18.              05 EMPLEADOS-ID PIC 9(3).
  19.              05 EMPLEADOS-NOMBRE PIC X(25).
  20.              05 EMPLEADOS-APELLIDOS PIC X(35).
  21.            
  22.        WORKING-STORAGE SECTION.
  23.        77  LEE-TODO             PIC X.
  24.        PROCEDURE DIVISION.
  25.        EMPIEZA-PROGRAMA.
  26.        PERFORM PROCEDIMIENTO-DE-APERTURA.
  27.        MOVE "0" TO LEE-TODO.
  28.        PERFORM LEE-SIGUIENTE-REGISTRO.
  29.          IF LEE-TODO = "1"
  30.            DISPLAY "No se encontraron registros en el archivo."
  31.              ELSE
  32.                PERFORM MUESTRA-CAMPOS
  33.                UNTIL LEE-TODO = "1".
  34.                PERFORM PROCEDIMIENTO-DE-CIERRE.
  35.                FINALIZA-PROGRAMA.
  36.                STOP RUN.
  37.                PROCEDIMIENTO-DE-APERTURA.
  38.                OPEN I-O EMPLEADOS-ARCHIVO.
  39.                PROCEDIMIENTO-DE-CIERRE.
  40.                CLOSE EMPLEADOS-ARCHIVO.
  41.                MUESTRA-CAMPOS.
  42.                DISPLAY "ID: " EMPLEADOS-ID
  43.              " Nombre: " EMPLEADOS-NOMBRE " Apellidos: "
  44.              EMPLEADOS-APELLIDOS.
  45.              PERFORM LEE-SIGUIENTE-REGISTRO.
  46.              LEE-SIGUIENTE-REGISTRO.
  47.              READ EMPLEADOS-ARCHIVO NEXT RECORD
  48.              AT END MOVE "1" TO LEE-TODO.
  49.        END PROGRAM CAPITULO-27.

Resultado de leer el archivo indexado
[ATTACH=CONFIG]830[/ATTACH]
Imágenes Adjuntas
   
luisbago is offline   Responder Con Cita