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)

JCantero 26 de julio de 2023 00:23

@Lavronacín, pues dentro del subprograma _1 haces un call a subprograma-1-1.

Que problema te surge ?

Lavronacín 26 de julio de 2023 00:43

Pues, el mismo mensaje de "No encuentañra punto de entrada". Tanto subprograma_1 como subprograma_1_1 han sido compilados como módulos (dll)

JCantero 26 de julio de 2023 17:33

@Lavronacín, te pongo un ejemplo que funciona.

Atencion, el nombre del programa debe de estar bien escrito para identificarlo. Me refiero al "program-id. mundo2". "END PROGRAM mundo2." lo puedes suprimir.

Prueba y me dices si algo no te funciona. O pasa un ejemplo.

Programa inicial:

Código COBOL:
  1.      ******************************************************************
  2.      * Author:
  3.      * Date:
  4.      * Purpose:
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. mundo1.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        01 indice pic 9.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             DISPLAY "Hello world 1"
  16.             ACCEPT indice.
  17.             call 'mundo2'.
  18.             STOP RUN.
  19.        END PROGRAM mundo1.
  20.  

Programa llamado:

Código COBOL:
  1.      ******************************************************************
  2.      * Author:
  3.      * Date:
  4.      * Purpose:
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. mundo2.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        01 indice pic 9.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             DISPLAY "Hello world 2"
  16.             ACCEPT indice.
  17.            
  18.             STOP RUN.
  19.        END PROGRAM mundo2.

JCantero 26 de julio de 2023 17:46

@Lavronacín, otra cosa.....

Los programas llamados tienen que estar como modulos. O sea como .dll

El programa inicial como ejecutable. O sea como .exe

Lavronacín 26 de julio de 2023 18:13

Así mismo están
Y el mensaje sale "No encuentra punto de entrada". ¿Desde un .DLL se puede llamar a otro .DLL?

JCantero 26 de julio de 2023 22:08

@Lavronacín, si pero solo desde el entorno de trabajo.

Si lo pones en producción y lo ejecutas desde la linea de comandos el primer programa debe de ser .exe, el resto modulos .dll

Te funciona el ejemplo que te he enviado ?

Si no te funciona tu programa pon aqui lo que no te funciona para que veamos el problema.

Lavronacín 31 de julio de 2023 18:23

Estimado, buen día.
Disculpa que no pude responder antes. Mira: te pongo fuentes de ejemplo de lo que deseo implementar:
Nota: El programa principal lo compilo como ejecutable, los otros como DLL. Y tanto el Exe como los DLL están en la misma carpeta.
Programa Principal:
---------------------
Código COBOL:
  1.      ******************************************************************
  2.      * Author: Lavronacin
  3.      * Date: 31/07/2023
  4.      * Purpose: Verificar llamadas de subprogramas
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. PRGEjem01.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        77  Aceptar_Opcion    Pic X(01) Value Spaces.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             Display " " Blank Screen Line 01 column 01.
  16.             Display "Soy el programa principal PRGEjem01"
  17.                     Line 09 column 05
  18.             Display "Voy a llamar a PRGEjem01_01"
  19.                      line 10 column 05.
  20.             Accept Aceptar_Opcion line 10 column 79.
  21.             Call "bin\PRGEjem01_01".
  22.             STOP RUN.
  23.        END PROGRAM PRGEjem01.

Subprograma de nivel 1 que quiero ejecutar:
---------------------------
Código COBOL:
  1. ******************************************************************
  2.      * Author: Lavronacin
  3.      * Date: 31/07/2023
  4.      * Purpose: Verificar llamadas de subprogramas
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. PRGEjem01_01.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        77  Aceptar_Opcion    Pic X(01) Value Spaces.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             Display "Soy el programa PRGEjem01_01"
  16.                     Line 12 column 10
  17.             Display "Voy a llamar a PRGEjem01_A"
  18.                      line 13 column 10.
  19.             Display " Y voy a llamar a PRGEjem01_B"
  20.                      line 14 column 10.
  21.             Accept Aceptar_Opcion line 14 column 79.
  22.             Call "PRGEjem01_A".
  23.             Call "PRGEjem01_B"
  24.             STOP RUN.
  25.        END PROGRAM PRGEjem01_01.

Subprograma de nivel 2 que quiero ejecutar:
----------------------------------------------
Código COBOL:
  1. ******************************************************************
  2.      * Author: Lavronacin
  3.      * Date: 31/07/2023
  4.      * Purpose: Verificar llamadas de subprogramas
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. PRGEjem01_A.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        77  Aceptar_Opcion    Pic X(01) Value Spaces.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             Display "Soy el programa PRGEjem01_A"
  16.                     Line 16 column 10
  17.             Display "me llamó PRGEjem01_01"
  18.                      line 17 column 10.
  19.             Accept Aceptar_Opcion line 17 column 79.
  20.             STOP RUN.
  21.        END PROGRAM PRGEjem01_A.

Otro subprograma de nivel 2 que quiero ejecutar:
-----------------------------------------------------
Código COBOL:
  1. ******************
  2.      * Author: Lavronacin
  3.      * Date: 31/07/2023
  4.      * Purpose: Verificar llamadas de subprogramas
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. PRGEjem01_B.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        77  Aceptar_Opcion    Pic X(01) Value Spaces.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             Display "Soy el programa PRGEjem01_B"
  16.                     Line 19 column 10
  17.             Display "me llamó PRGEjem01_01"
  18.                      line 20 column 10.
  19.             Accept Aceptar_Opcion line 20 column 79.
  20.             STOP RUN.
  21.        END PROGRAM PRGEjem01_B.

JCantero 31 de julio de 2023 20:53

@Lavronacín, asi no

Código COBOL:
  1. Call "binPRGEjem01_01".

asi si

Código COBOL:
  1. Call "PRGEjem01_01".

y verifica que esta compilado como modulo y existe el .DLL


La franja horaria es GMT +2. Ahora son las 02:36.

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