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
[Componente] Mejor opcion para editar datos en una grilla dmosca PowerCOBOL (ActiveX, v4 - v11) 13 8 de noviembre de 2021 00:21
[Sintaxis] Cancelar proceso en bucle desde otro Form Fito PowerCOBOL (ActiveX, v4 - v11) 2 29 de agosto de 2017 00:58
[Duda] Crear nuevo proceso Nitzer PowerCOBOL (ActiveX, v4 - v11) 1 8 de junio de 2016 16:53
[Sintaxis] Ejecutar despues de un proceso Roger PowerCOBOL (ActiveX, v4 - v11) 1 25 de marzo de 2015 00:29
[Sintaxis] Botón derecho del ratón Josber PowerCOBOL (ActiveX, v4 - v11) 4 12 de febrero de 2015 16:29

Respuesta
 
Herramientas

  #1
Antiguo 25 de junio de 2024, 16:19
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 Opción de BOTÓN CANCELAR un proceso a medias
0 Inactivo Inactivo

Todos usamos una instrucción PERFORM para llenar una tabla, leer un fichero, actualizar, etc., me guastaría poder poner un botón que cancele ese PERFORM en el momento que desees antes de que termine el proceso, (tipo a como aparece cuando haces un listado con POWERForm), ¿alguien puede iluminarme si se puede hacer de alguna manera?

Muchas gracias.-
Josber is offline   Responder Con Cita
  #2
Antiguo 25 de junio de 2024, 20:21
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, se me ocurre algo así:

En la Working Global:
Código COBOL:
  1.  01  GLB-CANCEL        PIC X(1).

En el evento "Click" del botón Cancelar:
Código COBOL:
  1.      MOVE "S" TO GLB-CANCEL

En tu bucle haces lo siguiente:
Código COBOL:
  1.      MOVE "N" TO GLB-CANCEL
  2.      
  3.      PERFORM UNTIL ... OR GLB-CANCEL NOT = "N"
  4.         *> tratamiento existente          
  5.  
  6.          INVOKE POW-SELF "ThruEvents" *> IMPORTANTE! Si no lo haces, el botón Cancelar estará bloqueado, vamos, todo el Form
  7.      END-PERFORM
  8.      
  9.      IF  GLB-CANCEL NOT = "N"
  10.          INVOKE POW-SELF "DisplayMessage" USING "El proceso ha sido cancelado." 48
  11.      
  12.      ELSE
  13.         *> Tratamiento actual
  14.      END-IF    



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
  #3
Antiguo 26 de junio de 2024, 16:14
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

@Kuk, algo así había pensado, el problema está en que, sólo tengo la opción de cancelar. Al "disparar" el evento "click" del botón que ponga, ya no puedo "volver" al mismo punto en que se pulsó ese botón si por un casual, he pulsado por error.

Un salu2.-
Josber is offline   Responder Con Cita
  #4
Antiguo 26 de junio de 2024, 20:59
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, estas cosas se gestionan mediante COMMIT y ROLLBACK si estás con SQL. Si estás con ficheros, se puede guardar el último registro tratado (su clave por ejemplo) en una variable global también y cosas por el estilo.



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
  #5
Antiguo 27 de junio de 2024, 15:48
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:

Sin probar nada, pero se me ocurre que en vez de poner la condición de fallo en el perform, hagas dentro de él en un IF y ahi podés preguntar si continúa o no.

Saludos..

Fito...
Fito is offline   Responder Con Cita
  #6
Antiguo 27 de junio de 2024, 15:54
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

@Fito, eso no puede hacerse, en cuanto haces click en el botón, "pierdes el foco" de la rutina en la que estás, y tendrías que volver a la rutina y empezar de nuevo, no sé si me explico.
Éste fin de semana, haré la prueba de lo que me comentó @Kuk, a ver si funciona.

Un salu2.-
Josber is offline   Responder Con Cita
  #7
Antiguo 24 de octubre de 2025, 11:41
lumalma
Forero Junior
Última Actividad 13.08.2026 16:57
Posts Posts: 25
Likes enviados Enviados: 7
Likes recibidos Recibidos: 3

Hola

Retomo este tema y tengo la siguiente consulta.

En un form tengo un botón con el que lanzo un proceso y quiero poner un botón que cancele dicho proceso.

El proceso es complicado con lecturas de un fichero de cabeceras y a partir de cada registro se leen las registros de líneas. Se hacen una serie de cálculos y se actualizan los registros de ambos ficheros. Además se generan dos ficheros secuenciales con los datos de los ficheros de cabeceras y líneas. Para realizar los cálculos y otros subprocesos se llaman rutinas del form mediante CALL.

La cuestión es que aunque ponga el método ThruEvents casi párrafo a párrafo y haga click en el botón de cancelación del proceso veo que debo clickar varias veces hasta que consigo que se ejecute el evento click y pueda parar el proceso. He hecho diferentes pruebas, incluso con un form que contenga el botón de cancelación siguiendo lo visto en otro post pero no encuentro la solución.

Agradeceré cualquier ayuda.

Un saludo
lumalma is offline   Responder Con Cita
  #8
Antiguo 24 de octubre de 2025, 20:14
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@lumalma, cuando haces varios clic, te da la impresión que funciona con varios pero en realidad el que hace el trabajo es el primero que simplemente se retrasa.

Tu problema tiene solución, y es esta: Multihilo (Thread) en PowerCOBOL - Cobol Foro



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
  #9
Antiguo 30 de octubre de 2025, 19:04
lumalma
Forero Junior
Última Actividad 13.08.2026 16:57
Posts Posts: 25
Likes enviados Enviados: 7
Likes recibidos Recibidos: 3

@Kuk, le echaré un vistazo.

Muchas gracias
lumalma 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:55.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.