Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] ODBC - cambiar el "path" de una base de datos Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 9 15 de noviembre de 2022 20:24
[Duda] Call "CFURCOV" System error occurred. code = 0x25 dmosca PowerCOBOL (ActiveX, v4 - v11) 19 6 de agosto de 2019 15:29
China quiere lanzar una "luna artificial" en 2020 Kuk Charladero - espacio libre 0 20 de octubre de 2018 21:52
[Sintaxis] Error MOVE "Parent" de un nodo "Root" en TreeView dmosca PowerCOBOL (ActiveX, v4 - v11) 1 23 de agosto de 2017 08:47
[PowerCOBOL] CALL de cualquier DLL sin *.LIB ni "LoadLibrary" Kuk Cocina PowerCOBOL 20 29 de julio de 2017 23:33

Respuesta
 
Herramientas

  #1
Antiguo 30 de septiembre de 2022, 20:12
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Predeterminado No funciona EXIT PROGRAM después de un "SetFocus"
0 Inactivo Inactivo

A ver, supongamos que en el evento "opened" de un Form, tenemos algo así

"opened"

Código COBOL:
  1. CALL "COMPROBAR".

y en la Sub-Rutina "COMPROBAR", tenemos

Código COBOL:
  1. IF VALOR_N = 1
  2.    CALL "VALOR-BAJO"
  3.    INVOKE BOTON1 "SetFocus"
  4.    EXIT PROGRAM
  5. END-IF.

y en la Sub-Rutina "VALOR-BAJO", tenemos

Código COBOL:
  1. IF IMPORTE < 1000
  2.    INVOKE BOTON2 "SetFocus"
  3.    EXIT PROGRAM
  4. END-IF.

Resulta que, en la rutina VALOR-BAJO, si el importe es < 1000, no me "ejecuta" el foco y el EXIT PROGRAM, por lo que, vuelve a la instrucción siguiente a CALL "VALOR-BAJO" de la rutina COMPROBAR, y ahí si me ejecuta el foco correctamente y "se va" a BOTON1, yo quiero que, independientemente del valor que tenga VALOR_N, si IMPORTE es menor de 1000, como le indico en VALOR-BAJO, que el foco lo recoja BOTON2.

Obviamente, no son así las sentencias auténticas pero, es que las puestas, tampoco funcionan bien. En el montón de programas que tengo escritos, no me había pasado esto nunca, instrucciones tan simples como estas, siempre me han funcionado correctamente. Por si preguntáis, Win10 X64 virtualizado, con PWC9 y los Runtime del PWC10, aunque es lo mismo, con otros programas y esta configuración, funciona correctamente

No sé si me explico correctamente.
Josber is offline   Responder Con Cita
  #2
Antiguo 30 de septiembre de 2022, 21:38
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Hola @Josber, de la forma que esta planteado , si haces un display sobre el boton2 en la Evento "GotFocus" seguro paso por ahi y se fue ..
Yo lo que haria seria el Sub-Rutina "VALOR-BAJO" decida para donde ir
Código COBOL:
  1.        IF IMPORTE < 1000 THEN
  2.           INVOKE BOTON2 "SetFocus"
  3.           EXIT PROGRAM
  4.        ELSE
  5.           INVOKE BOTON1 "SetFocus"
  6.           EXIT PROGRAM
  7.        END-IF.  
es decir y NO Sub-Rutina "COMPROBAR"
Código COBOL:
  1. IF VALOR_N = 1
  2.    CALL "VALOR-BAJO"
  3. *   INVOKE BOTON1 "SetFocus" *>ESTO NO
  4. *   EXIT PROGRAM
  5. END-IF.
Saludos...
fastpho is offline   Responder Con Cita
  #3
Antiguo 30 de septiembre de 2022, 23:17
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Hola:

De acuerdo a tu rutina @Josber, pase lo que pase, siempre el foco va a quedar en BOTON1.

El EXIT PROGRAM sale del prg donde está la instrucción, yo creo que vos lo querés usar para que salga del Opened.

Como bien dice @fastpho, el foco pasa por BOTON2, pero el flujo del programa sigue, porque el EXIT PROGRAM de "VALOR-BAJO" termina con la ejecución de "VARLOR-BAJO" solamente.

Espero haber sido claro. Cómo docente no soy muy bueno.

Saludos

Fito...
Fito is offline   Responder Con Cita
  #4
Antiguo 1 de octubre de 2022, 13:07
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

A ver, es un ejemplo creado "al vuelo", realmente, el original, lo que hace es llamar a la SUB1, la SUB1, llama a la SUB2, y la SUB2, debería salirse a un control específico con un EXIT PROGRAM, pero no lo hace, devuelve el controla la SUB1 y continua ejecutando ésta, yo lo que quiero es que en ciertas condiciones, se salga de la SUB2, sin más, dándole el foco al control pertinente. El caso es que en otro programas, lo tengo hecho de manera similar, y funciona a la perfección, pero aquí no funciona y, no sé si es fallo mío, porque estoy algo "espesillo" y no veo el problema o es otra cosa.

Mil gracias.-
Josber is offline   Responder Con Cita
  #5
Antiguo 2 de octubre de 2022, 00:37
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, lo que dices no se puede hacer. Como dice el amigo @Fito, el EXIT PROGRAM sólo termina el "script" en cuestión que se está ejecutando, devolviendo el control al "script" llamante. Esto lo que quiere decir es que tienes que organizar la lógica de tal manera que el foco se decida al mismo nivel y no en modo "escalera". Por ejemplo que el SUB2 haga un RETURNING y según el RC sea el SUB1 el que ponga el foco en Botón1 o Botón2.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #6
Antiguo 2 de octubre de 2022, 11:44
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Kuk Ver Mensaje
Esto lo que quiere decir es que tienes que organizar la lógica de tal manera que el foco se decida al mismo nivel y no en modo "escalera" ...
¡¡Oñoooo!!, pues voy a mirar en otros programas como lo tengo hecho, porque, yo creo que lo tengo de la manera que digo, a ver si es que estoy equivocado

Graciassssss
Josber is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:54.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.