Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Fujitsu COBOL (https://www.cobolforo.es/forumdisplay.php?f=77)
-   -   [Sintaxis] Longitud Variables (https://www.cobolforo.es/showthread.php?t=1166)

Recato53 13 de junio de 2020 11:33

Longitud Variables
 
Buenos días.

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

Código COBOL:
  1. 01 VAR-1   PIC S9(9) COMP-5.
  2. 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:
Código:

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

Cita:

Citación del post de Kuk (Mensaje 5835)
@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:
Código:

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:
Código COBOL:
  1. PIC S9(6) COMP-5         La longitud será 4
  2. PIC S9(6)V99  COMP-5  La longitud será 4

Kuk 13 de junio de 2020 21:54

@Recato53, correcto ;)


La franja horaria es GMT +2. Ahora son las 03:22.

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