|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : novembre 2003 Messages : 142 ![]() |
Bonjour,
Le code suivant : Code :
Citation:
Citation:
Quelqu'un saurait-il comment procéder pour dépasser cette limite ? |
||||
|
|
00
|
|
|
#2 | |||||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Essaie cette écriture :
Code :
Code :
Citation:
|
|||||
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Comme le souligne SASADM, le souci ne vient que de la ligne
Il faut savoir que %IF est une instruction assez "spéciale". Quand on lui envoie une condition, elle cherche à lui trouver une valeur logique en s'aidant des fonctions d'évaluation comme %EVAL et %SYSEVALF, celles qui transforment les chaînes de caractères qu'on trouve dans les macro-variables en nombres. Quand le compilateur macro voit arriver ta condition Citation:
En revanche, la chaîne de caractères, elle, ne pose aucun souci, et il faut donc rédiger le %IF autrement. La proposition de SASADM est bonne, mais elle risque d'effrayer le commun des codeurs. Je te propose une alternative toute bête qui fonctionne dans de nombreux cas (pas tous) et ici aussi : si la longueur de &mot est supérieure à 1 (il y a au moins 1 caractère non vide dans &mot). Code :
Olivier |
|||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : novembre 2003 Messages : 142 ![]() |
Merci SASADM et Olivier, ça résoud tout à fait mon problème !
par contre Olivier, tu dis que ta solution ne fonctionne pas dans tous les cas. Pourrais-tu me préciser, sauf le cas où MOT est vide, dans quels autres cas elle ne fonctionne pas et pourquoi ? |
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : janvier 2010 Messages : 185 ![]() |
Dans ton cas ça fonctionnera toujours car tu manipules des chiffres et donc des caractères qui ne seront pas confondus par le compilateur SAS avec des éléments du langage macro.
La technique du length atteint ses limites quand il s'agit de tester la valeur d'un paramètres dont tu ne maitrises pas la forme. Dans le traitement de formulaire WEB par exemple où la saisie des champs est laissée libre à l'utilisateur. Là, la valeur du paramètre peut "casser" le code macro comme dans l'exemple ci-dessous : Code :
|
||
|
|
10
|
|
|
#6 |
|
Membre du Club
![]() Inscription : novembre 2003 Messages : 142 ![]() |
Merci !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com