PDA

Ver la Versión Completa : [Sintaxis] Longitud Variables


Recato53
13 de junio de 2020, 11:33
Buenos días.

Como saber la longitud real de una variable COMP-?? en un fichero.


01 VAR-1 PIC S9(9) COMP-5.
01 VAR-2 PIC S9(9)V99 COMP-5.


Algún forero tiene una tabla con los valores máximos que se pueden usar en variables
tipo COMP- , no encuentro documentación en los manuales de PowerCobol.


Muchas gracias.

Kuk
13 de junio de 2020, 12:10
@Recato53, esto depende del compilador. Siendo Fujitsu, si no recuerdo mal, sigue las directivas de campos nativos de la arquitectura. O sea que, los COMP/COMP-4/COMP-5 todos físicamente son 2, 4 u 8 bytes.

En cuanto al contenido, el COMP-5 es binario nativo y sigue las reglas de la máquina. Equivale a tipos que vemos en C:

PIC S9(2) COMP-5 short 2 bytes -32,768 to 32,767
PIC 9(2) COMP-5 unsigned short 2 bytes 0 to 65,535
PIC S9(9) COMP-5 int 4 bytes -2,147,483,648 to 2,147,483,647
PIC 9(9) COMP-5 unsigned int 4 bytes 0 to 4,294,967,295
PIC S9(18) COMP-5 long 8 bytes -9223372036854775808 to 9223372036854775807
PIC 9(18) COMP-5 unsigned long 8 bytes 0 to 18446744073709551615


18 es el máximo. Todo lo que supere la cantidad de 9-s en PIC automáticamente se toma el tipo siguiente de tamaño superior. Es decid, si defines S9(5) COMP-5 se va a alocar como S9(9) COMP-5.

Recato53
13 de junio de 2020, 12:46
@Recato53, esto depende del compilador. Siendo Fujitsu, si no recuerdo mal, sigue las directivas de campos nativos de la arquitectura. O sea que, los COMP/COMP-4/COMP-5 todos físicamente son 2, 4 u 8 bytes.

En cuanto al contenido, el COMP-5 es binario nativo y sigue las reglas de la máquina. Equivale a tipos que vemos en C:

PIC S9(2) COMP-5 short 2 bytes -32,768 to 32,767
PIC 9(2) COMP-5 unsigned short 2 bytes 0 to 65,535
PIC S9(9) COMP-5 int 4 bytes -2,147,483,648 to 2,147,483,647
PIC 9(9) COMP-5 unsigned int 4 bytes 0 to 4,294,967,295
PIC S9(18) COMP-5 long 8 bytes -9223372036854775808 to 9223372036854775807
PIC 9(18) COMP-5 unsigned long 8 bytes 0 to 18446744073709551615


18 es el máximo. Todo lo que supere la cantidad de 9-s en PIC automáticamente se toma el tipo siguiente de tamaño superior. Es decid, si defines S9(5) COMP-5 se va a alocar como S9(9) COMP-5.

Entiendo que si defino:

PIC S9(6) COMP-5 La longitud será 4
PIC S9(6)V99 COMP-5 La longitud será 4

Kuk
13 de junio de 2020, 21:54
@Recato53, correcto ;)