PDA

Ver la Versión Completa : [Sintaxis] Ejecutar un programa RmCobol


Recato53
17 de mayo de 2015, 21:08
Buenas tardes.

Estoy intentando ejecutar un programa RmCobol desde PowerCobol.

empleo el siguiente comando:

STRING "CMD /C START RUNCOBOL.EXE " DELIMITED BY SIZE
"PRMCOBOL.COB " DELIMITED BY SIZE
INTO COMANDO.

INVOKE POW-SELF "executesync" USING COMANDO POW-SWSHOWMAXIMIZED.

también empleo

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:

MOVE SPACES TO COMANDO
STRING "CMD /C RUNCOBOL.EXE " DELIMITED BY SIZE
"PRMCOBOL.COB " DELIMITED BY SIZE
INTO COMANDO.

INVOKE POW-SELF "executesync" USING COMANDO POW-SWHIDE

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
Acabo de encontrar la solución:

MOVE SPACES TO COMANDO
STRING "CMD /C RUNCOBOL.EXE " DELIMITED BY SIZE
"PRMCOBOL.COB " DELIMITED BY SIZE
INTO COMANDO.

INVOKE POW-SELF "executesync" USING COMANDO POW-SWHIDE

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:


*--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
MOVE POW-FALSE TO "Enabled" OF POW-SELF
MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

MOVE SPACES TO COMANDO

STRING "CMD /C RUNCOBOL.EXE PRMCOBOL.COB"
DELIMITED BY SIZE INTO COMANDO.

INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE

*--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
MOVE POW-TRUE TO "Enabled" OF POW-SELF
MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF

*----------------------------------------------------
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
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:


*--> BLOQUEAMOS VENTANA, PUNTERO DE ESPERA
MOVE POW-FALSE TO "Enabled" OF POW-SELF
MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF

MOVE SPACES TO COMANDO

STRING "CMD /C RUNCOBOL.EXE PRMCOBOL.COB"
DELIMITED BY SIZE INTO COMANDO.

INVOKE POW-SELF "ExecuteSync" USING COMANDO POW-SWHIDE

*--> DESBLOQUEAMOS VENTANA, PUNTERO POR DEFECTO
MOVE POW-TRUE TO "Enabled" OF POW-SELF
MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF

*----------------------------------------------------
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.