Si vous avez déjà essayé d'importer un fichier contenant des dates dans SAS sans aucune préparation, vous avez probablement cru que votre ordinateur essayait de communiquer avec vous en code morse. Au lieu du magnifique "15/04/2024" que vous attendiez, SAS vous a craché un nombre cryptique comme 23481.
Pas de panique, votre logiciel n'est pas cassé. La gestion des dates et des heures en informatique est toujours une aventure, et SAS a sa propre logique (très efficace, une fois qu'on l'a comprise). Laissez votre DeLorean au garage, on vous explique comment faire voyager vos données dans le temps avec les Informats et les FormatsInstructions de présentation appliquées aux valeurs des variables pour modifier leur apparence (dates, monnaies, libellés) sans altérer la donnée stockée dans les tables SAS Viya. {A98989CA}.pdf].
1. Le Big Bang selon SAS : Le 1er Janvier 1960
Pour comprendre comment SAS gère le temps, il faut connaître son "Point Zéro". Contrairement à nous qui comptons en jours, mois et années, le cerveau de SAS est purement mathématique. Pour SAS, une date n'est rien d'autre que le nombre de jours écoulés depuis le 1er janvier 1960 {A98989CA}.pdf].
- Le 2 janvier 1960 a pour valeur
1. - Le 31 décembre 1959 a pour valeur
-1. - Le 15 avril 2024 a pour valeur
23481.
De la même manière, une heure est stockée comme le nombre de secondes écoulées depuis minuit {A98989CA}.pdf]. Minuit pile vaut 0, et midi vaut 43200 (12 heures × 60 minutes × 60 secondes).
L'avantage énorme de ce système ? Vous pouvez faire des mathématiques avec vos dates ! (ex: date_livraison - date_commande vous donnera directement le délai en jours). L'inconvénient ? Il faut traduire nos dates humaines en nombres pour SAS, et inversement.
2. Les INFORMATS : Apprendre à SAS à lire
Quand vous importez des données brutes (via l'instruction INPUT), vous devez prévenir SAS qu'il va croiser une date, et surtout, sous quelle forme elle se présente. C'est le rôle des Informats {A98989CA}.pdf].
Dans notre boulangerie, nous voulons suivre l'heure de sortie du four de nos fournées. Voici quelques informats classiques :
DDMMYY10.: Pour lire une date française "Jour/Mois/Année" sur 10 caractères (ex: 15/04/2024) {A98989CA}.pdf].DATE9.: Pour le format anglophone classique de SAS (ex: 15APR2024) {A98989CA}.pdf].TIME5.: Pour lire une heure au format "HH:MM" (ex: 06:30) {A98989CA}.pdf].
3. Les FORMATSInstructions de présentation appliquées aux valeurs des variables pour modifier leur apparence (dates, monnaies, libellés) sans altérer la donnée stockée dans les tables SAS Viya. : Rendre ça lisible pour les humains
L'Informat a permis à SAS de comprendre la date et de la stocker sous forme de nombre (ex: 23481). Mais si vous faites un PROC PRINT maintenant, c'est ce nombre abscons qui va s'afficher.
Pour forcer SAS à ré-afficher ce nombre sous forme de calendrier compréhensible, il faut utiliser une instruction FORMAT {A98989CA}.pdf]. Généralement, on utilise le même format que l'informat (mais pas obligatoirement ! Vous pourriez lire une date au format américain et l'afficher au format français).
4. Le code en action : Le planning des fournées
Voici comment combiner tout cela dans une étape DATA propre et sans bavure :
SAS
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Objectif : Gérer les dates et heures de cuisson de notre boulangerie */
DATA planning_cuissons;
* 1. On donne les INFORMATS pour la lecture des données brutes ;
* Note : le $15. permet de lire le texte sur 15 caractères ;
INPUT produit_boulanger $15. date_fabrication DDMMYY10. heure_sortie TIME5.;
* 2. On applique les FORMATS pour l'affichage final (vital !) ;
FORMAT date_fabrication DDMMYY10. heure_sortie TIME5.;
* Exemple de calcul de date :
* Nos viennoiseries périment 2 jours après fabrication ;
date_peremption = date_fabrication + 2;
FORMAT date_peremption DDMMYY10.;
DATALINES;
Baguette_Tradi 15/04/2024 06:30
Pain_Au_Levain 15/04/2024 07:15
Croissant_Beur 16/04/2024 05:00
Brioche_Sucree 16/04/2024 06:45
;
RUN;
* Affichage du résultat ;
PROC PRINT DATA = planning_cuissons;
TITLE "Planning des Sorties de Four";
RUN;
💡 L'astuce du pro : N'oubliez jamais le point à la fin du nom de votre Informat ou Format (DDMMYY10. et non DDMMYY10). Sans ce petit point, SAS pensera que vous parlez d'une nouvelle variable au lieu d'une instruction de formatage, et votre journal d'erreurs va virer au rouge écarlate !
Maintenant que vous maîtrisez la lecture et la manipulation des données, il est temps de penser à la sauvegarde. Dans notre prochain article, nous verrons comment arrêter de tout perdre à la fermeture de SAS grâce aux bibliothèquesPointeurs logiques (Libref) reliant SAS Viya à des sources de données physiques (dossiers, bases de données, CAS) pour lire, écrire et organiser les tables de manière structurée. et à la sacro-sainte instruction LIBNAME.






