Ver Mensaje Individual
  #6
Antiguo 24 de octubre de 2016, 08:45
theezraak
Forero Junior
Última Actividad 09.12.2019 11:12
Posts Posts: 6
Likes enviados Enviados: 3
Likes recibidos Recibidos: 1

Citación del post de Kuk Ver Mensaje
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 Ver Mensaje
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:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. CJ4.
  3.        ENVIRONMENT DIVISION.
  4.        CONFIGURATION SECTION.
  5.        SPECIAL-NAMES.
  6.             DECIMAL-POINT IS COMMA.
  7.        INPUT-OUTPUT SECTION.
  8.        FILE-CONTROL.
  9.  
  10.             SELECT FICH1     ASSIGN TO 'FICH1.CSV'
  11.                              ORGANIZATION IS LINE SEQUENTIAL.
  12.  
  13.             SELECT FICH2     ASSIGN TO 'FICH2.DAT'
  14.                              ORGANIZATION IS LINE SEQUENTIAL.
  15.  
  16.             SELECT SORT-WORK ASSIGN TO SORTWORK.
  17.  
  18.        DATA DIVISION.
  19.        FILE SECTION.
  20.  
  21.        FD  FICH1
  22.            RECORD CONTAINS 38 CHARACTERS.
  23.        01  F1-FICH1.
  24.            05 F1-IDENTIFICADOR     PIC 9(07).
  25.            05    FILLER            PIC X.
  26.            05 F1-APELLIDO          PIC X(20).
  27.            05    FILLER            PIC X.
  28.            05 F1-REGION            PIC X(09).
  29.  
  30.        FD  FICH2
  31.            RECORD CONTAINS 38 CHARACTERS.
  32.        01  F2-FICH2.
  33.            05 F2-IDENTIFICADOR     PIC 9(07).
  34.            05    FILLER            PIC X.
  35.            05 F2-APELLIDO          PIC X(20).
  36.            05    FILLER            PIC X.
  37.            05 F2-REGION            PIC X(09).
  38.  
  39.        SD  SORT-WORK
  40.             RECORD CONTAINS  38 CHARACTERS.
  41.        01  SORT-WORK-RECORD.
  42.            05 SW-IDENTIFICADOR     PIC 9(07).
  43.            05    FILLER            PIC X.
  44.            05 SW-APELLIDO          PIC X(20).
  45.            05    FILLER            PIC X.
  46.            05 SW-REGION            PIC X(09).
  47.  
  48.  
  49.        WORKING-STORAGE SECTION.
  50.  
  51.        PROCEDURE DIVISION.
  52.        MAIN-PROCEDURE SECTION.
  53.  
  54.            PERFORM INICIALIZAR-FICHEROS
  55.            SORT SORT-WORK
  56.                 ON ASCENDING KEY SW-APELLIDO
  57.                 ON ASCENDING KEY SW-REGION
  58.            INPUT  PROCEDURE CARGAR   *> Me parece que los Procedure deben ser Section
  59.            OUTPUT PROCEDURE SALIDA.  *> y una section termina en otra section
  60.            
  61.            STOP RUN.
  62.      *----------------------------------------------------------------*
  63.        END PROGRAM CJ4.
  64.      *----------------------------------------------------------------*
  65.        CARGAR SECTION.
  66.            OPEN INPUT FICH1
  67.            PERFORM LEER THRU LEER-FIN
  68.            CLOSE FICH1.
  69.        CARGAR-FIN SECTION.
  70.            EXIT.
  71.      *----------------------------------------------------------------*
  72.        LEER.
  73.            READ FICH1 NEXT RECORD AT END GO LEER-FIN.
  74.            MOVE F1-IDENTIFICADOR TO SW-IDENTIFICADOR.
  75.            MOVE F1-APELLIDO      TO SW-APELLIDO.
  76.            MOVE F1-REGION        TO SW-REGION.
  77.            RELEASE SORT-WORK-RECORD.
  78.            GO TO LEER.
  79.        LEER-FIN.
  80.            EXIT.
  81.      *----------------------------------------------------------------*
  82.        SALIDA SECTION.
  83.            OPEN OUTPUT FICH2
  84.            PERFORM INICIAR-SALIDA.
  85.            CLOSE FICH2
  86.        SALIDA-FIN SECTION.
  87.            EXIT.
  88.      *----------------------------------------------------------------*
  89.        INICIAR-SALIDA.
  90.            RETURN SORT-WORK AT END GO INICIAR-SALIDA-FIN.
  91.            MOVE SW-IDENTIFICADOR TO F2-IDENTIFICADOR.
  92.            MOVE SW-APELLIDO      TO F2-APELLIDO.
  93.            MOVE SW-REGION        TO F2-REGION.
  94.            WRITE F2-FICH2.
  95.            GO TO INICIAR-SALIDA.
  96.        INICIAR-SALIDA-FIN.
  97.            EXIT.
  98.      *----------------------------------------------------------------*
  99.    
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!
theezraak is offline   Responder Con Cita