Ver Mensaje Individual
  #9
Antiguo 24 de octubre de 2016, 11:01
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
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 is offline   Responder Con Cita