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
[Sintaxis] ODBC - cambiar el "path" de una base de datos Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 9 15 de noviembre de 2022 20:24
China quiere lanzar una "luna artificial" en 2020 Kuk Charladero - espacio libre 0 20 de octubre de 2018 21:52
[Sintaxis] Error MOVE "Parent" de un nodo "Root" en TreeView dmosca PowerCOBOL (ActiveX, v4 - v11) 1 23 de agosto de 2017 08:47
[Sintaxis] Filtro con CmEdit y evento "change" Roger PowerCOBOL (ActiveX, v4 - v11) 4 26 de febrero de 2017 14:09
[Sintaxis] Cambiar variable de entorno "Path" en ejecución Recato53 PowerCOBOL (ActiveX, v4 - v11) 7 10 de agosto de 2015 14:25

Respuesta
 
Herramientas

  #11
Antiguo 17 de enero de 2023, 13:27
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Josber Ver Mensaje
error LNK2001: unresolved external symbol _XXXXXXXXXXX

donde _XXXXXXXXXXX, es el nombre de la subrutina de la PROCEDURE donde están definidas esas variables.

¿Dónde puede estar el problema?
¿Estás respetando las minúsculas/mayúsculas? Alguna chorrada que se nos escapa por algún lado.



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
  #12
Antiguo 17 de enero de 2023, 19:44
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Kuk Ver Mensaje
¿Estás respetando las minúsculas/mayúsculas?
Bueno eso ya está solucionado, increíblemente, he borrado la librería, he hecho un re-build completo, la he vuelto a añadir, compilado otra vez y ... ¡¡ta-channnn!!, ya no ha dado el error. El problema que tengo ahora es que si hago ésto

Código COBOL:
  1. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 6
  2.                MOVE "Name" OF CAMPO (I) TO NOMBRE_CONTROL
  3. END-PERFORM.
  4.  
  5. move NOMBRE_CONTROL to COBJECT.
  6. CALL "POWERCONVTOCOM" USING COBJECT RETURNING OBJETO.

al ejecutar, me salta el error

JMP0221I-U CALL ERROR OCCURRED IN 'GET-hwnd' OF THE METHOD INVOCATION. 'NULL'

porque COBJECT, tiene valor 0, (NULL)

Sin embargo, si hago

Código COBOL:
  1. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 6
  2.                MOVE  CAMPO (I) TO COBJECT
  3. END-PERFORM.
  4.  
  5. CALL "POWERCONVTOCOM" USING COBJECT RETURNING OBJETO.

Funciona perfectamente, (aquí COBJECT, si que tiene un valor positivo), por lo visto, no se puede pasar el nombre a través de una variable, que es lo que necesito realmente, así que, de momento lo voy a dejar, porque no puedo pasar más tiempo con esto, lo haré manualmente de momento y más adelante, si puedo, lo retomaré.

muchas gracias.-
Josber is offline   Responder Con Cita
  #13
Antiguo 17 de enero de 2023, 20:21
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, sí es verdad, cuando añades algo de vez en cuando el cache no se refresa y el Build no lo toma en cuenta. Hay que hacer Rebuild.

El "Name" es una propiedad, como un campo del control (objeto), no tiene Handle (hwnd).

Si pasas por COM/OLE, para obtener Propiedades o ponerlas, es todo pasando por INVOKE OBJETO "[ación]-[nombre_propiedad]", donde ación es SET o GET y nombre_propiedad es cualquiera que tiene el componente, como hwnd, Name, Width etc.

Ejemplos:

Código COBOL:
  1.      ...
  2.      MOVE  CAMPO (I) TO COBJECT
  3.      ...
  4.      CALL "POWERCONVTOCOM" USING COBJECT RETURNING OBJETO.
  5.      
  6.      INVOKE OBJETO "GET-Name" RETURNING WS-NOMBRE
  7.      INVOKE OBJETO "GET-Text" RETURNING WS-CONTENIDO
  8.      
  9.      MOVE "Hola Josber" TO WS-CONTENIDO
  10.      
  11.      INVOKE OBJETO "SET-Text" USING WS-CONTENIDO
  12.      
  13.      invoke OBJETO "SetFocus"
  14.      invoke OBJETO "Refresh"



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
  #14
Antiguo 17 de enero de 2023, 22:18
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Hola Amigos: Estoy tratando de seguir el hilo de esta conversación y hay conceptos que no manejo. Están programando a un nivel que no domino.

Pero tratando de entender los que quieres @Josber es con la misma rutina poder manejar las propiedades de distintos controles pasando como parámetro el nombre del control.

El "Name" de un control es un string, no es un objeto, por eso no podés hacer esto
Código COBOL:
  1. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 6
  2.                MOVE "Name" OF CAMPO (I) TO NOMBRE_CONTROL
  3. END-PERFORM.
  4.  
  5. move NOMBRE_CONTROL to COBJECT.
  6. CALL "POWERCONVTOCOM" USING COBJECT RETURNING OBJETO.

COBJECT espera que le muevas un objeto no un string.

Ahora hacer

Código COBOL:
  1. MOVE CAMPO (I) TO COBJECT

en lugar de

Código COBOL:
  1. MOVE "Name" OF CAMPO (I) TO NOMBRE_CONTROL

Debería servirte lo mismo, porque en el "campo" COBJECT tendrías el objeto en cuestión. O seguramente algo se me está escapando.

Perdón por la ignorancia, pero es medio complicado para mi cabeza.

Saludos

Fito...
Fito is offline   Responder Con Cita
  #15
Antiguo 18 de enero de 2023, 09:00
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Fito, no se te escapa nada, llevas razón, es eso



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
  #16
Antiguo 18 de enero de 2023, 10:32
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

@Fito, Sí es correcto lo que dices pero, no he puesto que CAMPO (I), es el nombre de un control que está en array, por lo que "su 'Name'", es CAMPO(n), ése nombre es el que necesito mover a una variable porque, no sólo es el control CAMPO (I), hay más controles, como INFO (I), SUM (I), VIEW (I), etc.
Entonces, yo lo que quiero es ahorrar programación, imagina que quiero vaciar esos campos, (que no es el caso, porque es más complicado), tendría que hacer un MOVE SPACES a cada uno de esos controles, sin embargo, si puedo mover la propiedad Name a una variable y luego "referenciar" esa variable en el INVOKE, ahorraría líneas de código.

Si hago:

Código COBOL:
  1. MOVE CAMPO (I) TO COBJECT.

funciona perfectamente, pero si hago, (que es lo que necesito):

Código COBOL:
  1. MOVE "Name" OF CAMPO (I) TO NOMBRE_CONTROL.
  2. MOVE NOMBRE_CONTROL TO COBJECT.

ya no funciona, a pesar de que NOMBRE_CONTROL, contiene el valor correcto, en el primer caso COBJECT, tiene un valor positivo, pero en el segundo caso, COBJECT, tiene un valor 0, (nulo).

Espero que se entienda

Un salu2.-
Josber is offline   Responder Con Cita
  #17
Antiguo 18 de enero de 2023, 12:46
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, te estás liando yo creo

Posibilidad Nº1 utilizando OBJECT-REFERENCE nombre_de_la_clase:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  misTextBox.
  5.      05 miTextBox occurs 3 times OBJECT REFERENCE AMixed-DCmTextbox-Main-with-DCfGroupItem-Main.
  6.  
  7.  01  nombreTextBox pic x(20).
  8.  01  contenTextBox pic x(30).
  9.  01  idx           pic 9(4) comp-5.
  10.  PROCEDURE       DIVISION.
  11.      
  12.      move "Hola Josber"   to "Text" OF CmText1
  13.      move "Esta es la"    to "Text" OF CmText2
  14.      move "posibilidad 1" to "Text" OF CmText3
  15.          
  16.      move CmText1 to miTextBox(1)
  17.      move CmText2 to miTextBox(2)
  18.      move CmText3 to miTextBox(3)
  19.      
  20.      move 1 to idx
  21.      
  22.      perform until idx > 3
  23.          move "Name" OF miTextBox(idx) to nombreTextBox
  24.          move "Text" OF miTextBox(idx) to contenTextBox
  25.          
  26.          display "Nombre: " nombreTextBox "   contenido: " contenTextBox
  27.          
  28.          add 1 to idx
  29.      end-perform
  30.          

Posibilidad Nº2, pasando por COM/OLE:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  COBJECT         OBJECT REFERENCE POW-COBJECT.
  5.  
  6.  01  misTextBox.
  7.      05 miTextBox occurs 3 times OBJECT REFERENCE COM.
  8.      
  9.  01  nombreTextBox pic x(20).
  10.  01  contenTextBox pic x(30).
  11.  01  idx           pic 9(4) comp-5.
  12.  PROCEDURE       DIVISION.
  13.        
  14.      move "Hola Josber"   to "Text" OF CmText1
  15.      move "Esta es la"    to "Text" OF CmText2
  16.      move "posibilidad 2" to "Text" OF CmText3
  17.      
  18.      move CmText1 to COBJECT
  19.      CALL "POWERCONVTOCOM" USING COBJECT RETURNING miTextBox(1)
  20.      
  21.      move CmText2 to COBJECT
  22.      CALL "POWERCONVTOCOM" USING COBJECT RETURNING miTextBox(2)
  23.      
  24.      move CmText3 to COBJECT
  25.      CALL "POWERCONVTOCOM" USING COBJECT RETURNING miTextBox(3)
  26.      
  27.      move 1 to idx
  28.      
  29.      perform until idx > 3
  30.          invoke miTextBox(idx) "GET-Name" returning nombreTextBox
  31.          invoke miTextBox(idx) "GET-Text" returning contenTextBox
  32.          
  33.          display "Nombre: " nombreTextBox "   contenido: " contenTextBox
  34.          
  35.          add 1 to idx
  36.      end-perform
  37.      
  38.      



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
  #18
Antiguo 18 de enero de 2023, 15:23
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Holaaa:

Exacto @Kuk, hay que hacer un array de objetos, no un array de los name de los objetos.

Está muy buena tu idea @Josber, yo tengo en un método del formulario todos los move y se hace larga la programación

Saludos

Fito...
Fito is offline   Responder Con Cita
Respuesta



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 16:48.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.