Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Ejecutar un programa RmCobol (https://www.cobolforo.es/showthread.php?t=136)

Recato53 17 de mayo de 2015 21:08

Ejecutar un programa RmCobol
 
Buenas tardes.

Estoy intentando ejecutar un programa RmCobol desde PowerCobol.

empleo el siguiente comando:

Código COBOL:
  1.         STRING "CMD /C START RUNCOBOL.EXE " DELIMITED BY SIZE
  2.                "PRMCOBOL.COB "  DELIMITED BY SIZE
  3.                INTO COMANDO.
  4.  
  5.         INVOKE POW-SELF "executesync" USING COMANDO POW-SWSHOWMAXIMIZED.

también empleo

Código COBOL:
  1.         INVOKE CmddE1 "Execute" using COMANDO POW-SWSHOWMAXIMIZED.

El problema que tengo es que mientras se este ejecutando el Programa RmCobol no quiero que se ejecute más programas de PowerCobol ni de RmCobol.

Muchas gracias.

Josber 18 de mayo de 2015 09:04

Es raro, porque Executesync, espera a que termine el programa llamado para devolver el control al programa llamador ... Has probado con CMD /K en vez de CMD /C, la diferencia entre uno y otro es que el primero ejecuta y finaliza y el segundo ejecuta y sigue.

Un saludo.-

Kuk 18 de mayo de 2015 09:57

Confirmo, que ExecuteSync ejecuta en Sincronizado - espera a que termine la ejecucion del llamado.

Recato53 18 de mayo de 2015 10:13

Acabo de encontrar la solución:

Código COBOL:
  1.         MOVE SPACES TO COMANDO
  2.         STRING "CMD /C RUNCOBOL.EXE " DELIMITED BY SIZE
  3.                "PRMCOBOL.COB "  DELIMITED BY SIZE
  4.                INTO COMANDO.
  5.        
  6.         INVOKE POW-SELF "executesync" USING COMANDO POW-SWHIDE
  7.        
  8.         INVOKE POW-SELF "CLOSEFORM".

Kuk 18 de mayo de 2015 13:03

Recato53, no entiendo que tiene que ver con tu pregunta inicial. POW-SWHIDE lo que hace es ejecutar en modo fantasma, no abre ventana (si no me equivoco)... Tu preguntabas por como ejecutar programa externo como en "CallForm" y no "OpenForm" de PowerCOBOL?! :yoquese:

Por cierto, usa los TAG-s, para COBOL hay un botoncito en el editor. ;)

Recato53 19 de mayo de 2015 10:41

Cita:

Citación del post de Recato53 (Mensaje 586)
Acabo de encontrar la solución:

Código COBOL:
  1.         MOVE SPACES TO COMANDO
  2.         STRING "CMD /C RUNCOBOL.EXE " DELIMITED BY SIZE
  3.                "PRMCOBOL.COB "  DELIMITED BY SIZE
  4.                INTO COMANDO.
  5.        
  6.         INVOKE POW-SELF "executesync" USING COMANDO POW-SWHIDE
  7.        
  8.         INVOKE POW-SELF "CLOSEFORM".


Con esta programación consigo ejecutar el programa en RmCobol y que no se pueda ejecutar nigún programa en PowerCobol. Ademas no parece la ventana NEGRA de MS/DOS.

Kuk 19 de mayo de 2015 13:25

Recato53, eeeso si! ;) Te aconsejo que añadas el codigo que te dejo abajo (mira los comentarios), para que el usuario vea que hay trabajao en curso y ademas no pueda hacer clock en el Form mientras que el programa RM esta trabajando:

Código COBOL:
  1. *--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
  2.      MOVE POW-FALSE   TO "Enabled"      OF POW-SELF
  3.      MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  4.      
  5.      MOVE SPACES TO COMANDO
  6.      
  7.      STRING "CMD /C RUNCOBOL.EXE PRMCOBOL.COB"
  8.          DELIMITED BY SIZE INTO COMANDO.
  9.        
  10.      INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE
  11.    
  12. *--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
  13.      MOVE POW-TRUE       TO "Enabled"      OF POW-SELF
  14.      MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF
  15.    
  16. *----------------------------------------------------
  17.      INVOKE POW-SELF "CloseForm".

Hrmcobol 19 de mayo de 2015 14:46

Muy Bueno!!. Gracias a los Dos. !!

Recato53 10 de agosto de 2015 13:36

Cita:

Citación del post de Kuk (Mensaje 589)
Recato53, eeeso si! ;) Te aconsejo que añadas el codigo que te dejo abajo (mira los comentarios), para que el usuario vea que hay trabajao en curso y ademas no pueda hacer clock en el Form mientras que el programa RM esta trabajando:

Código COBOL:
  1. *--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
  2.      MOVE POW-FALSE   TO "Enabled"      OF POW-SELF
  3.      MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  4.      
  5.      MOVE SPACES TO COMANDO
  6.      
  7.      STRING "CMD /C RUNCOBOL.EXE PRMCOBOL.COB"
  8.          DELIMITED BY SIZE INTO COMANDO.
  9.        
  10.      INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE
  11.    
  12. *--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
  13.      MOVE POW-TRUE       TO "Enabled"      OF POW-SELF
  14.      MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF
  15.    
  16. *----------------------------------------------------
  17.      INVOKE POW-SELF "CloseForm".

Después de ejecutar el Programa en RmCobol, cuando vuelve al formulario de PowerCobol, este se queda en la Barra de Herramientas y hay que pincharle para seguir trabajando con el resto de Formularios creados en PowerCobol. Com puedo solucionar este problema.

Muchas gracias.


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

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