Citación del post de
Kuk
|
❞
No me estoy enterando. CSV es simplemente una extensión de fichero. El formato en sí es texto plano, donde los datos van separados por punto y coma. No es como los doc/docx (que no son texto plano). Así que no entiendo por qué dices que es erróneo.
Por cierto, los párrafos XXXXX-FIN no sirven de nada si no haces PERFORM THRU. El THRU no es recomendado, por lo tanto los puedes suprimir (en vez de añadir los THRU XXXXX-FIN).
En realidad, yo nunca he usado el SORT interno, pero me parece que error viene de tus párrafos CARGAR y SALIDA. Son párrafos que están en un bucle implícito, no puede haber OPEN ni CLOSE dentro. Sólo hay que dejar las instrucciones que quieres que se ejecuten con cada iteración de lectura/escritura.
|
Por lo que conseguí el viernes, era error mio, no era csv era .dat
Ahora solo me graba 1 registro, poco a poco.
---------- Post añadido : 08:45 ---------- Post anterior : 08:43 ----------
Citación del post de
Hrmcobol
|
❞
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. *----------------------------------------------------------------*
|
Hola, gracias por la ayudita. Con ese codigo, y habiendole hecho unas modis, me da error en el Cargar section, es necesario poner SECTION cuando se usa el SORT?
Un saludo!