Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] respecto a GLOBAL EXTERNAL (https://www.cobolforo.es/showthread.php?t=1462)

Socavi 6 de abril de 2022 13:48

respecto a GLOBAL EXTERNAL
 
Tengo un problema al mover una variable declarada como GLOBAL EXTERNAL, con el mismo nombre y valor

En el programa A introduzco el valor " fecha" a la variable y llamo al programa B en el que al solicitar el valor de la veriable declarada en A, no me da ningun resultado.

Cómo hay que 'decíselo' ?:hincha:

fastpho 6 de abril de 2022 16:25

Ejemplo para compartir variables entre programas . Declarar las variables en WORKING del mainform.

Program A

Código COBOL:
  1. DATA-WORKING-STORAGE
  2.  01  PROCESO-FECHA  IS EXTERNAL GLOBAL.
  3.      03 FED-DD    PIC 99.
  4.      03 FED-MM  PIC 99.
  5.      03 FED.
  6.           05 FED-SG  PIC 99.
  7.           05 FED-AA  PIC 99.
  8. PROCEDURE       DIVISION.
  9.           MOVE  06 TO FED-DD.
  10.           MOVE  04 TO FED-MM.
  11.           MOVE  20 TO FED-SG.
  12.           MOVE  22 TO FED-AA.

Program B

Código COBOL:
  1. DATA-WORKING-STORAGE
  2.  01  PROCESO-FECHA  IS EXTERNAL GLOBAL.
  3.      03 FED-DD    PIC 99.
  4.      03 FED-MM  PIC 99.
  5.      03 FED.
  6.           05 FED-SG  PIC 99.
  7.           05 FED-AA  PIC 99.
Opened del mainform
Código COBOL:
  1.      display "Fecha Proceso" , FED-DD , FED-MM , FED.

Saludos....

JCantero 6 de abril de 2022 17:05

Yo en RM Cobol lo hago igual pero sin GLOBAL.

En los programas que declaro la variable external asi

Código COBOL:
  1.        01 codigo pic x(12) external.
tiene el mismo valor.

fastpho 6 de abril de 2022 18:45

Hola @JCantero, la declaración GLOBAL es para poder usar esa variable en cualquier section del programa
Saludos.....

Socavi 6 de abril de 2022 19:51

Muchas gracias, @fastpho y @JCantero, se pueden manejar estas variables con los tradicionales MOVE , para situarlas donde decidimos, o solo son visibles con el display ?

Mañana hare las pruebas necesarias para comprobar si las puedo manejar a mi necesidad o necesito un empujon mas.

fastpho 6 de abril de 2022 19:55

Hola @Socavi, podes darle el uso como a cualquier variable declarada y usar las instrucciones o verbos que quieras .
Saludos ...

JCantero 6 de abril de 2022 21:56

Cita:

Citación del post de fastpho (Mensaje 7668)
Hola @Socavi, podes darle el uso como a cualquier variable declarada y usar las instrucciones o verbos que quieras .
Saludos ...

Al tener el mismo nombre y misma dimensión es la misma variable en todo el programa y puedes utilizarla en cualquier sitio.

Yo por ejemplo las utilizo mucho para pasar información de un programa a otro sin utilizar parámetros entre programas. De esta forma puedes simular la "sobrecarga de funciones" que tienen lenguajes de programación avanzados y base de datos (c++, c#, java, postgressql [estos son los que conozco y utilizo habitualmente])

---------- Post añadido el 6 de abril de 2022 a las 21:59 ----------

Cita:

Citación del post de fastpho (Mensaje 7666)
Hola @JCantero, la declaración GLOBAL es para poder usar esa variable en cualquier section del programa
Saludos.....

Yo hace mucho tiempo que no utilizo secciones.

Antes lo utilizaba por el tema de memoria, pero ahora las he suprimido.

Kuk 6 de abril de 2022 22:58

Cita:

Citación del post de JCantero (Mensaje 7669)
Antes lo utilizaba por el tema de memoria

A ver a ver, interesante esto lo que dices. Cuenta cuenta :piensa:

fastpho 6 de abril de 2022 23:08

@JCantero, en powercobol 5.0 que es el que utilizo no podes utilizar una variable que no fue declarada GLOBAL en cualquier parte del programa , en cambio si la declaro GLOBAL la puedo llamar o utilizar desde cualquier parte del programa un boton un procedure un label desde cualquier componente etc
Saludos......

Socavi 23 de abril de 2022 22:30

Amigos, he descubierto casuísticamente un problema, inédito, en este, probablemente último programa a realizar y que me ha tenido muy ocupado buscando y probando diferentes alternativas, total ha sido una constante en los programas que he realizado, el declarar las variables en grupo, me explico:, debajo de la declaraciión:
Código COBOL:
  1. 01 variables global. luego
  2.       02 tal    pic 9(2).
  3.       02 otra pic xx.
  4.       etc, etc

pues tengo un programa que funciona, asi en grupo, sin problema, pero con las variables global external y será casualidad, pero coincide con el cambio de sistema operativo a Windows 11, que por ése motivo, me daba el inexplicable error 22829.
Una vez modificada la declaración en la Working, he podido continuar sin problemas y en esto ando metido.

Gracias a todos los que han intentado ayudarme y aqui dejo mi testimonio, por si con ello puedo ayudar a alguien que se encuentre en una situación parecida.


La franja horaria es GMT +2. Ahora son las 05:27.

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