Les données sont générées dynamiquement en capturant la sortie standard (stdout) des commandes système exécutées (par exemple, le listing de fichiers via 'ls').
1 Bloc de code
DATA STEP
Explication : Exécution d'une commande système 'cp' (copie de fichier) via la routine 'call system'. Cette méthode n'attend pas de retour de données dans SAS.
Copié !
data _NULL_;
call system("cp /home/nico/sasrep/test.sas /home/nico/sasrep/test1.sas");
run;
Explication : Utilisation d'un 'filename pipe' pour exécuter la commande 'ls' et lire son résultat directement dans le Data Step via 'infile', créant ainsi la table 'cmdresult'.
Explication : Définition de la macro '%CmdLine' qui généralise l'approche 'filename pipe'. Elle accepte la commande à exécuter et une table de sortie optionnelle. Si aucune table n'est spécifiée, le résultat est écrit dans la log via 'Put'.
Copié !
%macro CmdLine(cmd,table=_NULL_);
/*Do not confuse CMD and the macro-variable &CMD*/
%local CMD ;
Filename CMD Pipe
%if %qsubstr(&CMD,1,1) ~= %str(%")
%then "&CMD";
%else &CMD;;
%put $ &CMD;
%if &table ne _NULL_
%then %put => &table ;;
/* If the table parameter is not assigned. a dataset _NULL_ is generated */
Data &table;
Length LINERESULT $300;
infile CMD truncover;
input LINERESULT $300.;
%if &table = _NULL_
%then Put LINERESULT;;
Run;
/*execute the filename :*/
filename CMD;
%mend CmdLine;
1
%macro CmdLine(cmd,TABLE=_NULL_);
2
/*Do not confuse CMD and the macro-variable &CMD*/
3
%local CMD ;
4
Filename CMD Pipe
5
%IF %qsubstr(&CMD,1,1) ~= %str(%")
6
%then "&CMD";
7
%ELSE &CMD;;
8
%put $ &CMD;
9
%IF &TABLE ne _NULL_
10
%THEN %put => &TABLE ;;
11
/* If the table parameter is not assigned. a dataset _NULL_ is generated */
12
DATA &TABLE;
13
LENGTH LINERESULT $300;
14
INFILE CMD truncover;
15
INPUT LINERESULT $300.;
16
%IF &TABLE = _NULL_
17
%THEN Put LINERESULT;;
18
RUN;
19
/*execute the filename :*/
20
filename CMD;
21
%mend CmdLine;
4 Bloc de code
MACRO CALL Data
Explication : Appel de la macro '%CmdLine' pour lister un répertoire et stocker le résultat dans la table 'work.test', suivi de l'affichage de cette table.
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 : Author(s) : Nicolas DUPONT
« Contrairement aux procédures natives, les commandes système ne renvoient pas toujours un code retour explicite dans le journal SAS. Après un CALL SYSTEM, vérifiez systématiquement la valeur de la variable automatique &SYSRC. Une valeur différente de 0 indique généralement un échec de la commande au niveau du système d'exploitation. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.