L'intérêt de cette macro %gif réside dans sa capacité à standardiser la production de rendus visuels tout en restant flexible. En encapsulant la gestion du fileref (gsasfile) et les GOPTIONS de dimensionnement, elle libère le développeur des configurations redondantes. Le point fort ici est la gestion intelligente du pilote (device) : le script privilégie l'argument passé à la macro, mais sait rebondir sur une variable d'environnement système via %SYSGET. C'est une excellente pratique pour garantir que vos programmes SAS restent portables et s'adaptent automatiquement à l'OS ou à la session client utilisée, sans modification du code source.
Type : CREATION_INTERNE
La macro ne traite aucune donnée en entrée. Son rôle est de configurer l'environnement graphique pour la génération de fichiers, et non de manipuler des tables de données.
| 1 | %macro gif( |
| 2 | fn, |
| 3 | device=, |
| 4 | hsize=, |
| 5 | vsize= |
| 6 | ); |
| 7 | |
| 8 | %*-- Get the basename of the graphic file(s); |
| 9 | %sasgfile(gif,&fn); |
| 10 | |
| 11 | %IF %LENGTH(&device) %THEN %DO; |
| 12 | %let dev=&device; |
| 13 | %END; |
| 14 | %ELSE %DO; |
| 15 | %IF not %defined(DRIVER) %THEN |
| 16 | %let driver =%SYSGET(DRIVER); |
| 17 | %IF &driver=%str() %THEN %let driver = gif; |
| 18 | %let dev=&driver; |
| 19 | %END; |
| 20 | |
| 21 | %let devtyp = GIF; |
| 22 | %let fig=1; |
| 23 | %IF %defined(gsasdir)=0 %THEN %let gsasdir=; |
| 24 | %put GIF: gsasfile is: "&gsasdir.&gsasfile" (&dev driver); |
| 25 | filename gsasfile "&gsasdir.&gsasfile"; |
| 26 | |
| 27 | goptions device=&dev gaccess=gsasfile |
| 28 | /* hpos=80 vpos=75 match pscolor device */ |
| 29 | gsflen=80 gsfmode=replace; |
| 30 | goptions vsize=&vsize hsize=&hsize; |
| 31 | %mend gif; |