A todo esto puedo añadir lo siguiente: COMP y COMP-4 equivalen y son campos binarios independientes de la máquina. Pero hay una diferencia entre los binarios COBOL y el binario "nativo" que es el COMP-5 y sí es dependiente de la máquina. A diferencia de binarios COBOL, el binario "nativo" puede contener cifras superiores al valor PIC.
Por ejemplo, un PIC S9(4) COMP puede contener de -9999 hasta 9999. Sin embargo PIC S9(4) COMP-5 puede contener de -32768 hasta 32767.
Para comunicarnos con el SO u otro software como rutinas C/C++ etc., normalmente se debe usar el binario nativo COMP-5.
Código COBOL:
Tipo COBOL Tamaño Valores posibles
-----------------------------------------------------------------------------------------------------------
SHORT PIC S9(4) COMP-5 2 Bytes De -32,768 a 32,767
USHORT PIC 9(4) COMP-5 2 Bytes De 0 a 65,535
INT PIC S9(9) COMP-5 4 Bytes De -2,147,483,648 a 2,147,483,647
UINT PIC 9(9) COMP-5 4 Bytes De 0 a 4,294,967,295
INT64 PIC S9(18) COMP-5 8 Bytes De –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
UINT64 PIC 9(18) COMP-5 8 Bytes De 0 a 18,446,744,073,709,551,615
LONG en Windows INT 4 Bytes De -2,147,483,648 a 2,147,483,647
ULONG en Windows UINT 4 Bytes De 0 a 4,294,967,295
LONG en Linux x64 PIC S9(18) COMP-5 8 Bytes De –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
ULONG en Linux x64 PIC 9(18) COMP-5 8 Bytes De 0 a 18,446,744,073,709,551,615
FLOAT COMP-1 4 Bytes De 1.2E-38 a 3.4E+38
DOUBLE COMP-2 8 Bytes De 2.3E-308 a 1.7E+308
* en x86 POINTER 4 Bytes De -2,147,483,648 a 2,147,483,647
* en x64 POINTER 8 Bytes De –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807