@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:
CODE Código:
CONVF001 "fichero.dat;fichero_salida.csv"
COBOL Código:
IDENTIFICATION DIVISION.
PROGRAM-ID. CONVAR86.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT AR86-FILE
ASSIGN TO ZZZ-AR86
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS RE-CO86
ALTERNATE RECORD RE-DE86 WITH DUPLICATES
FILE STATUS IS SW-FS.
SELECT TXT-FILE
ASSIGN TO ZZZ-TXT
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS IS SW-FS.
DATA DIVISION.
FILE SECTION.
FD AR86-FILE.
01 RE-AR86.
02 RE-CO86 PIC 9999.
02 RE-DE86 PIC X(25).
02 RE-AMPLI86 PIC X(30).
FD TXT-FILE.
01 RE-TXT PIC X(62). *> campos entrada + los ";"
WORKING-STORAGE SECTION.
01 SW-FS PIC X(2).
88 SW-FS-OK VALUE '00' '02' '05'.
88 SW-FS-EOF VALUE '10'.
01 ZZZ-AR86 PIC X(50).
01 ZZZ-TXT PIC X(50).
01 CNT-1 PIC S9(9) COMP-5.
01 CNT-2 PIC S9(9) COMP-5.
LINKAGE SECTION.
01 CMD-LINE.
05 CMD-LENGTH PIC S9(4) COMP-5.
05 CMD-CONTENT PIC X(100).
PROCEDURE DIVISION USING CMD-LINE.
DECLARATIVES.
ERR SECTION.
USE AFTER ERROR PROCEDURE ON AR86-FILE.
END DECLARATIVES.
IF CMD-LENGTH = 0
DISPLAY "No hay parametros en entrada. EXIT"
GOBACK
END-IF
UNSTRING CMD-CONTENT DELIMITED BY ";"
INTO ZZZ-AR86, ZZZ-TXT
DISPLAY "Fichero AR86: " ZZZ-AR86
DISPLAY "Fichero TXT : " ZZZ-TXT
PERFORM ABRIR-FICHEROS
PERFORM READ-AR86
PERFORM UNTIL SW-FS-EOF
STRING RE-CO86 ";"
RE-DE86 ";"
RE-AMPLI86 ";"
DELIMITED BY SIZE INTO RE-TXT
WRITE RE-TXT
IF SW-FS-OK
ADD 1 TO CNT-2
ELSE
DISPLAY "ERROR WRITE TXT, FS: " SW-FS
GO TO 9999-ABEND
END-IF
PERFORM READ-AR86
END-PERFORM
DISPLAY "Registros leidos AR86 : " CNT-1
DISPLAY "Registros escritos TXT: " CNT-2
CLOSE AR86-FILE, TXT-FILE
DISPLAY "Tratamiento de datos OK"
GOBACK
.
ABRIR-FICHEROS.
OPEN INPUT AR86-FILE
IF NOT SW-FS-OK
DISPLAY "ERROR OPEN AR86, FS: " SW-FS
GOBACK
END-IF
OPEN OUTPUT TXT-FILE
IF NOT SW-FS-OK
DISPLAY "ERROR OPEN TXT, FS: " SW-FS
GOBACK
END-IF
.
READ-AR86.
READ AR86-FILE
IF SW-FS-OK
ADD 1 TO CNT-1
ELSE
IF NOT SW-FS-EOF
DISPLAY "ERROR READ AR86, FS: " SW-FS
GOBACK
END-IF
END-IF
.
9999-ABEND.
DISPLAY "ABEND - exit"
CLOSE AR86-FILE, TXT-FILE
MOVE 8 TO RETURN-CODE
GOBACK
.
Marcadores