Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   NetCOBOL (https://www.cobolforo.es/forumdisplay.php?f=2)
-   -   [Sintaxis] Crear Rutina que exporte archivos DAT a TXT? (https://www.cobolforo.es/showthread.php?t=723)

KalEl 23 de septiembre de 2017 00:58

Muy amable Kuk, me gustaría tener el código de esta rutina para poder usarla en los demas archivos.

Muchas Gracias!

Kuk 23 de septiembre de 2017 07:45

KalEl, ¿tú tienes el compilador?

Por cierto, la estructura que has publicado no corresponde con el fichero, porque el fichero según el programa de antes, es de longitud 59 y la estructura 4+25+3=32

KalEl 23 de septiembre de 2017 21:30

1 Archivos Adjunto(s)
Tienes Razon, encontre otro FD nuevo para ese archivo. Y da 59 el total.

Kuk 24 de septiembre de 2017 10:14

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.          

KalEl 24 de septiembre de 2017 22:30

Kuk, muchisimas gracias, al compilarlo estoy recibiendo los siguientes errores:
(seguramente estoy armando mal el proyecto en general)

Código:

Create Type Library for compilation...

Create H:\XXX\Red.cob...
Redexcel Redexcel-Opened(-3) : F5DC410305I-W There is no PROCEDURE DIVISION.
STATISTICS: HIGHEST SEVERITY CODE=W

Revise line information into H:\XXX\Red.cob ...
STATISTICS: HIGHEST SEVERITY CODE=I

Compile H:\XXX\Red.cob...
** DIAGNOSTIC MESSAGE ** (REDEXCEL)
Redexcel Redexcel-Opened(145) :  JMN1044I-S  The program contained within program 'POW-SCRIPTLET1' must end with an end program header. An end program header is assumed.
STATISTICS: HIGHEST SEVERITY CODE=S, PROGRAM UNIT=1

** The build has failed **


Kuk 24 de septiembre de 2017 22:43

KalEl, este programa no lo tienes que compilar en PowerCOBOL sino en NetCOBOL (Eclipse) porque es un programa Batch.

luisbago 20 de junio de 2022 16:42

algo parecido para rm/cobol, tengo el fd

JCantero 21 de junio de 2022 09:13

@luisbago, Si, puedes utilizar el ejemplo anterior (el fuente) lo modificas poniendo tu SELECT y FD para reemplazar (AR86-FILE) por el el tuyo.

Lo compilas en rmcobol y lo ejecutas.

jmeza 21 de junio de 2022 18:01

1 Archivos Adjunto(s)
KaIEI, este programa ejemplo te puede ayudar, leer un archivo .DAT y lo traspaso a TXT
slds

luisbago 23 de junio de 2022 18:01

1 Archivos Adjunto(s)
Cita:

Citación del post de JCantero (Mensaje 7925)
@luisbago, Si, puedes utilizar el ejemplo anterior (el fuente) lo modificas poniendo tu SELECT y FD para reemplazar (AR86-FILE) por el el tuyo.

Lo compilas en rmcobol y lo ejecutas.

Pues no pude, corregí varios errores pero me quedaron 2 y varios warnig, ya no se como corregir. :perdon:

mando cbl, fd.cbl y el lst


La franja horaria es GMT +2. Ahora son las 13:49.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.