vendredi 28 janvier 2011, par
Lorsque vous faites du développement sous SAS, et que votre programme est enfin rodé, vous allez vouloir faire en sorte qu’il s’exécute automatiquement, d’un simple clic. Voici une petite solution, via un batch windows, et quelques adaptations à vos scripts.
Le programme complet est en pièce jointe. Nous allons voir étape par étape son fonctionnement. Pour le créer, le bloc-notes de windows est suffisant et il suffit de modifier l’extension du fichier une fois enregistrer en .bat
On commence par changer de répertoire pour se placer dans le répertoire de travail de SAS.
echo Changement de repertoire vers SAS
pushd "C:\Document\My SAS Files\9.1"
On lance l’éxécution de SAS avec les bons paramètres :
echo Lancement de SAS
"C:\Program Files\SAS\SAS 9.1\sas.exe" -CONFIG "C:\Program Files\SAS\SAS 9.1\nls\fr\SASV9.CFG" -sysin "C:\MonEtude\MonProg.sas" -icon -log "C:\MonEtude\MonProg.log"
Si vous avez suivi mon article sur la détection de la bonne connexion au serveur SAS, vous pouvez intégrer ici la détection dans le log du résultat du Test. Cela permet de savoir si le programme SAS a pu s’exécuter normalement.
Pour cela, j’utilise grep. Pour ceux qui ne connaitrait pas, c’est un petit utilitaire qui provient du monde unix de recherche dans des fichiers. Et heureusement cela a été porté sous windows, ici : gnuwin32.sourceforge.net
Vous pourrez rafiner la détection en fonction de vos besoins, par exemple en recherchant la présence de warning dans le log. Ici, je recherche donc la ligne qui porte le résultat de mon test de connexion serveur. En fonction du résultat, il faudra peut-être que j’exécute à nouveau ma procédure.
Le fait d’exécuter tout le programme d’une seule traite, vous oblige, lors de la conception et de l’ordonnancement des étapes, à faire un développement plutôt sécurisé, qui valide bien chaque étape, s’auto-vérifie, et préfère ne rien faire plutôt que de faire une mauvaise étape. Car bien évidemment vous n’avez plus la sécurité proposé par l’exécution étape par étape que vous pouvez pratiquer lorsque vous êtes en mode interactif. Car rappelez-vous, en cas d’erreur, SAS a tendance à continuer son traitement, même avec des données incomplètes.
echo Recherche etat du serveur
grep "Connexion au serveur SAS" "C:\MonEtude\MonProg.log"
Il ne reste plus qu’à terminer le batch, retour à l’emplacement de départ via popd, et une pause afin que la fenêtre ne se ferme pas immédiatement à la fin de l’exécution, que l’on puisse surveiller le résultat.
echo Retour au repertoire de lancement
echo Fin du traitement : %DATE% %TIME%
popd
pause
exit /B
Comme je l’ai évoqué un peu plus tôt il y a quelques éléments à apporter à votre script SAS pour que tout fonctionne correctement.
Je passe les détails sur l’export des résultats : prévoyez des déposes sur serveur ou des envois par mail.
Par contre une première étape importante, lorsque vous ouvrez une session normale c’est l’identification auprès du serveur SAS, dans le cas ou vous n’avez pas une installation mono-poste. Il faudra adapter votre autoexec.sas pour qu’il vous identifie automatiquement. Plus précisément d’ailleurs, cela se passe dans le script d’ouverture de session.
Dernière petite recommandation : n’oubliez pas d’inclure un « signoff ;signoff; » à la fin de votre programme SAS s’il utilise une connexion serveur. Sinon le programme ne terminera pas, ou ne le fera pas « proprement ». De plus, je vous conseille de doubler la commande, cela fonctionne mieux, mais ne me demander pas pourquoi.
Voilà. En adaptant les emplacements, et en plaçant ce fichier dans le répertoire de votre programme SAS cela devrait fonctionner sans problème.