/ / Pourquoi les parenthèses finales ne ferment-elles pas ma fonction% nrstr? - sas, sas-macro

Pourquoi les parenthèses finales ne ferment-elles pas ma fonction% nrstr? - sas, sas-macro

Mon objectif est de passer des symboles de pourcentage dans une chaîne.

Il n'y a pas de résultat au% put quand je cours:

%let foo = %nrstr(bar%x%);
%put foo is &foo;

Si je recommence, j’obtiens des erreurs, la première est

AVERTISSEMENT: La chaîne citée en cours de traitement est devenue plus de 262 octets de long. Vous pourriez avoir des guillemets déséquilibrés. "

Dans Enterprise Guide, l’agenda de parenthèse ne détecte pas la parenthèse proche.

Ajouter une autre parenthèse proche:

%let foo = %nrstr(bar%x%));

résultats:

foo est bar% x)

% nrstr laissera passer le résultat entre parenthèses non équilibrées, ce qui n’est donc pas surprenant. Cela semblerait impliquer que l’extrait contenant seulement les parenthèses ouverte et fermée est équilibré.

Réponses:

3 pour la réponse № 1

Le symbole de pourcentage avant la parenthèse proche était à l'origine du comportement inattendu.

Par SAS (R) 9.2 Macro Language: Référence:

signe de pourcentage avant une parenthèse - par exemple,% (ou%) deux signes de pourcentage (%%): EXEMPLE:% let x =% str (20%);

faire le bon code:

%let foo = %nrstr(bar%x%%);
%put foo is &foo;

résultant en:

foo est bar% x%