Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   COBOL - General (https://www.cobolforo.es/forumdisplay.php?f=44)
-   -   [Compilador] Error COBOL for Linux (https://www.cobolforo.es/showthread.php?t=1627)

dariodr 28 de marzo de 2023 07:42

Error COBOL for Linux
 
Buenas, tengo este simple codigo

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. EJEMPLO.
  3.  
  4.        DATA DIVISION.
  5.        WORKING-STORAGE SECTION.
  6.        01  OPC    PIC X.
  7.  
  8.        PROCEDURE DIVISION.
  9.        PRINCIPAL.
  10.            PERFORM UNTIL OPC = 'S' or 's'
  11.                DISPLAY "[C]argar datos al archivo" LINE 01 COL 41
  12.                DISPLAY "[A]gregar datos al archivo"
  13.                DISPLAY "[V]er el archivo"
  14.                DISPLAY "[S]alir"
  15.                ACCEPT OPC
  16.            END-PERFORM.
  17.  
  18.            STOP RUN.

Al querer ejecutarlo me aparecen estos errores:

Código:

IBM COBOL for Linux 1.1.0 compile started
End of compilation 1,  program EJEMPLO,  no statements flagged.
/usr/bin/ld: ejemplo.o: en la función `EJEMPLO':
/home/dariodr/COBOL/empleados/ejemplo.cbl:(.text+0xf1): referencia a `_Qln_extnd_reset' sin definir
/usr/bin/ld: /home/dariodr/COBOL/empleados/ejemplo.cbl:(.text+0xfb): referencia a `_Qln_extnd_line' sin definir
/usr/bin/ld: /home/dariodr/COBOL/empleados/ejemplo.cbl:(.text+0x108): referencia a `_Qln_extnd_col' sin definir
/usr/bin/ld: /home/dariodr/COBOL/empleados/ejemplo.cbl:(.text+0x152): referencia a `_Qln_extnd_dspdata' sin definir
/usr/bin/ld: /home/dariodr/COBOL/empleados/ejemplo.cbl:(.text+0x15a): referencia a `_Qln_extnd_put' sin definir
/usr/bin/ld: ejemplo.o:(.rodata+0x30): referencia a `_Qln_extnd_reset' sin definir
/usr/bin/ld: ejemplo.o:(.rodata+0x34): referencia a `_Qln_extnd_line' sin definir
/usr/bin/ld: ejemplo.o:(.rodata+0x38): referencia a `_Qln_extnd_col' sin definir
/usr/bin/ld: ejemplo.o:(.rodata+0x3c): referencia a `_Qln_extnd_dspdata' sin definir
/usr/bin/ld: ejemplo.o:(.rodata+0x40): referencia a `_Qln_extnd_put' sin definir
collect2: error: ld returned 1 exit status

Alguien sabe de que se trata.

PD: estoy usando el compilador COBOL para LINUX.

JCantero 28 de marzo de 2023 08:48

@dariodr, prueba a quitar

Código COBOL:
  1.              DISPLAY "[C]argar datos al archivo" LINE 01 COL 41

y dejas solo

Código COBOL:
  1.              DISPLAY "[C]argar datos al archivo"

Kuk 28 de marzo de 2023 09:21

El problema es que se hace LINK dinámico, es decir que las rutinas del Run-Time se carguen diatónicamente pero que no encuentras las funciones citadas. Habrá que revisar la variable de entorno $PATH:

Ejecuta eso con el mismo usuario y nos pegas el resultado aquí:
Código Bash:
  1. env | grep -i 'IBM'

dariodr 28 de marzo de 2023 10:21

@JCantero, Hola, de la segunda forma (sin LINE ni COL) funciona perfectamente pero si quiero usar LINE y COL como seria.

- - - Updated - - -

@Kuk, Copio y pego:

Código:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/opt/ibm/cobol/1.1.0/bin:/opt/ibm/cobol/rte/bin:/opt/ibm/cobol/debug/usr/bin

Kuk 28 de marzo de 2023 10:41

@dariodr, vale pues vemos cosas de IBM en la variable de entorno $PATH. Habría que buscar en la documentación del compilador, para estas funciones esperadas con prefijo _Qln_extnd_* tiene que haber una librería adicional a instalar.

JCantero 28 de marzo de 2023 12:18

@dariodr, eso es porque el cobol que utilizas no tiene esa opción en el "display".

No he visto mucho pero parece que tendrás que utilizar "screen-section"

Revisa la documentacion : https://www.ibm.com/support/pages/co...tation-library

Kuk 28 de marzo de 2023 13:31

@JCantero, en este caso debería haber sido bloqueado a la hora de compilar. Sin embargo vemos que requiere funciones concretas que no encuentra en ejecución. Si la compilación ha ido bien, se genera el binario y explota en ejecución, esto quiere decir que sintáxicamente hablando no hay error.
Como explota pidiendo funciones que no encuentra, sabemos por seguro que hace LINK dinámico (carga de módilos necesarios "en vuelo", cuando se lance el programa a ejecutar), y lo que habrá que hacer es instalar la librería que contiene las funciones que requiere.

La otra opción es que el compiulador este lleno de BUGs, cosa que me extrañaría siendo el compilador de IBM.

JCantero 28 de marzo de 2023 13:40

@Kuk, eso ya no lo se.

IBM es muy pijotero.

Lo que me ha parecido ver es que tiene un script que compila y ejecuta, aparentemente. Y el compilador ya esta dando problemas.

Lo mismo le falta alguna libreria como tu dices o un swich (o parametro) a la hora de compilar.

Habrá que darle una vuelta a la documentación para ver si es una cosa, la otra o ninguna.

:astro:

Lo que está claro es que sin LINE funciona.

Le dije que probara porque es lo que vi en el manual, que el DISPLAY no tiene LINE ni COL.

Kuk 28 de marzo de 2023 19:45

@JCantero, efectivamente habrá que leerse bien la documentación, además es un compilador poco conocido por lo que veo, así que no queda otra que buscar las respuestas en la documentación.

dariodr 29 de marzo de 2023 02:44

Les escribi a IBM y esto es lo que me respondieron:

Hi Dario,

Our IBM COBOL compilers do not support SCREEN sections. The format of the DISPLAY statement you're using on line 11 is the one used when you have screen sections. If you remove "Line 01 COL 41", the program will successfully compile.

Hope that helps.
Please let us know if you have any other questions.


Sarah McNamara
on behalf of COBOL Linux Trial


La franja horaria es GMT +2. Ahora son las 16:38.

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