En COBOL, il n’existe pas d’instruction native du type « SWAP a b » comme dans certains langages modernes. Pour échanger les valeurs de deux variables, on utilise presque toujours une variable temporaire.
C’est une technique très importante à bien comprendre dès le début, car elle revient très souvent quand on manipule des données.
Exemple de code
IDENTIFICATION DIVISION.
PROGRAM-ID. ECHANGE-VALEURS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC X(10) VALUE "Paris ".
01 B PIC X(10) VALUE "Londres ".
01 TEMP PIC X(10).
PROCEDURE DIVISION.
DISPLAY "Avant échange:"
DISPLAY "A = " A
DISPLAY "B = " B
MOVE A TO TEMP
MOVE B TO A
MOVE TEMP TO B
DISPLAY "Après échange:"
DISPLAY "A = " A
DISPLAY "B = " B
STOP RUN.
Sortie du programme
Avant échange:
A = Paris
B = Londres
Après échange:
A = Londres
B = Paris
A = Paris
B = Londres
Après échange:
A = Londres
B = Paris
Explication détaillée pour débutants
01 A PIC X(10) VALUE "Paris ".
VariableAqui contient initialement le mot « Paris » (complété par des espaces jusqu’à 10 caractères).01 B PIC X(10) VALUE "Londres ".
VariableBqui contient initialement « Londres ».01 TEMP PIC X(10).
Variable temporaire. Elle ne contient rien au départ. Elle sert uniquement à « retenir » une valeur pendant l’échange.MOVE A TO TEMP
On copie la valeur deA(Paris) dansTEMP.
À ce moment : A = Paris, TEMP = Paris, B = LondresMOVE B TO A
On copie la valeur deB(Londres) dansA.
Maintenant : A = Londres, TEMP = Paris, B = LondresMOVE TEMP TO B
On remet la valeur sauvegardée dansTEMP(Paris) dansB.
Résultat final : A = Londres, B = Paris → les valeurs ont bien été échangées !
Remarque : en COBOL classique, on ne peut pas faire MOVE A TO B puis MOVE B TO A directement, car la première instruction aurait déjà écrasé la valeur de B. C’est pourquoi la variable temporaire est indispensable.