Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Limites tamaño ficheros indexados FabioYeyo PowerCOBOL (ActiveX, v4 - v11) 14 17 de mayo de 2017 15:08
[Herramienta] Trabajar con ficheros PowerCOBOL desde PHP Fito PowerCOBOL (ActiveX, v4 - v11) 4 9 de febrero de 2017 09:25
[Compilador] Deterioro ficheros Windows 8.1 PowerCobol V9.0 Fihassin PowerCOBOL (ActiveX, v4 - v11) 7 7 de noviembre de 2016 21:47
[Noticia] Velocidad y rendimiento: BBDD/Ficheros Indexados Kuk COBOL - General 6 5 de abril de 2016 11:29
[Componente] Ficheros *.OCB de PowerCOBOL v3 Kuk PowerCOBOL v3 (V3L10, Win32) 6 4 de junio de 2015 20:05

Respuesta

  #1
Antiguo 9 de mayo de 2017, 00:03
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 21.09.2026 18:39
Posts Posts: 402
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179
PC Powercobol búsqueda lenta ficheros indexados LAN
0 Inactivo Inactivo

Algunas rutinas de búsqueda en PowerCOBOL (busqueda incremental, indexed file), que están recibiendo muy lento cuando se ejecuta en un PC cliente que accede a una carpeta compartida en el servidor.
Me gustaría poder hacer esto procesamiento de búsqueda (u otra acción) en el servidor y volver a la PC cliente sólo el resultado. En Fujitsu Cobol existe el recurso Inter-application Communication Function" (cobol - sample29), pero no parece practico teniendo en cuenta que tengo que configurar los ajustes manualmente en todos los PCs. ¿Hay alguna alternativa (algo parcido con el cliente / servidor).

Gracias
Joseg is offline   Responder Con Cita
  #2
Antiguo 9 de mayo de 2017, 09:08
Kuk
Administrador
Última Actividad 21.09.2026 18:24
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Joseg, puedes crear un "Listener" / "Daemon" y ejecutarlo en servidor. Luego se puede montar un mecanismo por ficheros temporales, o más limpio pero más complicado con MSWINSCK.OCX (socket).



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 10 de mayo de 2017, 10:40
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 21.09.2026 18:39
Posts Posts: 402
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Citación del post de Kuk Ver Mensaje
Joseg, puedes crear un "Listener" / "Daemon" y ejecutarlo en servidor. Luego se puede montar un mecanismo por ficheros temporales, o más limpio pero más complicado con MSWINSCK.OCX (socket).
No sé si puede ayudar. En el evento "DataArrival" (en el servidor), no recibe una cadena como fue enviada por el cliente.
He hecho varios cambios, pero sin éxito.

Gracias
Archivos Adjuntos
Tipo de Archivo: rar ClientServerPPJ.rar (10,4 KB)Descargas: 209
Joseg is offline   Responder Con Cita
  #4
Antiguo 10 de mayo de 2017, 13:16
Kuk
Administrador
Última Actividad 21.09.2026 18:24
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Joseg, parece ser problema de codificación de caracteres. He hecho pruebas, con los valores numéricos en campos binarios (COMP-5) todo funciona bien. El WinSock parece trabajar con strings de UNICODE. Creoq ue el problema viene de ahí. Seguiré investigando.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #5
Antiguo 10 de mayo de 2017, 16:17
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 21.09.2026 18:39
Posts Posts: 402
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Citación del post de Kuk Ver Mensaje
Joseg, parece ser problema de codificación de caracteres. He hecho pruebas, con los valos numéricos en campos binarios (COMP-5) todo funciona bien. El WinSock parece trabajar con strings de UNICODE. Creoq ue el problema viene de ahí. Seguiré investigando.
"Retrieves the current block of data and stores it in a variable of type variant." - Microsoft

El problema esta en la definición de una variable tipo "variante" cosa que el Powercobol no soporta.
Si funcionara resolvía mi problema.

Tengo que buscar otra alternativa.
Joseg is offline   Responder Con Cita
  #6
Antiguo 10 de mayo de 2017, 17:09
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Usa archivos secuenciales con directiva BSAM, es muy rápido.

La idea es utilizar estos archivos como si fueran "vistas", como tablas view en SQL Server, habría que estar actualizando sus datos desde sus ficheros de origen, no es necesario sacar todos los datos del archivo, solo con los datos que se vayan a mostrar en una tabla.

Hay que tener en cuenta que los controles de Windows, si tienen repintado de datos al tiempo que guardan líneas con datos, relantiza el proceso de generación de la consulta, hay que evitar este detalle, pero aún si, el control en concreto puede crear relantización por su programación.

No es lo mismo leer un archivo indexao a pelo desde una ventana consola de NetCOBOL que en el mismo PowerCOBOL, hay una gran diferencia, prueba de ello, los controles de Windows relantizan la lectura, y más aún si utilizan el método Thruevents para evitar que la ventana se quede congelada.

Salduos.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita
  #7
Antiguo 10 de mayo de 2017, 21:24
Kuk
Administrador
Última Actividad 21.09.2026 18:24
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Joseg, ¡¡¡lo he conseguido!!!

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  power_socket.png
Vistas: 220
Tamaño:  28,2 KB  
Archivos Adjuntos
Tipo de Archivo: rar SOCKET.rar (121,6 KB)Descargas: 198



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #8
Antiguo 10 de mayo de 2017, 21:57
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

Me dejais anonadado, mañana le echare un vistazo. Cuanto queda por aprender, me da miedo
Nitzer is offline   Responder Con Cita
  #9
Antiguo 11 de mayo de 2017, 09:28
Kuk
Administrador
Última Actividad 21.09.2026 18:24
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Nitzer, ¡viva el REDEFINES! En realidad lo que hice fue redefinir el string en un array de Integers:

Entonces en el cliente hago:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  wsmsg        pic x(24).
  5.  01  FILLER REDEFINES wsmsg.
  6.      05  wsINT OCCURS 6 TIMES PIC S9(9) COMP-5.
  7.  01  IDX-1        PIC S9(4)  COMP-5.
  8.  PROCEDURE       DIVISION.
  9.  
  10.      move "Text" OF CmText1 to wsmsg
  11.      
  12.      IF  "State" OF Winsock1 =  7
  13.          MOVE 1 TO IDX-1
  14.          
  15.          PERFORM UNTIL IDX-1 > 6        
  16.              INVOKE Winsock1 "SendData" USING wsINT(IDX-1)
  17.              
  18.              ADD 1 TO IDX-1
  19.          END-PERFORM
  20.      END-IF  

Y en el servidor:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  wsmsg        pic x(24).
  5.  01  FILLER REDEFINES wsmsg.
  6.      05  wsINT OCCURS 6 TIMES PIC S9(9) COMP-5.
  7.  01  IDX-1        PIC S9(4)  COMP-5.
  8.  LINKAGE         SECTION.
  9.  01  POW-ARG-BYTESTOTAL PIC S9(9) COMP-5.
  10.  PROCEDURE       DIVISION USING POW-ARG-BYTESTOTAL.
  11.  
  12.      MOVE 1 TO IDX-1
  13.          
  14.          PERFORM UNTIL IDX-1 > 6        
  15.              INVOKE Winsock1 "GetData" USING wsINT(IDX-1) 3
  16.              
  17.              ADD 1 TO IDX-1
  18.          END-PERFORM
  19.          
  20.      MOVE wsmsg TO "Caption" OF CmStatic9  

Joseg, según he visto, todos los tipos derivan del Variant:

Código VB:
  1. Public Const vbArray   As Microsoft.VisualBasic.VariantType = 8192
  2. Public Const vbBoolean As Microsoft.VisualBasic.VariantType = 11
  3. Public Const vbByte    As Microsoft.VisualBasic.VariantType = 17
  4. Public Const vbDate    As Microsoft.VisualBasic.VariantType = 7
  5. Public Const vbDecimal As Microsoft.VisualBasic.VariantType = 14
  6. Public Const vbLong    As Microsoft.VisualBasic.VariantType = 20
  7. Public Const vbString  As Microsoft.VisualBasic.VariantType = 8
  8. Public Const vbLong    As Microsoft.VisualBasic.VariantType = 20
  9. Public Const vbInteger As Microsoft.VisualBasic.VariantType = 3
  10. Public Const vbSingle  As Microsoft.VisualBasic.VariantType = 4

Seguro que el "String" tiene su TypeDef que se compone por campos nativos, pero no he encontrado la información necesaria, así que pensé en el REDEFINES.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #10
Antiguo 11 de mayo de 2017, 10:28
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 21.09.2026 18:39
Posts Posts: 402
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

¡Fantastico !!! Con esta técnica tal vez pueda resolver otros problemas que he tenido con otros OCX.
Joseg is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:57.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.