Páginas

miércoles, 13 de septiembre de 2023

Curiosidades COBOL: los límites del compilador.

DEPRECATED!

Con las nuevas versiones de COBOL, como COBOL 6, las cosas han cambiado!


----------------------------------------------------------------------------------------------------------------------

Normalmente un programa no suele alcanzar los límites del compilador (a no ser que seamos muy bestias^^), pero existir, existen.

Alguna vez os habéis preguntado cual es el máxino número de OCCURS que puede tener una tabla interna??? Vamos a ver algunos números curiosos : )

Líneas de un programa:
El nº máximo de líneas que puede tener un programa son 999.999 líneas. Sinceramente, encontrarse un programa así de largo haría que nos acordásemos de toda la familia del que tuvo la idea...

En dos palabras, in-mantenible^^

Ficheros:
El nº máximo de ficheros por programa es de 65.535 ficheros.
Y si tal que haya que cruzarlos!!!

Longitud de fichero:
La longitud máxima que puede tener un fichero en su RECORD es de 1.048.575 posiciones.
Total na.

Variables de working:
La suma de las variables definidas en la WORKING-STORAGE, no podrá pasar de 134.217.727. Lo mismo para la LINKAGE-SECTION.

EVALUATE:
El nº máximo de cláusulas WHEN en un EVALUATE será de 256.
Si que son posibilidades!

PERFORM:
A lo largo del programa sólo podremos utilizar 4.194.303.
Debe ser por si queremos codifcar el programa de 999.999 líneas...

OCCURS:
El número máximo de occurs que podrá tener una tabla interna será de 16.777.215.

USING en la procedure:
Cuando tengamos un programa con LINKAGE SECTION, el máximo de variables que podremos incluir en la PROCEDURE DIVISION USING ... será de 32.767.

Cláusula VALUE:
El total de las longitudes de los valorse incluidos en las cláusulas VALUE no podrá superar los 16.777.215.


Todo esto y mucho más lo podéis encontrar en el apéndice B del manual de IBM
Enterprise COBOL for z/OS and OS/390 IBM
Language Reference

16 comentarios:

  1. Vaya números, creo que me he quedado cerca en alguno, pero no lo he superado.

    ResponderEliminar
  2. Esto es coherente?
    PERFORM:
    A lo largo del programa sólo podremos utilizar 4.194.303.
    Líneas de un programa:
    El nº máximo de líneas que puede tener un programa son 999.999 líneas.

    ResponderEliminar
  3. tengo una duda, Cuantas variables como maximo puede tener una copy cobol? tantas cuya suma de posiciones no sea superior a la longitud maxima de un fichero?

    Por cierto, gracias por estas "ayudas" sobre cobol, sacan de apuros en mas de una ocasion ^^

    ResponderEliminar
  4. Si es coherente, si codificaras 4.194.303 PERFORM es por que eres un animal y tu programas es probable que tengas 999.999 líneas.

    ResponderEliminar
  5. jajaja
    La verdad es q un poco animal sí que seriá... xd

    ResponderEliminar
  6. No es coherente. Como vas a tener mas PERFORM que líneas de código??

    ResponderEliminar
  7. jijiji
    El manual de IBM lo dice claramente xd

    ResponderEliminar
  8. Pues lo mismo se refiere que contando todos los CALLs que hagas o COPYs que añadas como máximo podrás tener 4.194.303 PERFORM entre todos. Pero vaya, que no lo hemos comprobado, solamente lo ponemos como curiosidad que figura en el manual de IBM, si alguien está decidido a comprobarlo ;)...

    ResponderEliminar
  9. Falta poner que una variable numerica no puede ser de mas de 18 posiciones

    ResponderEliminar
  10. ¿ Cuantas CALL... segun vosotros ? Gracias.

    ResponderEliminar
  11. Hola Fernando. Según IBM:
    CALL id/lit USING id/lit... 16380
    :-)

    ResponderEliminar
  12. Como faço para identificar um OFFSET em minha compilação ??? Existe algum comando para isso ???? Na minha compilação atual não aparece a informação do OFFSET.

    ResponderEliminar
  13. Buen día.
    En la Linkage Section cual sería la longitud total máxima de datos que se pueden enviar si sumamos todos los campos declarados en esta sección ??

    Saludos

    ResponderEliminar
  14. Buen día.
    En la Linkage Section cual sería la longitud total maxima de datos que se pueden enviar si sumamos todos los campos declarados en esta seccion ??

    Saludos

    ResponderEliminar
  15. Lo mismo que la working, 134.217.727 posiciones :-)

    ResponderEliminar
  16. El link "apéndice B del manual de IBM" está down

    ResponderEliminar