Publié le :
Macro CREATION_INTERNE

Macro pour la création de variables macro distantes

Attention : Ce code nécessite des droits administrateur.
La macro `%syslput612` est conçue pour créer dynamiquement une variable macro sur un environnement SAS© distant. Elle prend trois paramètres : `macvar` (le nom de la variable macro à créer), `macval` (sa valeur) et `remote` (optionnel, l'identifiant de la session distante ; par défaut, la session courante). Elle utilise la commande `rsubmit` pour exécuter le code sur la session distante, garantissant que la variable macro est définie dans cet environnement. Les options `nosource` et `nonotes` sont utilisées temporairement pour masquer le code et les notes du log sur la session distante lors de l'affectation de la variable, puis restaurées. Cette macro est utile pour la coordination entre sessions SAS© locales et distantes, typiquement dans des architectures client-serveur ou distribuées.
Analyse des données

Type : CREATION_INTERNE


Le script ne manipule pas de données au sens de tables SAS ou de fichiers externes. Il se concentre sur la création et l'affectation de variables macro en mémoire dans une session SAS distante. Les valeurs sont passées directement comme paramètres de la macro.

1 Bloc de code
MACRO syslput612
Explication :
Ce bloc définit la macro `%syslput612`. Il construit une chaîne de caractères (`%let str=`) qui encapsule une commande `rsubmit` vers la session distante spécifiée par `&remote` (ou la session par défaut). À l'intérieur du bloc `rsubmit`, les options `nosource` et `nonotes` sont temporairement activées pour limiter la verbosité du log distant. L'instruction clé `%nrstr(%let) %str(&macvar = &macval;)` utilise `%nrstr` pour protéger le `%let` et `%str` pour construire l'affectation de la variable, garantissant qu'elle est exécutée sur la session distante pour y créer la variable macro `&macvar` avec la valeur `&macval`. Les options `source` et `endrsubmit;` terminent le bloc distant. Finalement, `&str;` exécute la commande construite, et `options notes source;` restaure les paramètres de logging sur la session locale.
Copié !
1%macro syslput612(macvar,macval,remote=);
2/*--------------------------------------------------------------
3 *
4 * SAS TEST LIBRARY
5 *
6 * NAME: SYSLPUT
7 * TITLE: MACRO FOR CREATING REMOTE MACRO VARIABLES
8 * INPUT:
9 * OUTPUT:
10 * SPEC.REQ:
11 * SYSTEMS: ALL
12 * PRODUCT: SAS/CONNECT
13 * KEYS:
14 * REF:
15 * COMMENTS:
16 * SUPPORT: LANGSTON, B.
17 * UPDATE: 01mar95.
18 *
19 *--------------------------------------------------------------*/
20 /****************************************************************/
21 /* SYSLPUT is the opposite of SYSRPUT. SYSLPUT creates a macro*/
22 /* variable in the remote environment. The user must specify */
23 /* the macro variable and its value. Optionally, the user */
24 /* may specify the remote session id; the default session is */
25 /* the current session. */
26 /****************************************************************/
27 options nosource nonotes;
28 %let str=%str(rsubmit &remote;options nosource;)
29 %nrstr(%let) %str(&macvar = &macval;options SOURCE;endrsubmit;);
30 &str; options notes SOURCE;
31 /*----------------------------------------------------------------*
32 EXAMPLES:
33 
34 (1) Macro variable to current (default) remote session:
35 
36 %syslput(rc,&sysinfo)
37 
38 (2) Macro variable to specified remote session:
39 
40 %syslput(flag,1,remote=mvs)
41 
42 *----------------------------------------------------------------*/
43 %mend syslput612;
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 : SAS TEST LIBRARY - NAME: SYSLPUT - TITLE: MACRO FOR CREATING REMOTE MACRO VARIABLES - SUPPORT: LANGSTON, B. - UPDATE: 01mar95.