Ver Mensaje Individual
  #1
Antiguo 12 de marzo de 2015, 00:54
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224
Guiño Llamada a SpellCheck de Word (correc. ortográfico)
3 Inactivo Inactivo

Exemplo de como chamar o SpellCheck do Word para verificar texto numa CMtext1 de Cobol.
É necessário ter o MS Office instalado com correção actuvada.

Código COBOL:
  1.  @OPTIONS NOALPHA                                                                                            
  2.  IDENTIFICATION DIVISION.                                                                                    
  3.  PROGRAM-ID.   CHECKSPELLING.                                                                                
  4.  ENVIRONMENT DIVISION.                                                                                      
  5.  CONFIGURATION SECTION.                                                                                      
  6.  REPOSITORY.                                                                                                
  7.         CLASS OLE     AS "*OLE"                                                                              
  8.         CLASS OLE-EX AS "*OLE-EXCEPTION".                                                                  
  9.  DATA DIVISION.                                                                                              
  10.  WORKING-STORAGE SECTION.                                                                                    
  11.  01  WORD         OBJECT REFERENCE  OLE.                                                                    
  12.  01  DOCUMENT     OBJECT REFERENCE  OLE.                                                                    
  13.  01  ACTIVEDOCUMENT OBJECT REFERENCE  OLE.                                                                  
  14.  01  LINHA        OBJECT REFERENCE  OLE.                                                                    
  15.  01  SELECTION    OBJECT REFERENCE  OLE.                                                                    
  16.  01  APPLICATION                    PIC X(20) VALUE "Word.Application".                                      
  17.  01  OLE-TRUE                       PIC 1(1)  BIT VALUE B"1".                                                
  18.  01  FILLER                         PIC 1(7)  BIT.                                                          
  19.  01  OLE-FALSE                      PIC 1(1)  BIT VALUE B"0".                                                
  20.  01  FILLER                         PIC 1(7)  BIT.                                                          
  21.  01  CRLF                           PIC X(002) VALUE X"0D0A".                                                
  22.  01  VAL                            PIC X(256).                                                              
  23.  01  S-INDEX                        PIC S9(4) COMP-5 VALUE 0.                                                
  24.  01  HWND                              BINARY-LONG.                                                          
  25.  01  WINDOWNAME                     PIC X(128) VALUE SPACE.                                                  
  26.  01  WINDOWCLASSE                   BINARY-LONG VALUE ZERO.                                                  
  27.  LINKAGE SECTION.                                                                                            
  28.  01  TEXTO                          PIC X(256).                                                              
  29.  01  CARACTERES                     PIC 9(008).                                                              
  30.  PROCEDURE DIVISION USING TEXTO CARACTERES.                                                                  
  31.  MAIN SECTION.                                                                                              
  32.  MAIN-00.                                                                                                    
  33.      MOVE 1 TO CARACTERES.                                                                                  
  34.      IF TEXTO = SPACE GO TO MAIN-99.                                                                        
  35.      INVOKE OLE "CREATE-OBJECT" USING APPLICATION RETURNING WORD.                                            
  36.      INVOKE WORD  "SET-VISIBLE"  USING OLE-FALSE.                                                            
  37.      INVOKE WORD "GET-DOCUMENTS"       RETURNING DOCUMENT.                                                  
  38.      INVOKE DOCUMENT "ADD"             RETURNING ACTIVEDOCUMENT.                                            
  39.      INVOKE WORD "GET-SELECTION" RETURNING LINHA.                                                            
  40. *                                                                                                            
  41.      MOVE TEXTO TO VAL.                                                                                      
  42.      INVOKE LINHA "TYPETEXT" USING VAL.                                                                      
  43. *                                                                                                            
  44.      INVOKE LINHA "WholeStory" RETURNING SELECTION.                                                          
  45.      INVOKE WORD  "SET-VISIBLE"  USING OLE-TRUE.                                                            
  46. *    INVOKE LINHA     "WholeStory" RETURNING SELECTION.                                                      
  47. *    INVOKE LINHA     "COPY" RETURNING VAL.                                                                  
  48.                                                                                                            
  49. *    MOVE "Ortografia: Português (Portugal)"   TO WINDOWNAME.                                                
  50.      MOVE "Documento1 - Word"                  TO WINDOWNAME.                                                
  51.      MOVE X"00"        TO WINDOWNAME(18:1).                                                                  
  52. *                                                                                                            
  53.      CALL "FindWindowA" WITH STDCALL USING                                                                  
  54.                            BY VALUE WINDOWCLASSE                                                            
  55.                            BY REFERENCE WINDOWNAME                                                          
  56.                         RETURNING HWND.                                                                      
  57.      IF HWND > 0 THEN                                                                                        
  58.           CALL "SetForegroundWindow" WITH STDCALL USING                                                      
  59.                            BY VALUE HWND.                                                                    
  60. *                                                                                                            
  61.      INVOKE ACTIVEDOCUMENT "CheckSpelling" RETURNING VAL.                                                    
  62. *                                                                                                            
  63.      INVOKE LINHA "GET-TEXT" RETURNING VAL.                                                                  
  64.      INSPECT VAL REPLACING ALL  X"0D" BY SPACE.                                                              
  65.      INSPECT VAL REPLACING ALL  X"0A" BY SPACE.                                                              
  66.      MOVE 256 TO CARACTERES.                                                                                
  67.  MAIN-50.                                                                                                    
  68.      IF VAL(CARACTERES:1) = SPACE GO TO MAIN-60.                                                            
  69.      GO TO MAIN-80.                                                                                          
  70.  MAIN-60.                                                                                                    
  71.      IF CARACTERES NOT = 1 SUBTRACT 1 FROM CARACTERES GO TO MAIN-50.                                        
  72.  MAIN-80.                                                                                                    
  73.      ADD 1 TO CARACTERES.                                                                                    
  74.      MOVE    VAL TO TEXTO.                                                                                  
  75.        INVOKE ACTIVEDOCUMENT "CLOSE" USING S-INDEX.                                                            
  76.      INVOKE WORD  "QUIT".                                                                                    
  77.      SET LINHA    TO NULL.                                                                                  
  78.      SET DOCUMENT TO NULL.                                                                                  
  79.      SET ACTIVEDOCUMENT TO NULL.                                                                            
  80.        SET WORD     TO NULL.                                                                                  
  81.  MAIN-99.                                                                                                    
  82.  END PROGRAM CHECKSPELLING.                                                                                  

PS: Deve ser alterado o nome da form do Word para o caso particular (Documento1 - Word).
Se não abre mas fica por tras da nossa form.

Espero que seja útil a alguém.

Saludos Rui Pinto
Rapinto is offline   Responder Con Cita