Ver la Versión Completa : [Sintaxis] Traspaso de valor en variable entre 2 Forms
jmeza
23 de marzo de 2018, 01:04
Hola, me pueden ayudar con esto
Necesito traspasar un valor de una variable en un Call a otro programa
cual seria su programación en powercobolv9
de envió y recepción en el programa destino
por ejemplo en Rmcobol lo hacia asi:
envío
call "lisorden" USING T-NUMORDE cancel "lisorden".
Recepción
LINKAGE SECTION.
77 T-NUMORDE PIC 9(05).
Saludos
JCantero
23 de marzo de 2018, 02:41
El ejemplo que especificas es na llamada a un programa cobol en rmcobol
Y en cualquier tipo de cobol funciona igual.
otra cosa seria llamar a un programa NO cobol.
es ese tu problema ?
Josber
23 de marzo de 2018, 12:01
Si es de un programa PWC a otro PWC, en la WORKING de ambos form, (no la del evento), define la variable como GLOBAL EXTERNAL, con eso bastaría, recuerda que se han de llamar igual en ambos form y tener la misma PICTURE.
Un saludo.-
jmeza
23 de marzo de 2018, 16:35
Alo mejor me exprese mal, es llevar en una variable un valor form1 (origen) a form2 (destino)
donde form2 recepciona ese código.
Es uno modulo de ordenes de compra que estoy emigrando a powercobol
donde el form2 ejecuta la impresión de ese registro.
Voy a probar con el dato que me envió Josber
Un saludo
Josber
24 de marzo de 2018, 22:16
Voy a probar con el dato que me envió Josber
Un saludo
jmeza, si te funciona o es lo que querías, dilo para marcar el post como solucionado y cuál ha sido la mejor solución.
Un saludo.-
Gatomalo
25 de marzo de 2018, 00:05
01 datos GLOBAL EXTERNAL.
02 nro-factura PIC 9(6).
PROCEDURE.
MOVE 1245 TO NRO-FACTURA
Usa una variable global y puedes pasar a cualquier form
en el form que emites la factura pones esas variables en la working.
datos a considerar esa variable nro-factura no puedes usar en ningún form como una variable común te compilara pero en el
momento de ejecución te enviara error en cobol y se cierra el proyecto.
Kuk
26 de marzo de 2018, 13:37
datos a considerar esa variable nro-factura no puedes usar en ningún form como una variable común te compilara pero en el
momento de ejecución te enviara error en cobol y se cierra el proyecto.
Esta parte no la he entendido. No debe dar error ninguno, una variable EXTERNAL la puedes usar en cualquier Form donde esté declarada.
Da error si el tipo o el tamaño no son iguales en todas la declaraciones.
Fito
26 de marzo de 2018, 14:02
Hola:
Lo que quiere decir Gatomalo, es que si una variable es external, solamente se puede usar de esa manera, si definimos otra con el mismo nombre y no external da error.
Saludos.
Fito...
jmeza
27 de marzo de 2018, 02:34
La solución fue GLOBAL EXTERNAL
Agradecido.
Estimados tengo otra duda como solucionar algo similar a lo anterior, pero de Pawercobol a Cobol
Como estoy emigrando todo de Rmcobol85 a Powercobolv9
Y mis reportes están en Cobol con Cobview
INVOKE el reporte que necesito desde un Form
INVOKE pow-self "executesync" USING "Runcobol lisorden.cob".
Pero necesito que lleve una variable con un valor para que el programa receptor
Ejecute el reporte Ejemplo: Nro_factura
Un amigo hace un tiempo me dio la solución que creara un archivo y grabara el valor
El programa receptor lee la variable del archivo y ejecuta el programa.
Esto funciona ok, pero es algo adicional que hay que hacer.
Si alguien sabe de alguna solución para que me diga cómo hacerlo
Así me evite de hacer los reportes de nuevo
Saludos
Fito
27 de marzo de 2018, 03:28
Hola:
Si usas cobview para hacer los listados, pasa el programa de rm a power y listo, lo llamás con un call.
Saludos.
Fito...
lfortuny
13 de noviembre de 2018, 11:05
Buenos días.
Tengo una serie de variables definidas como GLOBAL EXTERNAL.
Cargo los valores en un programa, llamo a otro y en este segundo al abrir, antes de hacer nada, muestro las variables GLOBAL EXTERNAL y algunas han perdido el valor. Cuando regreso al programa llamador, los valores de las variables siguen con su valor.
¿Me podrían ayudar con alguna idea para poder saber qué está pasando?, ¿por que algunas pierden su valor? ¿quizás usar 'cbl_alloc_mem'? (aunque no encuentro ningún programa de ejemplo de como usarla)
He revisado que no estén definidas en alguna working excepto la principal, no se inicializan,....
Gracias de antemano....
Josber
13 de noviembre de 2018, 11:14
lfortuny,
Las defines en ambos programas en la WORKING "Global", no en la WORKING del evento o del control, ¿no?
Un saludo.-
Armando
13 de noviembre de 2018, 20:24
La solución fue GLOBAL EXTERNAL
Agradecido.
Estimados tengo otra duda como solucionar algo similar a lo anterior, pero de Pawercobol a Cobol
Como estoy emigrando todo de Rmcobol85 a Powercobolv9
Y mis reportes están en Cobol con Cobview
INVOKE el reporte que necesito desde un Form
INVOKE pow-self "executesync" USING "Runcobol lisorden.cob".
Pero necesito que lleve una variable con un valor para que el programa receptor
Ejecute el reporte Ejemplo: Nro_factura
Un amigo hace un tiempo me dio la solución que creara un archivo y grabara el valor
El programa receptor lee la variable del archivo y ejecuta el programa.
Esto funciona ok, pero es algo adicional que hay que hacer.
Si alguien sabe de alguna solución para que me diga cómo hacerlo
Así me evite de hacer los reportes de nuevo
Saludos
Hola ,
seria :
Pasaje de par*metros externos a los programas:
a)
linkage section.
01 var-param.
03 largo-param pic 9(4) binary.
03 texto-param.
05 filler pic x occurs 1 to 100
depending on largo-param.
PROCEDURE DIVISION using var-param.
En este caso se recibe un texto de hasta 100 caracteres que se
puede manejar moviendolo a otro campo por ej:
if largo-param not < 4
move texto-param(1:largo-param) to clavepan
El llamado del programa en DOS es el siguiente:
RUNCOBOL INT0001 A="01"
donde lo que va entre comillas es el campo de 0 a 100 posiciones.
b) se pueden con la misma filosof¡a traer variables de ambiente.
Podr¡amos por ejemplo cargar en una variable de ambiente (USUARIO)
el usuario de una red y la estaci¢n en la cual trabaja(PS)
el llamado ser¡a el siguiente:
RUNCOBOL PRUEBA A="%USUARIO%,%PS%"
dentro del programa el par*metro se toma como uno, igual al ejemplo
anterior, pero buscamos los 2 par*metros que est*n separados por
comas con el comando UNSTRING.
UNSTRING TEXTO-PARAM DELIMITED BY "," INTO
QUIEN, DONDE
espero que te sirva,
saludos
Armando
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.