Un entier signé en COBOL est une variable numérique capable de représenter à la fois des valeurs positives et négatives. La présence du symbole S dans la clause PIC indique que le champ peut contenir un signe.
01 VARIABLE-SIMPLE PIC S9(5) VALUE 0. * Entier signé, 5 chiffres 01 DECIMAL-SIGNEE PIC S9(3)V99 VALUE 0. * 3 entiers, 2 décimales 01 BINAIRE-SIGNE PIC S9(9) COMP VALUE 0. * Binaire optimisé 01 PACKED-SIGNE PIC S9(5) COMP-3 VALUE 0. * Décimal compressé
| Type | Clause PIC | Exemple | Plage (9 chiffres) |
|---|---|---|---|
| Non-signé | PIC 9(9) | +123456789 |
0 à 999,999,999 |
| Signé | PIC S9(9) | -123456789 |
-999,999,999 à +999,999,999 |
PIC [S]9(n)[V9(d)] [USAGE ...]
S - Obligatoire pour signé, optionnel pour non-signé9(n) - Nombre de positions entièresV - Point décimal implicite (ne prend pas de place)9(d) - Nombre de positions décimalesUSAGE - Type de stockage (voir ci-dessous)Stockage en format décimal édité (EBCDIC/ASCII)
Décimal compressé (packed decimal)
Binaire natif (complément à deux)
| Clause PIC | Stockage | Valeur Min | Valeur Max |
|---|---|---|---|
| PIC S9(1-4) COMP | 2 bytes | -32,768 | +32,767 |
| PIC S9(5-9) COMP | 4 bytes | -2,147,483,648 | +2,147,483,647 |
| PIC S9(10-18) COMP | 8 bytes | -9.2×10¹⁸ | +9.2×10¹⁸ |
En COBOL COMP, les nombres négatifs sont stockés en complément à deux. C'est la méthode standard pour les entiers binaires signés.
0000 01011111 10101111 1011 = -5| Valeur | DISPLAY (EBCDIC) | COMP (Binaire) | COMP-3 (Packed) |
|---|---|---|---|
| +123 | F1F2C3 | 007B | 123C |
| -123 | F1F2D3 | FF85 | 123D |
Supposer que la représentation DISPLAY = COMP
| Usage | Quand l'utiliser | Avantage |
|---|---|---|
| DISPLAY | Édition, rapport, I/O | Lisible, simple |
| COMP | Calculs intenses | Rapide, efficace |
| COMP-3 | Fichiers, DB | Compact, standard |