Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   IDE-s para GnuCOBOL (https://www.cobolforo.es/forumdisplay.php?f=95)
-   -   [Sintaxis] CALL en OPENCOBOLIDE 4.7.6 da error (no encuentra) (https://www.cobolforo.es/showthread.php?t=1524)

etilico2022 6 de septiembre de 2022 18:55

CALL en OPENCOBOLIDE 4.7.6 da error (no encuentra)
 
Estoy aprendiendo a usar el OpenCobolIDE 4.7.6. Hice un programa principal con menu, y de ahi intento llamar a otro programa cobol utilizando CALL "programa2". No estoy usando USING. Tanto programaPrincipal.cbl y programa2.cbl estan en el mismo directorio. Y los .exe estan en bin. Al ejecutar me sale el mensaje que no puede encontrar "programa2". Probe mover programa2.cbl a diferentes directorios pero nada. Tambien agregue al PATH, la subcarpeta bin. Por favor, si alguien puede darme una mano. Gracias.

Joseg 6 de septiembre de 2022 19:54

Cita:

Citación del post de etilico2022 (Mensaje 8092)
Estoy aprendiendo a usar el OpenCobolIDE 4.7.6. Hice un programa principal con menu, y de ahi intento llamar a otro programa cobol utilizando CALL "programa2". No estoy usando USING. Tanto programaPrincipal.cbl y programa2.cbl estan en el mismo directorio. Y los .exe estan en bin. Al ejecutar me sale el mensaje que no puede encontrar "programa2". Probe mover programa2.cbl a diferentes directorios pero nada. Tambien agregue al PATH, la subcarpeta bin. Por favor, si alguien puede darme una mano. Gracias.

Essa é uma situação prevista. Não pode chamar dessa forma executáveis.
Tente ver mais detalhes aqui: GnuCOBOL / Discussion / Help getting started: CALL verb not working properly?

Tem que compilar dentro do mesmo EXE os vários programas.

- - - Updated - - -

Cita:

Citación del post de Joseg (Mensaje 8093)
Essa é uma situação prevista. Não pode chamar dessa forma executáveis.
Tente ver mais detalhes aqui: GnuCOBOL / Discussion / Help getting started: CALL verb not working properly?

Tem que compilar dentro do mesmo EXE os vários programas.

Para compilar para o mesmo EXE: cobc -x programa.cbl programa2.cbl ...
Também pode criar DLLs que já podem ser acedidos pelo comando "CALL"

OpenCOBOL FAQ

etilico2022 7 de septiembre de 2022 14:09

Muchísimas gracias!!
He seguido tus sugerencias y programa2 lo he creado como modulo (.dll). Y ahi funciono ok el CALL "programa2".
Gracias por tu ayuda.

Paco_Diaz 3 de junio de 2023 11:49

Buenas.

@etilico2022, podrias poner aqui exactamente que fue lo que usaste para que funcionara?. Tengo exactamente el mismo problema y estoy haciendo todo tipo de combinaciones segun el articulo que se cita en el segundo mensaje, pero no consigo que me funcione un simple CALL a un subprograma, que lo unico que hace es mostrar un mensaje.

Muchas gracias.

Un saludo. Paco.

etilico2022 4 de junio de 2023 05:12

@Paco_Diaz, lo que hice es escribir en el programa principal CALL "Programa_llamado". Programa_llamado va sin el .CBL. Luego compilé Programa_llamado como tipo de programa Module. De ésta manera se creó Programa_llamado.DLL. Y ahí me funcionó.

Saludos

Paco_Diaz 4 de junio de 2023 12:27

Buenas.

Esto es increible......

A no ser que por el monton de combinaciones que hice diera por hecho que esta ya la habia usado, no me funcionaba en ninguna de las combinaciones, pero he de decir que ha funcionado a la primera.

Esto me abre una puerta increible para seguir programando en 64 bits con todas las cosas que he hecho, porque he estado mirando otras posibilidades, y, entre que no me convencian, o no podia descargarlas (en la gran mayoria de ocasiones), lo veia todo negro.

Muchas gracias @etilico2022, .

Un saludo. Paco.

P.D.: Quiza mas adelante pida ayuda sobre como instalar gnucobol (para ver las posibilidades que añade a rmcobol/85), porque con eso de ver el fichero "TODO", el make y toda la pera, me parece una tarea muy liosa y que ya podian haber hecho algo mas parecida a la simple ejecucion de un EXE para instalar.


Comentario de Moderador

@Paco_Diaz, te he borrado el post duplicado y, cuando quieras dar las gracias, aparte de hacerlo por aquí, siempre que sea necesario y no sea un simple gracias, puedes hacerlo también, agradeciéndolo en el post que ha publicado la otra persona, de esa manera, se le quedan "marcadas" la cantidad de gente y quién agradece.

Un salu2 a ambos.-

Paco_Diaz 7 de junio de 2023 14:04

Buenas.

@etilico2022, has probado a hacer más de una llamada desde un programa?, o sea, hacer mas de un call?

En caso de que sea así, te funciona?, porque a mi, no, asi que si me dices como lo has hecho te lo agradezco.

El error que ha llegado a darme (ahora no da error, simplemente no hace nada) es del tipo "no se encuentra el punto de entrada al procedimiento", por si te sirve como pista.

Al parecer este es un tipico error de C, porque, claro como usa GCC (que traduce a C como todos sabemos), pues los mensajes de error son de C.

Muchas gracias. Un saludo.

P.D.: He escrito este mensaje continuando el anterior, porque se me pasaron los 5 minutos para editarlo.

etilico2022 13 de junio de 2023 05:09

@Paco_Diaz Tengo varios Call en mi programa principal (ahí muestro un menú de opciones). En los programas llamados, hay que tener cuidado de agregar al final de de la ejecución lógica, el EXIT PROGRAM. Además, agrego al final del programa físico (.cbl), un END PROGRAM y el nombre que figura en PROGRAM-ID.

luisbago 13 de junio de 2023 20:18

call 'miprograma'.
cancel 'miprograma'.

el source de rmcobol, así compile y no fallo

Lavronacín 25 de julio de 2023 23:10

Buen dia. Consulta: ¿Cómo debe hacerse si se quiere hacer una llamada jerárquica? Es decir:
PROGRAMA principal
Call subprograma_1
Call subprograma_1_1
Call subprograma_1_2
Call subprograma_2
...

- - - Updated - - -

En el mensaje anterior se perdió la identacion. Pero la idea es: tengo el Programa Principal desde donde llamo a los subprogramas subprograma_1 y subprograma_2. Dentro de subprograma_1, quiero llamar a subprograma_1_1 y subprograma_1_2... Etc.


La franja horaria es GMT +2. Ahora son las 01:47.

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