Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Micro Focus COBOL (https://www.cobolforo.es/forumdisplay.php?f=12)
-   -   [Sintaxis] Grabar Archivo en Disco (https://www.cobolforo.es/showthread.php?t=1357)

jmeza 5 de agosto de 2021 04:23

Grabar Archivo en Disco
 
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.

Código COBOL:
  1.            SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED"
  2.                    ORGANIZATION IS LINE SEQUENTIAL
  3.                    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
Código COBOL:
  1.        SELECT PreviRed ASSIGN TO DISK WS-PREVIRED
  2.               ORGANIZATION IS LINE SEQUENTIAL
  3.               ACCESS SEQUENTIAL                  
  4.               FILE STATUS FILE-STATUS.
  5.  
  6.        FD  PreviRed LABEL RECORD OMITTED.
  7.        01  R-PreviRed.
  8.            02 FILLER          PIC X(2600).
  9.  
  10.        WORKING-STORAGE SECTION.
  11.        01  WS-PREVIRED.
  12.            02  WS-NOMARCH    PIC X(17).
  13.            02  WS-NOMARCH-R REDEFINES WS-NOMARCH.
  14.                03 WS-PREV    PIC X(04).
  15.                03 WS-EMP     PIC 9(03).      
  16.                03 WS-ANO     PIC 9(04).
  17.                03 WS-MES     PIC 9(02).
  18.                03 WS-EST     PIC X(04).
  19.  
  20.          PROCEDURE DIVISION.
  21.            MOVE "PREV"        TO WS-PREV
  22.            MOVE REM00-EMPRESA TO WS-EMP
  23.            MOVE REM00-ANO1    TO WS-ANO
  24.            MOVE REM00-MES1    TO WS-MES
  25.            MOVE ".TXT"        TO WS-EST
  26.            MOVE WS-NOMARCH    TO WS-PREVIRED  
  27.            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:

Código COBOL:
  1. SELECT PreviRed ASSIGN DISK "C:\INFORMES\WS-PREVIRED"
  2. ORGANIZATION IS LINE SEQUENTIAL
  3. FILE STATUS FILE-STATUS.

Pon esto:

Código COBOL:
  1. SELECT PreviRed ASSIGN DISK WS-PREVIRED
  2. ORGANIZATION IS LINE SEQUENTIAL
  3. FILE STATUS FILE-STATUS.


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

Código COBOL:
  1. WORKING-STORAGE SECTION.
  2. 01 fecha pic x(6).
  3. 01 WS-PREVIRED pic x(80).
  4.  
  5. *
  6. *
  7. *
  8.  
  9. PROCEDURE DIVISION.
  10.  
  11. accept fecha from time.
  12.  
  13. initialize  WS-PREVIRED.
  14.  
  15. string "C:\INFORMES"  delimited by size
  16.             fecha delimited by size into WS-PREVIRED
  17.  
  18.  
  19.  

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

Código COBOL:
  1. string "C:\INFORMES\fichero-"  delimited by size
  2.             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
Código COBOL:
  1.            SELECT PreviRed ASSIGN TO DISK WS-PREVIRED
  2.                    ORGANIZATION IS LINE SEQUENTIAL
  3.                    FILE STATUS FILE-STATUS.
  4.  
  5.  
  6.        WORKING-STORAGE SECTION.
  7.        01 WS-PREVIRED    PIC X(80).
  8.        01 NOMARCH.    
  9.            02 WS-NOMARCH PIC X(13).
  10.            02 WS-NOMARCH-R REDEFINES WS-NOMARCH.
  11.               03 WS-EMP  PIC 9(03).
  12.               03 WS-MES  PIC 9(02).
  13.               03 WS-ANO  PIC 9(04).
  14.               03 WS-EST  PIC X(04).
  15.  
  16.  
  17.        PROCEDURE DIVISION.
  18.            INITIALIZE WS-PREVIRED
  19.            MOVE REM00-EMPRESA TO WS-EMP
  20.            MOVE REM00-MES1    TO WS-MES
  21.            MOVE REM00-ANO1    TO WS-ANO
  22.            MOVE ".TXT"        TO WS-EST
  23.  
  24.            string "C:\INFORMES\PREVIRED-" delimited by size
  25.                  WS-NOMARCH(1:3) '-' WS-NOMARCH(4:2) '-'
  26.                  WS-NOMARCH(6:4)   WS-NOMARCH(10:4)
  27.                     delimited by size into WS-PREVIRED.
  28.      
  29.            OPEN OUTPUT PreviRed


La franja horaria es GMT +2. Ahora son las 01:47.

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