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:
IDENTIFICATION DIVISION.
PROGRAM-ID. PRUEBA10.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
*Archivo fÃ*sico en modo dinámico.
FILE-CONTROL.
SELECT EMPLEADOS-ARCHIVO
ASSIGN TO "EMPINX"
ORGANIZATION IS INDEXED
RECORD KEY IS EMPLEADOS-ID
ACCESS MODE IS DYNAMIC
FILE STATUS IS FS-ST.
DATA DIVISION.
FILE SECTION.
*Archivo lógico.
FD EMPLEADOS-ARCHIVO.
01 EMPLEADOS-REGISTRO.
05 EMPLEADOS-ID PIC 9(3).
05 EMPLEADOS-NOMBRE PIC X(25).
05 EMPLEADOS-APELLIDOS PIC X(35).
WORKING-STORAGE SECTION.
01 IDENTIFICADOR PIC X(36)
VALUE "INTRODUCE UN ID DEL NUEVO EMPLEADO: ".
01 NOMBRE PIC X(33)
VALUE "INTRODUCE UN NOMBRE DE EMPLEADO: ".
01 APELLIDOS PIC X(25)
VALUE "INTRODUCE LOS APELLIDOS: ".
77 FS-ST PIC 99.
77 SI-NO PIC X.
77 ENTRADA PIC X.
PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
PROGRAM-BEGIN.
PERFORM PROCEDIMIENTO-DE-APERTURA.
MOVE "S" TO SI-NO.
PERFORM AGREGAR-REGISTROS
UNTIL SI-NO = "N".
PERFORM PROCEDIMIENTO-DE-CIERRE.
FINALIZA-PROGRAMA.
STOP RUN.
PROCEDIMIENTO-DE-APERTURA.
OPEN I-O EMPLEADOS-ARCHIVO.
DISPLAY "APERTURA: " FS-ST.
PROCEDIMIENTO-DE-CIERRE.
CLOSE EMPLEADOS-ARCHIVO.
DISPLAY "CERRAR" FS-ST.
AGREGAR-REGISTROS.
MOVE "N" TO ENTRADA.
PERFORM OBTENER-CAMPOS UNTIL ENTRADA = "S".
PERFORM ESCRIBIR-REGISTRO.
PERFORM REINICIAR.
OBTENER-CAMPOS.
MOVE 0 TO EMPLEADOS-ID.
MOVE SPACE TO EMPLEADOS-NOMBRE.
MOVE SPACE TO EMPLEADOS-APELLIDOS.
DISPLAY IDENTIFICADOR WITH NO ADVANCING
ACCEPT EMPLEADOS-ID.
DISPLAY NOMBRE WITH NO ADVANCING
ACCEPT EMPLEADOS-NOMBRE.
DISPLAY APELLIDOS WITH NO ADVANCING
ACCEPT EMPLEADOS-APELLIDOS.
MOVE "S" TO ENTRADA.
IF EMPLEADOS-NOMBRE = SPACE
MOVE "N" TO ENTRADA.
ESCRIBIR-REGISTRO.
WRITE EMPLEADOS-REGISTRO.
DISPLAY "GRABAR: " FS-ST.
IF FS-ST EQUAL 22
DISPLAY "REGISTRO YA EXISTE, REVISE Y VUELVA A INGRESAR OTRO".
PERFORM REINICIAR.
REINICIAR.
DISPLAY "¿PARA MAS REGISTROS PULSE -S- O -N- PARA TERMINAR: "
WITH NO ADVANCING
ACCEPT SI-NO.
IF SI-NO = "s" OR "S"
PERFORM AGREGAR-REGISTROS
ELSE
PERFORM PROCEDIMIENTO-DE-CIERRE
stop run.
leer el resultado
Código COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-27.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
*Archivo físico en modo dinámico.
SELECT EMPLEADOS-ARCHIVO
ASSIGN TO "EMPINX"
ORGANIZATION IS INDEXED
RECORD KEY IS EMPLEADOS-ID
ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
*Archivo lógico.
FD EMPLEADOS-ARCHIVO.
01 EMPLEADOS-REGISTRO.
05 EMPLEADOS-ID PIC 9(3).
05 EMPLEADOS-NOMBRE PIC X(25).
05 EMPLEADOS-APELLIDOS PIC X(35).
WORKING-STORAGE SECTION.
77 LEE-TODO PIC X.
PROCEDURE DIVISION.
EMPIEZA-PROGRAMA.
PERFORM PROCEDIMIENTO-DE-APERTURA.
MOVE "0" TO LEE-TODO.
PERFORM LEE-SIGUIENTE-REGISTRO.
IF LEE-TODO = "1"
DISPLAY "No se encontraron registros en el archivo."
ELSE
PERFORM MUESTRA-CAMPOS
UNTIL LEE-TODO = "1".
PERFORM PROCEDIMIENTO-DE-CIERRE.
FINALIZA-PROGRAMA.
STOP RUN.
PROCEDIMIENTO-DE-APERTURA.
OPEN I-O EMPLEADOS-ARCHIVO.
PROCEDIMIENTO-DE-CIERRE.
CLOSE EMPLEADOS-ARCHIVO.
MUESTRA-CAMPOS.
DISPLAY "ID: " EMPLEADOS-ID
" Nombre: " EMPLEADOS-NOMBRE " Apellidos: "
EMPLEADOS-APELLIDOS.
PERFORM LEE-SIGUIENTE-REGISTRO.
LEE-SIGUIENTE-REGISTRO.
READ EMPLEADOS-ARCHIVO NEXT RECORD
AT END MOVE "1" TO LEE-TODO.
END PROGRAM CAPITULO-27.
Resultado de leer el archivo indexado
[ATTACH=CONFIG]830[/ATTACH]
