Ver Mensaje Individual
  #7
Antiguo 24 de octubre de 2016, 09:27
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

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:
  1. 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:
  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.
  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  
  59.            OUTPUT PROCEDURE SALIDA.  
  60.            
  61.            STOP RUN.
  62.      *----------------------------------------------------------------*
  63.      * END PROGRAM CJ4.
  64.      *----------------------------------------------------------------*
  65.        CARGAR.
  66.            OPEN INPUT FICH1
  67.            PERFORM LEER THRU LEER-FIN
  68.            CLOSE FICH1.
  69.        CARGAR-FIN.
  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.      *----------------------------------------------------------------*
  81.        SALIDA.
  82.            OPEN OUTPUT FICH2
  83.            PERFORM INICIAR-SALIDA thru iniciar-salida-fin.
  84.            CLOSE FICH2.
  85.        SALIDA-FIN.
  86.      *----------------------------------------------------------------*
  87.        INICIAR-SALIDA.
  88.            RETURN SORT-WORK AT END GO INICIAR-SALIDA-FIN.
  89.            MOVE SW-IDENTIFICADOR TO F2-IDENTIFICADOR.
  90.            MOVE SW-APELLIDO      TO F2-APELLIDO.
  91.            MOVE SW-REGION        TO F2-REGION.
  92.            WRITE F2-FICH2.
  93.            GO TO INICIAR-SALIDA.
  94.        INICIAR-SALIDA-FIN.
  95.      *----------------------------------------------------------------*
  96.    


---------- Post añadido : 09:27 ---------- Post anterior : 09:24 ----------

Lo he probado:

fichero csv

Código COBOL:
  1. 12     jsjjsj
  2. 1      4324
  3. 1      1111
  4.  

fichero dat

Código COBOL:
  1.  
  2. 1       111
  3. 1       324
  4. 12      sjjsj
JCantero is offline   Responder Con Cita