Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Leer variables en fichero COBOL85.CBR (https://www.cobolforo.es/showthread.php?t=714)

Joseg 31 de agosto de 2017 19:40

Leer variables en fichero COBOL85.CBR
 
Tenho varias variáveis de ambiente no cobol85.cbr do tipo

Código:

MYFILE1=C:\DATA\FILE001.DAT
MYFILE2=C:\DATA\FILE002.DAT
MYFILE3=C:\DATA\FILE003.DAT
...

é possível no cobol ler o conteúdo do que esta em MYFILE1, MYFILE2... ?

Gracias
Jose

Kuk 1 de septiembre de 2017 09:10

Joseg, si he entendido bien, quieres leer el contenido de los ficheros MYFILE1, MYFILE2 etc. ¿Qué formato tienen?

Joseg 1 de septiembre de 2017 10:13

Cita:

Citación del post de Kuk (Mensaje 3463)
Joseg, si he entendido bien, quieres leer el contenido de los ficheros MYFILE1, MYFILE2 etc. ¿Qué formato tienen?

En un programa / form tener acceso al contenido de las variables que se definen en el archivo cobol85.cbr.

Exemplo:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  Wmyfile1         PIC X(100).
  5.  PROCEDURE DIVISION.
  6.  
  7.     MOVE MYFILE1 TO Wmyfile1        
Ver en Wmyfile1: "C:\DATA\FILE001.DAT"

¿Esto es posible?

Yo sé que el cobol85.cbr es un archivo de texto y podría leer en "LINE SEQUENTIAL", pero tenía que estar siempre abriendo un archivo y cerrar siempre que fuera necesario .


Muitas gracias

Kuk 1 de septiembre de 2017 11:49

Joseg, yo no veo ningún problema.

En la WORKING del Form defines:
Código COBOL:
  1.  01  GLB-FILE001   IS GLOBAL PIC X(256).
  2.  01  GLB-FILE002   IS GLOBAL PIC X(256).
  3.  01  GLB-FILE003   IS GLOBAL PIC X(256).

En el evento "Opened" lees tu fichero COBOL85.CBR y alimentas los campos GLB-*. Así durante la ejecución del Form siempre tendrás disponibles los Path hacía tus ficheros de configuración.

Si quieres recuperar el contenido de estos ficheros, después de recuperar sus Path, léelos también en el mismo evento "Opened" y guarda su contenido en variables globales, que deberás definir en el mismo sitio (WORKING del Form).

Joseg 1 de septiembre de 2017 12:59

Cita:

Citación del post de Kuk (Mensaje 3465)
Joseg, yo no veo ningún problema.

En la WORKING del Form defines:
Código COBOL:
  1.  01  GLB-FILE001   IS GLOBAL PIC X(256).
  2.  01  GLB-FILE002   IS GLOBAL PIC X(256).
  3.  01  GLB-FILE003   IS GLOBAL PIC X(256).

En el evento "Opened" lees tu fichero COBOL85.CBR y alimentas los campos GLB-*. Así durante la ejecución del Form siempre tendrás disponibles los Path hacía tus ficheros de configuración.

Si quieres recuperar el contenido de estos ficheros, después de recuperar sus Path, léelos también en el mismo evento "Opened" y guarda su contenido en variables globales, que deberás definir en el mismo sitio (WORKING del Form).



Creo que no esta a entender.
El archivo cobol85.cbr es el archivo de configuración del tiempo de ejecución de FujitsuCobol (runtime).
Me gustaría tener acceso al valor de las Variables de este archivo sin tener que hacer:

Código COBOL:
  1. select xpto assign to "cobol85.cbr"
  2.   organization is line sequencial
  3.   access sequential
  4.   status sss
  5. ...
  6. fd xpto.
  7. 01 registo pic x(100).
  8. ...
  9. procedure division.
  10.  
  11. open input xpto
  12.  
  13. read xpto at end ...
  14.  
  15. move registo to xxxxxxxxx
  16.  
  17. *>Procesar aquí el registro...

No sé si conoce todas las potencialidades de este archivo, pero podemos entre muchas otras cosas definir el nombre de los archivos de forma dinámica sin tener que compilar la aplicación.
Por ejemplo:

Código COBOL:
  1. Select myfile assing to infile.

En el archivo cobol85.cbr
Código:

Infile = c: \ data \ mydata.dat
por ejemplo.
Quiero sólo en tiempo de ejecución ver lo que está registrado en "infile".


Gracias

Kuk 1 de septiembre de 2017 13:37

Joseg, entonces ¿lo que quieres es evitar hacer lectura por COBOL?

Si es eso, puedes usar un TextBox mulilínea desmarcando "Visible", y hacerle:

Código COBOL:
  1.      INVOKE CmEdit1 "LoadFile" USING "COBOL85.CBR"

Y luego moverlo a una variable WORKING y hacer un bucle para buscar la(s) línea(s) que necesitas.

Puedes sacarlo a una rutina.

Rapinto 1 de septiembre de 2017 19:01

Joseg,
Penso que percebi o que pretendes.

Tens que definir em Special Names:
Código COBOL:
  1.          ENVIRONMENT-NAME IS ENV-NAME
  2.          ENVIRONMENT-VALUE IS ENV-VALUE.

Em seguida, na Procedure Division fazes:

Código COBOL:
  1.     MOVE "MyFILE1"  TO VARNAME.
  2.     DISPLAY VARNAME UPON ENV-NAME.
  3.     ACCEPT  TEXTO FROM ENV-VALUE.
  4.     MOVE TEXTO TO "CAPTION" OF CMSTATIC1.

Espero que ajude
Um abraço,
Rui Pinto

Joseg 1 de septiembre de 2017 19:44

Cita:

Citación del post de Rapinto (Mensaje 3469)
Joseg,
Penso que percebi o que pretendes.

Tens que definir em Special Names:
Código COBOL:
  1.          ENVIRONMENT-NAME IS ENV-NAME
  2.          ENVIRONMENT-VALUE IS ENV-VALUE.

Em seguida, na Procedure Division fazes:

Código COBOL:
  1.     MOVE "MyFILE1"  TO VARNAME.
  2.     DISPLAY VARNAME UPON ENV-NAME.
  3.     ACCEPT  TEXTO FROM ENV-VALUE.
  4.     MOVE TEXTO TO "CAPTION" OF CMSTATIC1.

Espero que ajude
Um abraço,
Rui Pinto

É exactamente isso que estava procurando. Eu já usava essa técnica para ler variaveis de ambiente do sistema operativo, não sabia que para o cobol85.cbr era igual.

Muito obrigado a todos os que tentaram ajudar


La franja horaria es GMT +2. Ahora son las 14:04.

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