Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL y COM/OLE (https://www.cobolforo.es/forumdisplay.php?f=32)
-   -   [Sintaxis] Como descifrar valores de COM-EXCEPTION (https://www.cobolforo.es/showthread.php?t=104)

Kuk 18 de abril de 2015 19:15

Como descifrar valores de COM-EXCEPTION
 
Siempre me ha interesado el tema, ya que uso COM/OLE de vez en cuando para generar archivos EXCEL y otras cosas (como crear instancias de clases CodeJock).

Lo que no me queda claro es como saber los valores que devuelve COM-EXCEPTION. Segun mis observaciones, cada objeto tiene diferentes errores, y se necesitan campos de diferente congitud para recibir los errores.

Pues eso, a ver que sabeis del tema amigos.

:hi:

Rapinto 20 de abril de 2015 00:47

Kuk,

Será isto que pretendes???
Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.  01  LINHA                          PIC X(1024).
  3.  01  OLE-ERR-METHOD                 PIC X(256).
  4.  01  OLE-ERR-INFO.                                                
  5.     03  OLE-ERR-TYPE                  PIC X(001).                          
  6.     03  OLE-ERR-WCODE                 PIC X(002).                          
  7.     03  ROLE-ERR-WCODE REDEFINES OLE-ERR-WCODE  PIC S9(04) COMP-5.
  8.     03  OLE-ERR-SCODE                 PIC X(004).                          
  9.     03  ROLE-ERR-SCODE REDEFINES OLE-ERR-SCODE PIC S9(09) COMP-5.
  10.  
  11. PROCEDURE DIVISION.
  12.  DECLARATIVES.                                              
  13.  OLE-ERRO SECTION.                                          
  14.     USE AFTER EXCEPTION OLE-EX.                          
  15.             INVOKE EXCEPTION-OBJECT "GET-ERROR-TYPE"              
  16.                  RETURNING OLE-ERR-TYPE.  
  17.     IF OLE-ERR-TYPE = "1"                                
  18.             INVOKE EXCEPTION-OBJECT "GET-SCODE"  RETURNING ROLE-ERR-SCODE                
  19.             INVOKE EXCEPTION-OBJECT "GET-SCODE-TEXT"   RETURNING LINHA                        
  20.             MOVE LINHA TO OLE-ERR-METHOD                  
  21. ******** MOVE POW-FALSE TO "xlFileStatus" OF POW-SELF
  22. ********  MOVE 0 TO "MousePointer" OF POW-SELF
  23. ********  MOVE "N" TO FILEOPEN
  24.             GO TO MAIN-99-EXIT
  25.        ELSE                                              
  26.             INVOKE EXCEPTION-OBJECT "GET-WCODE"  RETURNING OLE-ERR-WCODE                
  27.             INVOKE EXCEPTION-OBJECT "GET-SCODE"    RETURNING OLE-ERR-SCODE                
  28. *****       MOVE 0 TO "MousePointer" OF POW-SELF.
  29. *****       MOVE "N" TO FILEOPEN
  30.             GO TO MAIN-99-EXIT.
  31.  END DECLARATIVES.

Espero que te ajude.
Saludos,
Rui Pinto

Kuk 20 de abril de 2015 09:44

Rapinto, si a eso me refiero. Pero funciona igual para todos los objetos COM? O dependiendo del objeto la estructura OLE-ERR-INFO varia?

Rapinto 20 de abril de 2015 12:54

Kuk,

Nos testes que fiz, as Declarativas devolvem sempre naquele formato:
- Um código de Erro
- Um texto do Erro
Pode é ser um tipo de erro "S" ou um tipo de erro "W".

Os códigos de Erro são difíceis de encontrar. O que vou fazendo, é provocar o erro de propósito, em cada INVOKE, e ver qual o numero que devolve e qual o texto.

Saludos,
Rui A. Pinto

Kuk 20 de abril de 2015 13:07

Rapinto, cual es la diferencia ente S y W? SIempre devuelve ambos o solo puede haber 1 infromado?

Yo recuerdo que hice unas pruebas (no me acuerdo con que objeto), y ahi no me devolvia ni codigo ni texto... Aunque utilizaba la misma estructura que tu. Puede ser que algun objeto no tenga codigo de errores? Me pareceria muy extraño si no los tuviera!!!

Existen codigos genericos? Tipo "Clase inexistente" y similares, o cada objeto tiene sus propios codigos y textos (si es que los tiene) ?

Ah, otra cosa. Hay alguna diferencia entre si declaras como COM:

Código COBOL:
  1.  CLASS COM AS "*COM".

Y si declaras como OLE:

Código COBOL:
  1.  CLASS COM AS "*OLE".

Porque ambos funcionan bien, pero no se si hay una diferencia.

Rapinto 20 de abril de 2015 18:36

1 Archivos Adjunto(s)
Kuk,

Object Linking and Embedding = OLE2

Component Object Model = COM

Em Fujitsu COBOL não há diferença nenhuma. Fazem exatamente a mesma coisa.

Anexo uma "pequena" !!!! lista de alguns dos erros.
Saludos,
Rui


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

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