PDA

Ver la Versión Completa : [Sintaxis] Grabar Archivo en Disco


jmeza
5 de agosto de 2021, 04:23
Hola, me podrían ayudar como se hace para grabar un archivo en disco en una carpeta direccionada desde el programa.

Al definir de esta manera funciona, pero el nombre se graba como tal WS-PREVIRED
sin agregar lo demás AÑO, MES, etc.

SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS FILE-STATUS.

Lo que necesito es agregar algunos datos como la fecha cuando se genero el archivo
esto funciona pero me deja grabado el archivo donde están todos los programas del sistema
es complicado por que el usuario estaría entrando a la carpeta donde están todos los programs para rescatar el archivo.

Esta rutina la tengo en RMCOBOL85

SELECT PreviRed ASSIGN TO DISK WS-PREVIRED
ORGANIZATION IS LINE SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS FILE-STATUS.

FD PreviRed LABEL RECORD OMITTED.
01 R-PreviRed.
02 FILLER PIC X(2600).

WORKING-STORAGE SECTION.
01 WS-PREVIRED.
02 WS-NOMARCH PIC X(17).
02 WS-NOMARCH-R REDEFINES WS-NOMARCH.
03 WS-PREV PIC X(04).
03 WS-EMP PIC 9(03).
03 WS-ANO PIC 9(04).
03 WS-MES PIC 9(02).
03 WS-EST PIC X(04).

PROCEDURE DIVISION.
MOVE "PREV" TO WS-PREV
MOVE REM00-EMPRESA TO WS-EMP
MOVE REM00-ANO1 TO WS-ANO
MOVE REM00-MES1 TO WS-MES
MOVE ".TXT" TO WS-EST
MOVE WS-NOMARCH TO WS-PREVIRED
OPEN OUTPUT PreviRed

Saludos

JCantero
5 de agosto de 2021, 12:04
El problema lo tienes en que debes de poner una variable al describir el fichero en vez de un literal. Y rellenar la variable en tiempo de ejecución con el contenido deseado.

Cambia esto SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED" por WS-PREVIRED Y rellena el nombre de fichero deseado en esa variable antes de hacer el open.

O prueba esto..........

En vez de poner esto:


SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED"
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS FILE-STATUS.


Pon esto:


SELECT PreviRed ASSIGN DISK WS-PREVIRED
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS FILE-STATUS.



Y antes de hacer el OPEN, rellena el nombre de fichero. Por ejemplo:


WORKING-STORAGE SECTION.
01 fecha pic x(6).
01 WS-PREVIRED pic x(80).

*
*
*

PROCEDURE DIVISION.

accept fecha from time.

initialize WS-PREVIRED.

string "C:\INFORMES" delimited by size
fecha delimited by size into WS-PREVIRED






O rellenar el nombre del fichero con algo parecido a esto:


string "C:\INFORMES\fichero-" delimited by size
fecha(1:2) '-' fecha (3:2) '-' fecha (5:2) delimited by size into WS-PREVIRED

jmeza
9 de agosto de 2021, 02:08
JCantero, Gracias por tu ayuda
Esta es el Código Cobol que me dio resultado

SELECT PreviRed ASSIGN TO DISK WS-PREVIRED
ORGANIZATION IS LINE SEQUENTIAL
FILE STATUS FILE-STATUS.


WORKING-STORAGE SECTION.
01 WS-PREVIRED PIC X(80).
01 NOMARCH.
02 WS-NOMARCH PIC X(13).
02 WS-NOMARCH-R REDEFINES WS-NOMARCH.
03 WS-EMP PIC 9(03).
03 WS-MES PIC 9(02).
03 WS-ANO PIC 9(04).
03 WS-EST PIC X(04).


PROCEDURE DIVISION.
INITIALIZE WS-PREVIRED
MOVE REM00-EMPRESA TO WS-EMP
MOVE REM00-MES1 TO WS-MES
MOVE REM00-ANO1 TO WS-ANO
MOVE ".TXT" TO WS-EST

string "C:\INFORMES\PREVIRED-" delimited by size
WS-NOMARCH(1:3) '-' WS-NOMARCH(4:2) '-'
WS-NOMARCH(6:4) WS-NOMARCH(10:4)
delimited by size into WS-PREVIRED.

OPEN OUTPUT PreviRed