Publié le :
Macro CREATION_INTERNE

Module Système CDARS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Cette macro, `AHGsendmsg`, est conçue pour créer ou mettre à jour un jeu de données SAS© (`allstd.msg_&receiver._&theuser`) afin d'y enregistrer des messages. Elle prend en paramètres le destinataire (`receiver`) et le contenu du message (`message`). L'expéditeur est automatiquement identifié via la variable `&theuser` et l'horodatage est capturé par `datetime()`. Le jeu de données de sortie est dynamiquement nommé en fonction du destinataire et de l'utilisateur. Si le jeu de données cible n'existe pas, il est créé avec le nouveau message comme première observation. S'il existe déjà, le message est ajouté comme une nouvelle observation, grâce à une logique conditionnelle (`%if %sysfunc(exist(...))`). Cela permet une gestion centralisée et tracée des communications ou des événements loggés.
Analyse des données

Type : CREATION_INTERNE


Les données (`deliverer`, `datetime`, `receiver`, `message`) sont générées directement au sein de la DATA step de la macro. Elles sont soit stockées dans un nouveau jeu de données créé par la macro, soit ajoutées à un jeu de données existant portant le même nom. Aucune source de données externe non gérée n'est requise.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP est l'exécution principale de la macro `AHGsendmsg`. Il commence par définir un nouveau jeu de données (`allstd.msg_&receiver._&theuser`) et spécifie les formats pour les variables `receiver`, `deliverer`, `message` et `datetime`. La condition `if _n_<=1` garantit que les variables `deliverer`, `datetime`, `receiver` et `message` sont initialisées avec les valeurs d'entrée ou automatiques uniquement lors de la première itération (création du jeu de données). La partie conditionnelle `%if %sysfunc(exist(...))` est cruciale : si le jeu de données cible existe déjà, elle utilise l'instruction `set` pour lire les observations existantes et les combine avec la nouvelle observation via `output`, assurant ainsi l'ajout du nouveau message. Si le jeu de données n'existe pas, la première exécution du `output` dans le `if _n_<=1` le crée avec le message initial.
Copié !
1DATA allstd.msg_&receiver._&theuser;
2 FORMAT receiver $20. deliverer $20. message $500. datetime datetime20.;
3 IF _n_<=1 THEN
4 DO;
5 deliverer="&theuser";
6 datetime=datetime();
7 receiver="&receiver";
8 message="&message";
9 OUTPUT;
10 END;
11 ;
12 %IF %sysfunc(exist(allstd.msg_&receiver._&theuser)) %THEN %DO;
13 SET allstd.msg_&receiver._&theuser;
14 OUTPUT;
15 %END;
16RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : CDARS System Module, $Author: Hui Liu $, $Revision: 1.1 $, Modification History.