Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL v3 (V3L10, Win32)
PowerCOBOL v3 (V3L10, Win32) IDE Freeware compatible con Windows 7/8/10/11
 
Respuesta

  #1
Antiguo 10 de mayo de 2015, 22:46
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207
Arrow RETURNING en llamadas WinAPI en PowerCOBOL v3
0 Inactivo Inactivo

Amigos, ultimamente me he aficionado al PowerCOBOL 3 para mis cosillas en el trabajo porque se puede usar las aplicaciones como portables. Mi pregunta es la siguiente:

Se puede hacer llamadas a WinAPI, esto lo tengo seguro porque ya lo he probado y funciona. El problema que tengo que es no encuentro un equivalente a la palabra reservada RETURNING para PowerCOBOL v3. Y la verdad es que no estoy seguro si se necesita o no, porque normalmente todas las llamadas WinAPI sea devuelven un Integer, sea un Pointer. Y ese valor de retorno esta en PROGRAM-STATUS. Pero en caso de que realmente sea necesario, cual es (si existe) el equivalente a RETURNING?



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
  #2
Antiguo 11 de mayo de 2015, 23:03
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

Kuk,

Nunca tinha usado o PowerCobol 3.

Instalei agora, quando colocaste esta pergunta. (Fez-me lembrar o VISUAL OBJECT COBOL da MicroFOCUS, na primeira versão á 10 anos atrás ..!!!!).

Pelo que eu tenho conhecimento, o RETURNING deveria existir em todos os CALL's.
Nos manuais, falam no CALL ..USING .... RETURNING para 16 bits. Por isso penso que deveria funcionar.

No Visual Basic, a instrução pode ser representada por :
Result = Call ......

Em Cobol, não existe, que eu saiba, nada semelhante. Sempre usei o RETURNING.
Já sei que isto não te ajuda em nada. Mas queria deixar-te a minha opinião.

Saludo,
Rui Pinto
Rapinto is offline   Responder Con Cita
  #3
Antiguo 11 de mayo de 2015, 23:12
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Rui, yo tambien he usado Visual Object COBOL for Windows 95 de MicroFocus!!! He leido en el manual de PowerCOBOL v3 que no tiene RETURNING. Pero que devuelve los Integer en PROGRAM-STATUS. Es decir, el resultado de GetParent estara en un campo reservado PROGRAM-STATUS. A mi me ha interesado para llamadas WinAPI, pero las he revisado varias, donde hay lpStr etc (String), y lo que he visto es que nunca se pasa campo String, sino un Pointer a ese campo String. Asi que, diria yo, se puede perfectamente hacer todo de WinAPI. Lo que no he usado todavia tampoco es TYPEDEF (para algunas API-s es necesario).

Por cierto, el intalador de PowerCOBOL v3 es de 16 bits, pero el propio PowerCOBOL es de 32 bits!!! Porque yo lo he ejecutado en un Windows 7 x64 y los 16 bits no se pueden ejecutar en x64, solo en x86. El intalador, efectivamente, no se ejecuta en x64, pero PowerCOBOL v3 si! He hecho una version portable, para poder llevar a cualqueir PC sin instalador

La version de PowerCOBOL v3 interesa porque se puede hacer programas portables. Para pequeñas herramientas me parece muy buena opcion. Ademas, es Freeware. Lo que no mola es que no hay muchos controles, por ejemplo ListView. Pero voy a intentar convertir un PushButton en ListView via WinAPI. Mucho codigo, pero es posible en teoria!

Un abrazo y gracias Rui!



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
  #4
Antiguo 11 de mayo de 2015, 23:40
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

Kuk,

O TYPEDEF penso que é:

Código COBOL:
  1.  01  BROWSEINFO.                                                    
  2.      03  HWINDOW                   PIC S9(009)    COMP-5  VALUE ZERO.
  3.      03  IDLIST                    PIC S9(009)    COMP-5  VALUE ZERO.
  4.      03  DSPNAME                   PIC S9(009)    COMP-5  VALUE ZERO.
  5.      03  DSPTITLE                  PIC S9(009)    COMP-5  VALUE ZERO.
  6.      03  FLAGS                     PIC S9(009)    COMP-5  VALUE ZERO.
  7.      03  XPTO                      PIC S9(009)    COMP-5  VALUE ZERO.
  8.      03  LPARAM                    PIC S9(009)    COMP-5  VALUE ZERO.
  9.      03  IIMAGE                    PIC S9(009)    COMP-5  VALUE ZERO.
  10.  
  11.  
  12.      CALL "SHBrowseForFolder" WITH STDCALL LINKAGE USING        
  13.                                BY REFERENCE BROWSEINFO
  14.                          RETURNING RESULT.                      

O Typedef BROWSEINFO é o nível 01 no COBOL com os sub-item em seguida.

Por exemplo no VB6 podes em seguida utilizar :
BROWSEINFO.LPRAM = "parâmetro X"

No COBOL utilizamos o MOVE de "parâmetro X" TO LPARAM.

Experimenta assim e vê se é o que pretendes.

Un Saludo,
Rui
Rapinto is offline   Responder Con Cita
  #5
Antiguo 12 de mayo de 2015, 08:57
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Rapinto, no me acuerdo que API era, pero en PowerCOBOL 9 yo hice algo parecido a esto y fue asi como funciono (solo pasando nivel 01 no funcionaba):

Código COBOL:
  1.  01  BROWSEINFO IS TYPEDEF.                                                    
  2.      03  HWINDOW                   PIC S9(009)    COMP-5  VALUE ZERO.
  3.      03  IDLIST                    PIC S9(009)    COMP-5  VALUE ZERO.
  4.      03  DSPNAME                   PIC S9(009)    COMP-5  VALUE ZERO.
  5.      03  DSPTITLE                  PIC S9(009)    COMP-5  VALUE ZERO.
  6.      03  FLAGS                     PIC S9(009)    COMP-5  VALUE ZERO.
  7.      03  XPTO                      PIC S9(009)    COMP-5  VALUE ZERO.
  8.      03  LPARAM                    PIC S9(009)    COMP-5  VALUE ZERO.
  9.      03  IIMAGE                    PIC S9(009)    COMP-5  VALUE ZERO.
  10.  
  11.  01  BROWSEINFO1 TYPE BROWSEINFO.
  12.  
  13.  PROCEDURE DIVISION.
  14.  
  15.      CALL "SHBrowseForFolder" WITH STDCALL LINKAGE USING      
  16.                                BY REFERENCE BROWSEINFO
  17.                                RETURNING RESULT.
  18.      
  19.      MOVE HWINDOW OF BROWSEINFO1 TO ...
  20.      MOVE IDLIST  OF BROWSEINFO1 TO ...



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