Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   AcuCobol (https://www.cobolforo.es/forumdisplay.php?f=23)
-   -   [Sintaxis] USE AFTER ERROR ...... (https://www.cobolforo.es/showthread.php?t=1440)

Gusaiello 21 de febrero de 2022 12:00

USE AFTER ERROR ......
 
Hola colegas, necesito de vuestra ayuda.
Siempre he usado en
Código COBOL:
  1. DECLARATIVES
la sentencia
Código COBOL:
  1. USE AFTER ERROR PROCEDURE ON
y a continuación la lista de archivos que usará el programa para evitar abortos provocados por errores imprevistos.
Código COBOL:
  1. 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.

Fito 21 de febrero de 2022 13:38

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.

Código COBOL:
  1.      CLASS OLE AS "*OLE"
  2.      CLASS EXCEP AS "*COM-EXCEPTION"

Despues a mi declaratives le agrego

Código COBOL:
  1.        err section.
  2.            use after exception excep.
  3.            invoke exception-object "GET-SOURCE"      returning SRC.
  4.            invoke exception-object "GET-DESCRIPTION" returning MSG.
  5.            invoke pow-self "DisplayMessage" using MSG SRC POW-DMICONERROR.
  6.            exit program.

Es lo único que tengo para ayudarte, no sé si se adecuará a lo tuyo.

Saludos...

Fito...

Gusaiello 21 de febrero de 2022 13:45

No encaja exactamente en AcuCobol, pero gracias @Fito. en base a esto iré probando hasta que lo emboque.

fastpho 21 de febrero de 2022 14:01

Detectar Error durante ejecucion *OLE
 
Hola @Gusaiello, te paso un ejemplo sacado del manual de cobol debe ser parecido en AcuCobol para el manejo de errores OLE.
Código COBOL:
  1.  
  2. IDENTIFICATION DIVISION.
  3. PROGRAM-ID. PROGRAM-A.
  4. ENVIRONMENT DIVISION.
  5. CONFIGURATION SECTION.
  6. REPOSITORY.
  7. CLASS OLE AS "*OLE"
  8. CLASS OLE-EXCEPTION AS "*OLE-EXCEPTION".
  9. * :
  10. DATA DIVISION.
  11. WORKING-STORAGE SECTION.
  12. 01 OLE-SV-OBJ USAGE IS OBJECT REFERENCE OLE.
  13. 01 OLE-ERROR-INFORMATION.
  14.       03 OLE-ER-TYPE PIC X(01).
  15.       03 OLE-WCODE PIC X(02).
  16. 01 OLE-SERVER PIC X(20) VALUE "OLESERVER.OLECLASS".
  17. 01 METHOD-NAME PIC X(20) VALUE SPACE.
  18. 01 SERVER-PASSWORD PIC X(04).
  19. *:
  20. PROCEDURE DIVISION.
  21. DECLARATIVES.
  22. ERR SECTION.
  23. USE AFTER EXCEPTION OLE-EXCEPTION.
  24. INVOKE EXCEPTION-OBJECT "GET-ERROR-TYPE"
  25. RETURNING OLE-ER-TYPE. *> [1]
  26. IF OLE-ER-TYPE = "1"
  27. THEN
  28. DISPLAY "ERROR OCCURED IN " METHOD-NAME "METHOD" *> [2]
  29. SET OLE-SV-OBJ TO NULL.
  30. EXIT PROGRAM
  31. ELSE
  32. INVOKE EXCEPTION-OBJECT "GET-WCODE"
  33. RETURNING OLE-WCODE *> [3]
  34. IF OLE-WCODE NOT = X"0001"
  35. THEN *> [4]
  36. DISPLAY "ERROR OCCURED IN " METHOD-NAME "METHOD"
  37. SET OLE-SV-OBJ TO NULL.
  38. EXIT PROGRAM
  39. END-IF
  40. END-IF.
  41. END DECLARATIVES.
  42. :
  43. MOVE SPACE TO OLE-ER-TYPE.
  44. MOVE "CREATE-OBJECT" TO METHOD-NAME.
  45. INVOKE OLE "CREATE-OBJECT" USING OLE-SERVER *> [5]
  46. RETURNING OLE-SV-OBJ.
Saludos ...

Gusaiello 22 de febrero de 2022 17:04

@fastpho, excelente, muchas gracias.


La franja horaria es GMT +2. Ahora son las 13:03.

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