Ver Mensaje Individual
  #14
Antiguo 24 de septiembre de 2017, 10:14
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

KalEl, aquí tienes el programa. Lo he probado y funciona. En la salida te crea fichero de texto plano, separando los campos por punto-coma, es decir formato CSV para poder verlo en Excel.

Desde el script CMD/Batch debes pasar los nombres de los ficheros separados por punto-coma:

Código:
CONVF001 "fichero.dat;fichero_salida.csv"
Código COBOL:
  1.  IDENTIFICATION DIVISION.
  2.  PROGRAM-ID.    CONVAR86.
  3.  
  4.  ENVIRONMENT DIVISION.  
  5.  INPUT-OUTPUT SECTION.
  6.  FILE-CONTROL.
  7.      
  8.      SELECT AR86-FILE
  9.      ASSIGN TO ZZZ-AR86
  10.      ORGANIZATION IS INDEXED
  11.      ACCESS MODE IS SEQUENTIAL
  12.      RECORD KEY IS RE-CO86
  13.      ALTERNATE RECORD RE-DE86 WITH DUPLICATES
  14.      FILE STATUS IS SW-FS.
  15.      
  16.      SELECT TXT-FILE
  17.      ASSIGN TO ZZZ-TXT
  18.      ORGANIZATION IS LINE SEQUENTIAL
  19.      FILE STATUS IS SW-FS.
  20.  
  21.  DATA DIVISION.
  22.  FILE SECTION.
  23.  FD  AR86-FILE.
  24.  01  RE-AR86.
  25.      02  RE-CO86      PIC 9999.
  26.      02  RE-DE86      PIC X(25).
  27.      02  RE-AMPLI86   PIC X(30).
  28.  
  29.  FD  TXT-FILE.
  30.  01  RE-TXT           PIC X(62). *> campos entrada + los ";"
  31.  
  32.  WORKING-STORAGE SECTION.
  33.  01  SW-FS            PIC X(2).
  34.      88  SW-FS-OK             VALUE '00' '02' '05'.
  35.      88  SW-FS-EOF            VALUE '10'.
  36.          
  37.  01  ZZZ-AR86         PIC X(50).
  38.  01  ZZZ-TXT          PIC X(50).
  39.  
  40.  01  CNT-1            PIC S9(9) COMP-5.
  41.  01  CNT-2            PIC S9(9) COMP-5.
  42.  
  43.  LINKAGE SECTION.
  44.  01  CMD-LINE.
  45.      05   CMD-LENGTH  PIC S9(4) COMP-5.
  46.      05   CMD-CONTENT PIC X(100).
  47.  PROCEDURE DIVISION USING CMD-LINE.
  48.  
  49.  DECLARATIVES.
  50.  ERR SECTION.
  51.      USE AFTER ERROR PROCEDURE ON AR86-FILE.
  52.  END DECLARATIVES.
  53.  
  54.      IF  CMD-LENGTH = 0
  55.          DISPLAY "No hay parametros en entrada. EXIT"
  56.          
  57.          GOBACK
  58.      END-IF
  59.      
  60.      UNSTRING CMD-CONTENT DELIMITED BY ";"
  61.          INTO ZZZ-AR86, ZZZ-TXT
  62.      
  63.      DISPLAY "Fichero AR86: " ZZZ-AR86
  64.      DISPLAY "Fichero TXT : " ZZZ-TXT
  65.      
  66.      PERFORM ABRIR-FICHEROS
  67.      PERFORM READ-AR86            
  68.      
  69.      PERFORM UNTIL SW-FS-EOF                
  70.          STRING RE-CO86 ";"
  71.                 RE-DE86 ";"
  72.                 RE-AMPLI86 ";"
  73.                 DELIMITED BY SIZE INTO RE-TXT
  74.          
  75.          WRITE RE-TXT
  76.          
  77.          IF  SW-FS-OK
  78.              ADD 1 TO CNT-2
  79.              
  80.          ELSE
  81.              DISPLAY "ERROR WRITE TXT, FS: " SW-FS
  82.          
  83.              GO TO 9999-ABEND
  84.          END-IF
  85.                                
  86.          PERFORM READ-AR86
  87.      END-PERFORM
  88.      
  89.      DISPLAY "Registros leidos AR86 : " CNT-1
  90.      DISPLAY "Registros escritos TXT: " CNT-2
  91.      
  92.      CLOSE AR86-FILE, TXT-FILE
  93.      
  94.      DISPLAY "Tratamiento de datos OK"
  95.      
  96.      GOBACK
  97.      .            
  98.      
  99.  ABRIR-FICHEROS.
  100.  
  101.      OPEN INPUT AR86-FILE
  102.      
  103.      IF  NOT SW-FS-OK
  104.          DISPLAY "ERROR OPEN AR86, FS: " SW-FS
  105.          
  106.          GOBACK
  107.      END-IF
  108.      
  109.      OPEN OUTPUT TXT-FILE
  110.      
  111.      IF  NOT SW-FS-OK
  112.          DISPLAY "ERROR OPEN TXT, FS: " SW-FS
  113.          
  114.          GOBACK
  115.      END-IF
  116.      .
  117.      
  118.  READ-AR86.
  119.      
  120.      READ AR86-FILE
  121.      
  122.      IF  SW-FS-OK
  123.          ADD 1 TO CNT-1
  124.          
  125.      ELSE
  126.          IF  NOT SW-FS-EOF
  127.              DISPLAY "ERROR READ AR86, FS: " SW-FS
  128.          
  129.              GOBACK
  130.          END-IF
  131.      END-IF
  132.      .
  133.          
  134.  9999-ABEND.
  135.      
  136.      DISPLAY "ABEND - exit"
  137.      
  138.      CLOSE AR86-FILE, TXT-FILE
  139.      
  140.      MOVE 8 TO RETURN-CODE
  141.      
  142.      GOBACK
  143.      .
  144.          



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 is offline   Responder Con Cita