Publié le :
Macro CREATION_INTERNE

Ajouter un chemin à l'autocall SAS (SASAUTOS)

Ce code est également disponible en : Deutsch English Español
Attention : Ce code nécessite des droits administrateur.
Cette macro, `_insertAutoCallPath`, prend en entrée un chemin (`autocallpath`). Elle vérifie si ce chemin est déjà défini dans l'option système SASAUTOS pour éviter les doublons. Si le chemin n'est pas trouvé, elle détermine s'il s'agit d'un fileref valide (longueur de 8 caractères ou moins et déjà assigné) ou d'un chemin de répertoire. Elle ajoute ensuite le chemin ou le fileref à SASAUTOS en utilisant `OPTIONS APPEND`, en s'assurant que les chemins de répertoires sont correctement entourés de guillemets.
Analyse des données

Type : CREATION_INTERNE


La macro ne traite aucun jeu de données. Elle interagit avec l'environnement SAS en lisant et en modifiant une option système (`SASAUTOS`) via les fonctions `%sysfunc(getoption(...))` et `OPTIONS APPEND`.

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro `%_insertAutoCallPath`. Elle déclare des variables macro locales, puis vérifie si le paramètre d'entrée `autocallpath` est vide. Elle utilise `%sysfunc(getoption())` pour récupérer la valeur actuelle de SASAUTOS et `%sysfunc(findw())` pour chercher si le chemin y est déjà. Si le chemin n'y est pas, elle vérifie avec `%sysfunc(fileref())` si le paramètre est un fileref. Finalement, elle utilise `OPTIONS APPEND` pour ajouter soit le fileref, soit le chemin (placé entre guillemets) à la liste SASAUTOS.
Copié !
1%macro _insertAutoCallPath(autocallpath);
2
3 %local
4 l_currentAutoCallPath
5 l_found
6 l_autoCallPath
7 l_paramIsFileRef
8 ;
9
10 %IF (%LENGTH(&autocallpath.)=0) %THEN %goto exit;
11 
12 %*-- %_issueTraceMessage (&g_currentLogger., Searching for Autocallpath &autocallpath); --*;
13 
14 %let l_currentAutoCallPath=%sysfunc (getoption (SASAUTOS));
15 %let l_found=%sysfunc (findw (&l_currentAutoCallPath., &autocallpath., %str(% %"%(%)), I));
16
17 %if (&l_found. > 0) %then %do;
18 %*-- %_issueDebugMessage (&g_currentLogger., Autocallpath &autocallpath already set.); --*;
19 %end;
20 %else %do;
21 %let l_paramIsFileRef = 0;
22 %if (%length(&autocallpath.) <= 8) %then %do;
23 %let l_paramIsFileRef = %eval(%sysfunc (fileref (&autocallpath.))=0);
24 %end;
25
26 %if (&l_paramIsFileRef.) %then %do;
27 options append=(SASAUTOS=(&autocallpath.));
28 %end;
29 %else %do;
30 options append=(SASAUTOS=("&autocallpath."));
31 %END;
32 %END;
33
34 %exit:
35%mend _insertAutoCallPath;
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 : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. This file is part of SASUnit, the Unit testing framework for SAS(R) programs.