Lo primero: La definicion del fichero para hacer el sort.
o defines la variable sortwork o bien la pones como una constante entre
comillas. Asi:
Código COBOL:
SELECT SORT-WORK ASSIGN TO 'SORTWORK'.
Segundo, quita lo de las "SECTION' no son necesarias. Pero si las utilizas no puedes llamar a procedimientos que estan fuera de la 'SECTION'. Mejor quitalas.
Tercero, inicalizar-ficheros no lo tienes implementado.
Cuarto , END-PROGRAM ponlo al final o quitalo. No hace falta
Quinto, CLOSE FICH2 pon el punto porque es final de parrafo CLOSE FICH2.
sexto, quita los exit.
septimo cambia "PERFORM INICIAR-SALIDA" por "PERFORM INICIAR-SALIDA thru iniciar-salida-fin".
Ya con eso, compila y nos cuentas.
Saludos
---------- Post añadido : 09:24 ---------- Post anterior : 09:16 ----------
Te quedaria asi:
Código COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. CJ4.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICH1 ASSIGN TO 'FICH1.CSV'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT FICH2 ASSIGN TO 'FICH2.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT SORT-WORK ASSIGN TO 'SORTWORK'.
DATA DIVISION.
FILE SECTION.
FD FICH1
RECORD CONTAINS 38 CHARACTERS.
01 F1-FICH1.
05 F1-IDENTIFICADOR PIC 9(07).
05 FILLER PIC X.
05 F1-APELLIDO PIC X(20).
05 FILLER PIC X.
05 F1-REGION PIC X(09).
FD FICH2
RECORD CONTAINS 38 CHARACTERS.
01 F2-FICH2.
05 F2-IDENTIFICADOR PIC 9(07).
05 FILLER PIC X.
05 F2-APELLIDO PIC X(20).
05 FILLER PIC X.
05 F2-REGION PIC X(09).
SD SORT-WORK
RECORD CONTAINS 38 CHARACTERS.
01 SORT-WORK-RECORD.
05 SW-IDENTIFICADOR PIC 9(07).
05 FILLER PIC X.
05 SW-APELLIDO PIC X(20).
05 FILLER PIC X.
05 SW-REGION PIC X(09).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
* PERFORM INICIALIZAR-FICHEROS
SORT SORT-WORK
ON ASCENDING KEY SW-APELLIDO
ON ASCENDING KEY SW-REGION
INPUT PROCEDURE CARGAR
OUTPUT PROCEDURE SALIDA.
STOP RUN.
*----------------------------------------------------------------*
* END PROGRAM CJ4.
*----------------------------------------------------------------*
CARGAR.
OPEN INPUT FICH1
PERFORM LEER THRU LEER-FIN
CLOSE FICH1.
CARGAR-FIN.
EXIT.
*----------------------------------------------------------------*
LEER.
READ FICH1 NEXT RECORD AT END GO LEER-FIN.
MOVE F1-IDENTIFICADOR TO SW-IDENTIFICADOR.
MOVE F1-APELLIDO TO SW-APELLIDO.
MOVE F1-REGION TO SW-REGION.
RELEASE SORT-WORK-RECORD.
GO TO LEER.
LEER-FIN.
*----------------------------------------------------------------*
SALIDA.
OPEN OUTPUT FICH2
PERFORM INICIAR-SALIDA thru iniciar-salida-fin.
CLOSE FICH2.
SALIDA-FIN.
*----------------------------------------------------------------*
INICIAR-SALIDA.
RETURN SORT-WORK AT END GO INICIAR-SALIDA-FIN.
MOVE SW-IDENTIFICADOR TO F2-IDENTIFICADOR.
MOVE SW-APELLIDO TO F2-APELLIDO.
MOVE SW-REGION TO F2-REGION.
WRITE F2-FICH2.
GO TO INICIAR-SALIDA.
INICIAR-SALIDA-FIN.
*----------------------------------------------------------------*
---------- Post añadido : 09:27 ---------- Post anterior : 09:24 ----------
Lo he probado:
fichero csv
fichero dat