miércoles, 13 de abril de 2011

Curiosidades COBOL: los límites del compilador.

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

12 comentarios:

Anónimo dijo...

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

Anónimo dijo...

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.

Anónimo dijo...

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 ^^

Anónimo dijo...

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.

Tallian dijo...

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

Anónimo dijo...

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

Tallian dijo...

jijiji
El manual de IBM lo dice claramente xd

Loboc dijo...

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 ;)...

Rodrigo dijo...

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

Fernando L. Garcia Papis dijo...

¿ Cuantas CALL... segun vosotros ? Gracias.

Tallian dijo...

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

Vitor Dantas dijo...

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.