Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
  COBOL Foro > IDE-s y compiladores COBOL > MicroFocus COBOL > RM/COBOL
RM/COBOL IDE y Compilador RM/COBOL
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Texto inicial en un Textbox dmosca PowerCOBOL (ActiveX, v4 - v11) 4 25 de julio de 2017 17:45
[Sintaxis] Pasar datos a texto plano Matias PowerCOBOL (ActiveX, v4 - v11) 6 12 de agosto de 2016 19:47
[Componente] Encriptar Texto Josber PowerCOBOL (ActiveX, v4 - v11) 10 14 de junio de 2016 17:49
[Sintaxis] Pasar número a fichero Texto Plano Josber PowerCOBOL (ActiveX, v4 - v11) 3 3 de junio de 2015 11:09
[Componente] OCR para convertir la IMG a texto Roger PowerCOBOL (ActiveX, v4 - v11) 8 6 de marzo de 2015 12:24
Respuesta
 
Herramientas

  #1
Antiguo 21 de octubre de 2016, 10:44
IDENTIFICATION DIVISION
theezraak
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de theezraak
DATA DIVISION
septiembre 2016
Tarragona
25 años
09.12.2019 11:12
PROCEDURE DIVISION
Posts: 6
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
theezraak is an unknown quantity at this point
Tabla Pasar CSV a texto plano

Buenos días, tengo un ejercicio de practica, y tengo que pasar de CSV a texto planto, con ciertos requisitos (2 campos ordenados en ascendente).
Y me da 1 error mi programa que es al abrir el fichero, pero no sé que más hacer.
Agradecería que alguien me lo explicara, un saludo.

Os dejo aquí el programita:
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.             SELECT FICH1 ASSIGN TO 'APELLIDOS.csv'
  10.             ORGANIZATION IS LINE SEQUENTIAL
  11.             ACCESS MODE IS SEQUENTIAL.
  12.             SELECT FICH2 ASSIGN TO 'FICH2.DAT'
  13.             ORGANIZATION IS LINE SEQUENTIAL.
  14.             SELECT SORT-WORK ASSIGN TO SORTWORK.
  15.        DATA DIVISION.
  16.        FILE SECTION.
  17.  
  18.        FD   FICH1
  19.             RECORD CONTAINS 38 CHARACTERS.
  20.  
  21.        01 DATOS.
  22.            05 IDENTIFICADOR        PIC 9(07).
  23.            05 FILLER               PIC X.
  24.            05 APELLIDO             PIC X(20).
  25.            05 FILLER               PIC X.
  26.            05 REGION               PIC X(09).
  27.  
  28.        FD   FICH2
  29.             RECORD CONTAINS 38 CHARACTERS.
  30.  
  31.        01 DATOS-2.
  32.            05 IDENTIFICADOR-2      PIC 9(07).
  33.            05 FILLER               PIC X.
  34.            05 APELLIDO-2           PIC X(20).
  35.            05 FILLER               PIC X.
  36.            05 REGION-2             PIC X(09).
  37.  
  38.        SD  SORT-WORK
  39.             RECORD CONTAINS  38 CHARACTERS.
  40.  
  41.        01  SORT-WORK-RECORD.
  42.  
  43.            05 SW-APELLIDO          PIC 9(07).
  44.            05 FILLER               PIC X.
  45.            05 SW-REGION            PIC X(09).
  46.            05 FILLER               PIC X(21).
  47.  
  48.  
  49.        WORKING-STORAGE SECTION.
  50.        01   LINEA.
  51.            02   LIDEN              PIC 9(07)BB.
  52.            02   LAPELL             PIC X(20)BB.
  53.            02   LREG               PIC X(09).
  54.        01   OP                     PIC X.
  55.  
  56.        PROCEDURE DIVISION.
  57.        MAIN-PROCEDURE.
  58.  
  59.            PERFORM INICIALIZAR-FICHEROS
  60.            SORT SORT-WORK
  61.            ON ASCENDING KEY APELLIDO
  62.            ON ASCENDING KEY REGION
  63.            INPUT PROCEDURE CARGAR
  64.            OUTPUT PROCEDURE SALIDA
  65.                .
  66.      *----------------------------------------------------------------*
  67.        INICIALIZAR-FICHEROS.
  68.            OPEN INPUT  FICH1
  69.            OPEN OUTPUT FICH2
  70.                .
  71.        INICIALIZAR-FICHEROS-FIN.
  72.            EXIT.
  73.      *----------------------------------------------------------------*
  74.        CARGAR.
  75.            OPEN INPUT FICH1
  76.            PERFORM LEER
  77.            PERFORM FIN-FICH
  78.                .
  79.        CARGAR-FIN.
  80.            EXIT.
  81.      *----------------------------------------------------------------*
  82.        LEER.
  83.                READ FICH1 NEXT RECORD AT END GO FIN-FICH.
  84.                MOVE APELLIDO TO SW-APELLIDO.
  85.                MOVE REGION   TO SW-REGION.
  86.                RELEASE SORT-WORK-RECORD.
  87.        LEER-FIN.
  88.            EXIT.
  89.      *----------------------------------------------------------------*
  90.        FIN-FICH.
  91.            CLOSE FICH1.
  92.        FIN-FICH-FIN.
  93.            EXIT.
  94.      *----------------------------------------------------------------*
  95.        SALIDA.
  96.            PERFORM INICIAR-SALIDA.
  97.            PERFORM FIN-SALIDA.
  98.        SALIDA-FIN.
  99.            EXIT.
  100.      *----------------------------------------------------------------*
  101.        INICIAR-SALIDA.
  102.            RETURN SORT-WORK AT END GO FIN-SALIDA.
  103.            MOVE SW-APELLIDO TO APELLIDO-2.
  104.            MOVE SW-REGION   TO REGION-2.
  105.            DISPLAY LINEA LINE 20.
  106.            ACCEPT OP LINE 21.
  107.            GO INICIAR-SALIDA.
  108.        INICIAR-SALIDA-FIN.
  109.            EXIT.
  110.      
  111.       *----------------------------------------------------------------*  
  112.        FIN-SALIDA.
  113.            EXIT.
  114.        FIN-SALIDA-FIN.
  115.            EXIT.
  116.      *----------------------------------------------------------------*
  117.             CLOSE FICH1.
  118.             CLOSE FICH2.
  119.  
  120.             STOP RUN.
  121.        END PROGRAM CJ4.
theezraak no ha iniciado sesión   Responder Con Cita
Mejores respuestas Soluciones: 1
Ha dicho Gracias : 1
Nchujfi ( 7 de noviembre de 2016)
  #2
Antiguo 21 de octubre de 2016, 11:19
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
enero 2015
Madrid
36 años
26.11.2021 19:14
PROCEDURE DIVISION
Posts: 1.892
Enviado: 613
Recibido: 800
Soluciones: 99
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

theezraak, qué error te da exactamente? Si no te sale cual es, usa el FILE-STATUS y haz un DISPLAY para ver qué ocurre.

Además, para qué mantienes los FILLER en el fichero de salida? Si estás pasando a texto plano, no son necesarios.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
theezraak (25 de octubre de 2016)
  #3
Antiguo 21 de octubre de 2016, 11:36
IDENTIFICATION DIVISION
theezraak
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de theezraak
DATA DIVISION
septiembre 2016
Tarragona
25 años
09.12.2019 11:12
PROCEDURE DIVISION
Posts: 6
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
theezraak is an unknown quantity at this point
Predeterminado

Cita del post de Kuk Ver Mensaje
theezraak, qué error te da exactamente? Si no te sale cual es, usa el FILE-STATUS y haz un DISPLAY para ver qué ocurre.

Además, para qué mantienes los FILLER en el fichero de salida? Si estás pasando a texto plano, no son necesarios.
Cabe destacar, que CSV es erroneo, es un DAT con formato CSV. Aún así me da error.
De pongo el error que me da:
Código:
Sort-merge key is not defined in record associated with sort
theezraak no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 21 de octubre de 2016, 14:10
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
enero 2015
Madrid
36 años
26.11.2021 19:14
PROCEDURE DIVISION
Posts: 1.892
Enviado: 613
Recibido: 800
Soluciones: 99
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Cita del post de theezraak Ver Mensaje
CSV es erroneo, es un DAT con formato CSV. Aún así me da error.
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.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 22 de octubre de 2016, 03:44
IDENTIFICATION DIVISION
Hrmcobol
 Guardián del Foro
Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
febrero 2015
Puerto Madryn
69 años
26.10.2021 18:49
PROCEDURE DIVISION
Posts: 321
Enviado: 107
Recibido: 118
Soluciones: 10
Reputación: 18
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado

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.    
Hrmcobol no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
theezraak (25 de octubre de 2016)
  #6
Antiguo 24 de octubre de 2016, 08:45
IDENTIFICATION DIVISION
theezraak
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de theezraak
DATA DIVISION
septiembre 2016
Tarragona
25 años
09.12.2019 11:12
PROCEDURE DIVISION
Posts: 6
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
theezraak is an unknown quantity at this point
Predeterminado

Cita 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 ----------

Cita 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 no ha iniciado sesión   Responder Con Cita
  #7
Antiguo 24 de octubre de 2016, 09:27
IDENTIFICATION DIVISION
JCantero
 Senior
Activista del Foro: Activista del Foro - Razón: Por participación activa  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros 
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
junio 2016
Albacete
55 años
25.11.2021 08:03
PROCEDURE DIVISION
Posts: 206
Enviado: 62
Recibido: 139
Soluciones: 10
Reputación: 20
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado
1 usuarios han marcado este post como "Solución"

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 no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
theezraak (25 de octubre de 2016)
  #8
Antiguo 24 de octubre de 2016, 09:39
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
enero 2015
Madrid
36 años
26.11.2021 19:14
PROCEDURE DIVISION
Posts: 1.892
Enviado: 613
Recibido: 800
Soluciones: 99
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

JCantero, los párrafos de XXXX-FIN no sirven de nada tampoco. Además, muchos compiladores no compilan un párrafo vacío, así que el EXIT se convierte en obligatorio.

Las SECTION, los párrafos con -FIN y el THRU no son recomendados, yo no los uso nunca. Los puntos tampoco. El único punto obligatorio es el del final del párrafo. Los GO TO tampoco son recomendados, suelen ser prohibidos por estándar. Es preferible usar los PERFORM.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
  #9
Antiguo 24 de octubre de 2016, 11:01
IDENTIFICATION DIVISION
theezraak
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de theezraak
DATA DIVISION
septiembre 2016
Tarragona
25 años
09.12.2019 11:12
PROCEDURE DIVISION
Posts: 6
Enviado: 3
Recibido: 1
Soluciones: 0
Reputación: 0
theezraak is an unknown quantity at this point
Predeterminado

Cita del post de Kuk Ver Mensaje
JCantero, los párrafos de XXXX-FIN no sirven de nada tampoco. Además, muchos compiladores no compilan un párrafo vacío, así que el EXIT se convierte en obligatorio.

Las SECTION, los párrafos con -FIN y el THRU no son recomendados, yo no los uso nunca. Los puntos tampoco. El único punto obligatorio es el del final del párrafo. Los GO TO tampoco son recomendados, suelen ser prohibidos por estándar. Es preferible usar los PERFORM.
Uso el fin porque me va bien para situarme.
Te pongo el codigo que tengo ahora, de momento ahora me da 1 error al leer el fichero.
Un saludo y gracias!
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 'APELLIDO.DAT'
  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.            SORT SORT-WORK
  54.            ON ASCENDING KEY SW-APELLIDO
  55.            ON ASCENDING KEY SW-REGION
  56.            INPUT  PROCEDURE CARGAR
  57.            OUTPUT PROCEDURE SALIDA.
  58.            STOP RUN.
  59.      *----------------------------------------------------------------*
  60.        CARGAR SECTION.
  61.            OPEN INPUT FICH1.
  62.            PERFORM LEER.
  63.        LEER.
  64.            READ FICH1 AT END PERFORM FIN-LEER.
  65.            MOVE F1-IDENTIFICADOR TO SW-IDENTIFICADOR.
  66.            MOVE F1-APELLIDO      TO SW-APELLIDO.
  67.            MOVE F1-REGION        TO SW-REGION.
  68.            RELEASE SORT-WORK-RECORD.
  69.            PERFORM LEER.
  70.            
  71.        FIN-LEER.
  72.            CLOSE FICH1.
  73.        FIN-LEER-FIN.
  74.            EXIT.
  75.      *----------------------------------------------------------------*
  76.        SALIDA SECTION.
  77.            OPEN OUTPUT FICH2.
  78.            PERFORM INICIAR-SALIDA.
  79.            CLOSE FICH2.
  80.        INICIAR-SALIDA.
  81.            RETURN SORT-WORK AT END GO INICIAR-SALIDA-FIN.
  82.            MOVE SW-IDENTIFICADOR TO F2-IDENTIFICADOR.
  83.            MOVE SW-APELLIDO      TO F2-APELLIDO.
  84.            MOVE SW-REGION        TO F2-REGION.
  85.            WRITE F2-FICH2.
  86.            PERFORM INICIAR-SALIDA.
  87.        INICIAR-SALIDA-FIN.
  88.            EXIT.
  89.      *----------------------------------------------------------------*
  90.        END PROGRAM CJ4.
  91.      *----------------------------------------------------------------*

theezraak, usa el resalto de sintaxis!

---------- Post añadido : 11:01 ---------- Post anterior : 10:12 ----------

Ya me funciona gracias al codigo de JCantero.
La verdad que parecía más facil de lo que era.
Muchas gracias a todos por las aportaciones!!!

Última edición por Kuk fecha: 24 de octubre de 2016 a las 10:39. Razón: Resalto de sintaxis
theezraak no ha iniciado sesión   Responder Con Cita
Respuesta

Tags
csv , excel , texto plano


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 09:11.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2021, Jelsoft Enterprises Ltd.