Hola Amigo, este código lee un archivo y graba otro ordenado por dos campos. Saque y cambie algunas cosas, no recuerdo bien como era el tema del sort interno, pero si compila debería funcionar.
Coboleros si leen esto revisar por favor. Saludos a todos
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 SECTION.
PERFORM INICIALIZAR-FICHEROS
SORT SORT-WORK
ON ASCENDING KEY SW-APELLIDO
ON ASCENDING KEY SW-REGION
INPUT PROCEDURE CARGAR *> Me parece que los Procedure deben ser Section
OUTPUT PROCEDURE SALIDA. *> y una section termina en otra section
STOP RUN.
*----------------------------------------------------------------*
END PROGRAM CJ4.
*----------------------------------------------------------------*
CARGAR SECTION.
OPEN INPUT FICH1
PERFORM LEER THRU LEER-FIN
CLOSE FICH1.
CARGAR-FIN SECTION.
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.
EXIT.
*----------------------------------------------------------------*
SALIDA SECTION.
OPEN OUTPUT FICH2
PERFORM INICIAR-SALIDA.
CLOSE FICH2
SALIDA-FIN SECTION.
EXIT.
*----------------------------------------------------------------*
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.
EXIT.
*----------------------------------------------------------------*