Mettre des morceaux de textes à la suite les uns des autres et enregistrer le tout dans une variable, c’est ce qu’on appelle la concaténation. D’un côté, il y a la double barre. De l’autre côté, il y a les fonctions « CAT » disponibles depuis SAS 9. Voici donc un rapide tour d’horizon de ces notations.
A titre d’exemple, si vous avez plusieurs variables pour identifier de manière unique une ligne d’observations, vous pouvez construire une variable unique à partir d’une concaténation et ainsi manier plus facilement certaines fonctionnalités de la procédure SQL.
Pour illustrer ce sujet, on utilisera une variable x et une variable z sans blanc aux extrémités et une variable y avec des blancs avant et après sont utilisés.
x = ‘Pays’;
y = ‘ UK ‘;
z = ‘2008’;
A chaque fois, plusieurs notations sont proposées. Toutes donnent le même résultat.
1. La traditionnelle double barre : qu’il s’agisse de la double barre || ou des deux points d’exclamations !!, la concaténation requiert des valeurs textes (SAS Online Doc. : Section sur « Concatenation Operator »). Il faudra donc convertir les valeurs numériques avec une instruction PUT par exemple.
a1 = x || y || z ;
a1 = ‘Pays’ || ‘ UK ‘ || ‘2008’;
a1 = ‘Pays’ || y || z;
a1 = ‘Pays UK 2008’;
Cette notation sert aussi pour la concaténation de matrices (SAS IML) et la définition d’un CALL EXECUTE.
2. Les fonctions CATS, CATX, CATS et CATT : ces fonctions varient en fonction de la place que l’on souhaite accorder aux blancs des différents maillons de la chaîne et si on souhaite ajouter des séparateurs. Elles disposent au moins d’autant de paramètres que de maillons formant la chaîne à créer. Chaque morceau de texte est séparé par une virgule. Si en plus on souhaite ajouter un séparateur entre les différents composants, un paramètre supplémentaire est listé en tête.
Sans blanc aux extrémités : personnellement, j’utilise le plus souvent la fonction CATS qui enlève les blancs aux extrémités. Cela revient à faire d’utiliser la double barre sans agir sur les maillons de la chaînes à construire .
a2 = cats(x,y,z) ;
a2 = cats(‘Pays’,’ UK ‘,’2008’);
a2 = cats(‘Pays’,y,z);
a2 = ‘PaysUK2008’;
Ajouter un séparateur : la fonction CATX enlève les blancs de début et de fin et ajoute des séparateurs entre chaque « mot ». Le symbole utilisé comme séparateur est le premier paramètre de la fonction.
a3 = catx(‘-‘,x,y,z) ;
a3 = catx(‘-‘,’Pays’,’ UK ‘,’2008’);
a3 = catx(‘-‘,’Pays’,y,z);
a3 = ‘Pays-UK-2008’;
Garder tous les blancs : la fonction CAT n’enlève pas les blancs au début et fin de texte de chacun des éléments de la concaténation.
a4 = cat(x,y,z) ;
a4 = cat(‘Pays’,’ UK ‘,’2008’);
a4 = cat(‘Pays’,y,z);
a4 = ‘Pays UK 2008’;
Enlever les blancs de fin uniquement : la fonction CATT enlève les blancs en fin de chaîne. Le dernier T de CATT fait référence à « Trailing Blanks » c’est-à-dire les blancs de fin de chaîne.
a5 = catt(x,y,z) ;
a5 = catt(‘Pays’,’ UK ‘,’2008’);
a5 = catt(‘Pays’,y,z);
a5 = ‘Pays UK2008’;
Pour ma part, j’ai du mal à me souvenir qui fait quoi. L’important, dans un premier temps, est de savoir que ces fonctions existent. On recherche après, en tant voulu, l’information sur les nuances. Si, vous avez trouvez un moyen mnémotechnique pour mémoriser les différences, n’hésitez pas à le faire savoir.