0

![]() |
![]() |
Forero |
Hola colegas, necesito de vuestra ayuda.
Siempre he usado enla sentenciaCOBOL Código:
DECLARATIVESy a continuación la lista de archivos que usará el programa para evitar abortos provocados por errores imprevistos.COBOL Código:
USE AFTER ERROR PROCEDURE ON
COBOL Código:
USE AFTER ERROR PROCEDURE ON ARCHIVO1 ARCHIVO2.
Ahora tengo algunos programas que usan Excel o Word (total novedad para mi)
Todo funciona perfectamente siempre y cuando esten instalados, pero en caso de no estarlos (cosa rara), el programa aborta dando un error "Clase no registrada".
Mi pregunta es como puedo agregar un control mediante la sentencia USE, para poder controlar este error ademas de controlar los posibles errores que pudieran provocar los archivos.
Desde ya, muchas gracias.
![]() |
![]() |
Guardián del Foro |
Hola Gustavo.
Para la factura electrónica, uso un ocx de terceros. pero no lo incrusto en el formulario, lo instancio en tiempo de ejecución. Por eso uso el REPOSITORY con este código.
COBOL Código:
CLASS OLE AS "*OLE" CLASS EXCEP AS "*COM-EXCEPTION"
Despues a mi declaratives le agrego
COBOL Código:
err section. use after exception excep. invoke exception-object "GET-SOURCE" returning SRC. invoke exception-object "GET-DESCRIPTION" returning MSG. invoke pow-self "DisplayMessage" using MSG SRC POW-DMICONERROR. exit program.
Es lo único que tengo para ayudarte, no sé si se adecuará a lo tuyo.
Saludos...
Fito...
![]() |
![]() |
Forero |
No encaja exactamente en AcuCobol, pero gracias @Fito. en base a esto iré probando hasta que lo emboque.
![]() |
![]() |
Senior |
Hola @Gusaiello, te paso un ejemplo sacado del manual de cobol debe ser parecido en AcuCobol para el manejo de errores OLE.
Saludos ...COBOL Código:
IDENTIFICATION DIVISION. PROGRAM-ID. PROGRAM-A. ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. CLASS OLE AS "*OLE" CLASS OLE-EXCEPTION AS "*OLE-EXCEPTION". * : DATA DIVISION. WORKING-STORAGE SECTION. 01 OLE-SV-OBJ USAGE IS OBJECT REFERENCE OLE. 01 OLE-ERROR-INFORMATION. 03 OLE-ER-TYPE PIC X(01). 03 OLE-WCODE PIC X(02). 01 OLE-SERVER PIC X(20) VALUE "OLESERVER.OLECLASS". 01 METHOD-NAME PIC X(20) VALUE SPACE. 01 SERVER-PASSWORD PIC X(04). *: PROCEDURE DIVISION. DECLARATIVES. ERR SECTION. USE AFTER EXCEPTION OLE-EXCEPTION. INVOKE EXCEPTION-OBJECT "GET-ERROR-TYPE" RETURNING OLE-ER-TYPE. *> [1] IF OLE-ER-TYPE = "1" THEN DISPLAY "ERROR OCCURED IN " METHOD-NAME "METHOD" *> [2] SET OLE-SV-OBJ TO NULL. EXIT PROGRAM ELSE INVOKE EXCEPTION-OBJECT "GET-WCODE" RETURNING OLE-WCODE *> [3] IF OLE-WCODE NOT = X"0001" THEN *> [4] DISPLAY "ERROR OCCURED IN " METHOD-NAME "METHOD" SET OLE-SV-OBJ TO NULL. EXIT PROGRAM END-IF END-IF. END DECLARATIVES. : MOVE SPACE TO OLE-ER-TYPE. MOVE "CREATE-OBJECT" TO METHOD-NAME. INVOKE OLE "CREATE-OBJECT" USING OLE-SERVER *> [5] RETURNING OLE-SV-OBJ.
![]() |
![]() |
Forero |
@fastpho, excelente, muchas gracias.
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)