Armando, no es la recursividad sino la multi-instancia. En realidad, si desde el principio establecemos el tipo de script a OO COBOL en la propiedades del módulo, permite multiinstancia. Pero al caso.
Sí que se puede saber, como decía
Rapinto. Un ejemplo simple:
Abres 2 Forms con 2 botones.
MainForm.CmCommand1.Click:
Código COBOL:
INVOKE POW-SELF "OpenForm" USING "Form1" 1 *> donde 1 es la ID de la cookie
MOVE POW-FALSE TO "Enabled" OF CmCommand1
MainForm.CmCommand2.Click:
Código COBOL:
INVOKE POW-SELF "OpenForm" USING "Form2" 2 *> donde 2 es la ID de la cookie
MOVE POW-FALSE TO "Enabled" OF CmCommand2
Ahora, en el evento "CloseChild" del MainForm haces:
Código COBOL:
LINKAGE SECTION.
01 POW-COOKIE PIC S9(9) COMP-5.
PROCEDURE DIVISION USING POW-COOKIE.
IF POW-COOKIE = 1
MOVE POW-TRUE TO "Enabled" OF CmCommand1
END-IF
IF POW-COOKIE = 2
MOVE POW-TRUE TO "Enabled" OF CmCommand2
END-IF
Y listo. Este es el mecanismo. A partir de esto, puedes hacer loq eu quieras, manejar variables EXTERNAL para saber en otros Forms también, si un Form está abuerto o no etc.