Type : MIXTE
La macro n'utilise aucun jeu de données. Elle se base sur une information qui peut être soit externe (un paramètre textuel fourni par l'utilisateur lors de l'appel) soit interne (la version du système SAS courant).
| 1 | %macro _catext(arg1, version=&arg1); |
| 2 | |
| 3 | %IF %LENGTH(&version) %THEN %DO; |
| 4 | %local i; |
| 5 | %let version=%upcase(&version); |
| 6 | |
| 7 | %IF %_substr(&version, 1, 1)=V %THEN %let version=%_substr(&version, 2); |
| 8 | |
| 9 | %let i=%index(&version, .); |
| 10 | |
| 11 | %IF &i %THEN %let version=%_substr(&version, 1, &i-1)%_substr(&version, &i+1); |
| 12 | |
| 13 | %let version=&version%_repeat(0, 3-%LENGTH(&version)); |
| 14 | |
| 15 | %IF &version>=700 %THEN sas7bcat; |
| 16 | %ELSE %IF &version=607 | &version=609 %THEN sct??; |
| 17 | %ELSE %IF &version=608 | &version=610 %THEN sc2; |
| 18 | %ELSE %IF &version=603 %THEN sct; |
| 19 | %ELSE %_unwind(sct??, sc2, sct??); |
| 20 | %END; |
| 21 | %ELSE %DO; |
| 22 | %IF %_version(7) %THEN sas7bcat; |
| 23 | %ELSE %_unwind(sct??, sc2, sct??); |
| 24 | %END; |
| 25 | |
| 26 | %mend _catext; |