Le but de cette instruction (UNSTRING) est d’éclater une variable DISPLAY en plusieurs morceaux. La règle d’éclatement est donnée par DELIMITED BY.
Format :
Les mêmes règles que pour le STRING sont d’application. ALL est destiné à éliminer les redondances d’un caractère délimiteur. Par exemple ALL “AB” signifie que AB ou même ABABAB sont délimiteurs.
NOM-DE-POINTEUR , numérique DISPLAY, que le programmeur doit initialiser à 0 permet de compter le nombre de caractères examinés dans la zone nom-de-donnée-1.
NOM-DE-COMPTEUR, numérique DISPLAY, compte le nombre de zones réceptrices créées.
OVERFLOW, arrête le déroulement de l’instruction si le contenu du pointeur est négatif ou > à la taille de la zone nom-de-donnée-1, ou lorsque la zone nom-de-donnée-1 n’est pas entièrement examinée mais que l’instruction UNSTRING ne dispose plus de zones réceptrices i,j,…
Si un OVERFLOW est déclenché sans que l’option ne soit spécifiée, l’instruction UNSTRING est arrêtée et le programme passe à l’instruction suivante.
Les zones nom-de-donnée-i etc. sont les zones réceptrices.
DELIMITER IN spécifie la variable dans laquelle on désire transférer le délimiteur qui a été utilisé pour cet éclatement.
COUNT IN indique le nombre de caractères transférés par cet éclatement.
Exemple :01 ZONE PIC X(12).
01 NOM PIC X(5).
01 AN PIC XXXX.
UNSTRING ZONE DELIMITED BY SPACE INTO NOM AN.
Si ZONE = "ANNEE 1999 "
alors le résultat est NOM = “ANNEE” et AN = “1999”.
UNSTRING A delimited by ‘.’ or ‘/’ ….