0

![]() |
![]() |
Junior |
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.
COBOL Código:
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 RMCOBOL85SaludosCOBOL Código:
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
![]() |
![]() |
Senior |
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:COBOL Código:
SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED" ORGANIZATION IS LINE SEQUENTIAL FILE STATUS FILE-STATUS.
Pon esto:COBOL Código:
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:COBOL Código:
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:COBOL Código:
string "C:\INFORMES\fichero-" delimited by size fecha(1:2) '-' fecha (3:2) '-' fecha (5:2) delimited by size into WS-PREVIRED
![]() |
![]() |
Junior |
JCantero, Gracias por tu ayuda
Esta es el Código Cobol que me dio resultadoCOBOL Código:
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
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)
Marcadores