Type : CREATION_INTERNE
Les données traitées par ce script sont des chaînes de caractères et des variables macro, créées et manipulées directement dans le code pour simuler des listes de variables. Il n'y a pas d'accès à des jeux de données SAS externes (comme SASHELP) ou à des fichiers physiques.
| 1 | %macro test_varsInsert; |
| 2 | |
| 3 | %local vars exp n c; |
| 4 | %local tres;%let tres=%createTempVar;%local &tres; |
| 5 | |
| 6 | %let vars=%str(a b c); |
| 7 | %let n=2; |
| 8 | %let c=X; |
| 9 | %let exp=%str(a b X c); |
| 10 | %let r=%varsInsert(&vars,&n,&c); |
| 11 | %assertEqual(a=&exp,b=&r); |
| 12 | |
| 13 | %let vars=%str(a=1 b=-2 c=3); |
| 14 | %let n=3; |
| 15 | %let c=%str(d=100); |
| 16 | %let exp=%str(a=1 b=-2 c=3 d=100); |
| 17 | %let r=%varsInsert(&vars,&n,&c); |
| 18 | %assertEqual(a=&exp,b=&r); |
| 19 | |
| 20 | %let vars=%str(a b c); |
| 21 | %let n=4; |
| 22 | %let c=X; |
| 23 | %let exp=%str(a b c X); |
| 24 | %let r=%varsInsert(&vars,&n,&c); |
| 25 | %assertEqual(a=&exp,b=&r); |
| 26 | |
| 27 | %let vars=%str(); |
| 28 | %let n=4; |
| 29 | %let c=X; |
| 30 | %let exp=%str(X); |
| 31 | %let r=%varsInsert(&vars,&n,&c); |
| 32 | %assertEqual(a=&exp,b=&r); |
| 33 | |
| 34 | %let vars=%str(a b c); |
| 35 | %let n=0; |
| 36 | %let c=X; |
| 37 | %let exp=%str(X a b c); |
| 38 | %let r=%varsInsert(&vars,&n,&c); |
| 39 | %assertEqual(a=&exp,b=&r); |
| 40 | |
| 41 | |
| 42 | %let vars=%str(a b c); |
| 43 | %let n=-2; |
| 44 | %let c=X; |
| 45 | %let exp=%str(a b X c); |
| 46 | %let r=%varsInsert(&vars,&n,&c); |
| 47 | %assertEqual(a=&exp,b=&r); |
| 48 | |
| 49 | %let vars=%str(a b c); |
| 50 | %let n=-1; |
| 51 | %let c=X; |
| 52 | %let exp=%str(a b c X); |
| 53 | %let r=%varsInsert(&vars,&n,&c); |
| 54 | %assertEqual(a=&exp,b=&r); |
| 55 | |
| 56 | %let vars=%str(a b c); |
| 57 | %let n=0; |
| 58 | %let c=X; |
| 59 | %let exp=%str(X a b c); |
| 60 | %let r=%varsInsert(&vars,&n,&c); |
| 61 | %assertEqual(a=&exp,b=&r); |
| 62 | |
| 63 | |
| 64 | |
| 65 | %mend; |
| 66 | |
| 67 | |
| 68 | %test_varsInsert; |