
Ecrire un texte avec l’instruction PUT
février 24, 2008
Faire apparaître un message d’erreur dans la log ; afficher la valeur de variables dans la log lors du développement d’un programme ; générer plusieurs programmes similaires : voici autant d’applications de l’instruction PUT, propre au data step, qui affiche, par défaut, le texte dans la log.
1. Taper du texte brut : en mettant votre texte entre guillemets dans l’instruction PUT, celui-ci apparaîtra dans la log.
Couper l’instruction PUT : lorsqu’une instruction PUT devient longue, on doit se déplacer sur plusieurs écrans pour voir l’intégralité du programme. En coupant le texte, la lisibilité du programme et le confort du programmeur se trouvent améliorés et le texte reste continue dans la sortie LOG ou autre.
Ecrire des guillemets : pour afficher une guillemet simple, celle-ci devra apparaître dans des guillemets doubles et inversement. Pour afficher deux guillemets simples, il faudra les séparer dans deux jeux de guillemets doubles. Par défaut, on privilégiera les guillemets simples pour alléger le programme.
Ajouter un saut de ligne : à chaque nouvelle instruction PUT, SAS crée un saut de ligne. Les barres inclinées (slash /) ajoutent autant de sauts de ligne supplémentaires que désirés.
Ajouter des espaces : en écrivant une procédure SQL, on fait utile des indentations améliorant la lisibilité du code. Soit ces espaces de début de ligne sont ajoutés manuellement entre les guillemets, soit un arobas suivi du nombre d’espaces précède les guillemets (@6 crée une indentation de six espaces).
Enlever l’espace créé par défaut avant un début de guillemets : plusieurs jeux de guillemets sont fréquemment utilisés pour insérer entre les deux le nom d’une variable. Au final, il est parfois important que la valeur de la variable et le texte qui suit se suivent sans espace. Pour cela, il faut faire reculer le curseur d’un espace en ajoutant +(-1) avant le début de la guillemet.
2. Afficher les valeurs des variables d’un jeu de données
Afficher la valeur de la variable : pour voir la valeur des variables, il faut lister leur nom dans l’instruction PUT sans guillemet. C’est très pratique pour générer un code variant uniquement par la valeur de variables.
Afficher la valeur d’une variable et son nom : lorsqu’il s’agira de débugger un programme, vous repérerez plus rapidement dans la log vos valeurs si le nom de la variable apparaît également. Pour ce faire, vous avez deux options plus ou moins rapide.
-
Utiliser les guillemets vous obligera à écrire le nom de la variable deux fois : une fois entre guillemets et une fois sans guillemet.
-
Plus simplement, le nom de la variable est suivi du signe égal.
Lectures complémentaires : l’instruction PUT trouve tout son potentiel en combinaison avec d’autres instructions :
-
Pas de jeu de données (DATA _NULL) : l’instruction PUT est propre au data step. Quand vous ne voudrez pas créer un jeu de données SAS dans ce data step, vous aurez besoin du DATA _NULL_.
-
Changer de destination (FILE/FILENAME) : Pour diriger votre texte vers une autre sortie que la log, vous aurez besoin de l’instruction FILE. Selon que cette sortie sera vers un fichier externe ou vers la fenêtre OUTPUT de SAS, vous aurez besoin de l’instruction globale FILENAME ou non.
-
Alterner selon les valeurs des variables (BY/FIRST/LAST) : pour générer des codes variant selon la valeur de variables, il y a l’instruction BY en combinaison avec FIRST et LAST.
-
Début et fin de texte (_N_/END=) : pour afficher un texte unique en début et en fin, on peut faire référence à la variable automatique _N_ (if _N_=1) et à une variable définie avec l’option END= de l’instruction SET.
Bonjour, Je souhaiterais justement ajouter un retour chariot dans un champ.
Voici mon bout de programme concerné :
if PERCENT ne . then X2=compbl(COUNT|| » « ||compress(‘(‘||POUR||’ %)’) || » [« ||ICL|| »% ; « ||ICU|| »%] »);
Qui me donne mon effectif, mon % et les IC de la proportions entre crochets.
(ex : XX (YY.YY %) [ZZ.ZZ % ; ZZ.ZZ %]
Ce que je voudrais c’est le retour à la ligne après la fermeture de la parenthèse. Auriez-vous une idée SVP ?
Merci par avance
Bonjour SASReference,
Merci pour votre site internet qui est très bien conçu.
Je rencontre énormement de problèmes à vouloir envoyer via SAS des emails de façon automatique.
Je vais commencer par un problème basique :
Mes instructions PUT ne créent pas automatiquement de saut de ligne. Tout mon text est collé.
J’utilise SAS 9.2 et Lotus iNotes 8.5.3 FP4.
Merci d’avance pour vos conseils.