Script de test pour la macro mv_createfile

ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Niveau de difficulté
Débutant
Publié le :
Attention : Ce code nécessite des droits administrateur.
Le script exécute six tests séquentiels pour valider le fonctionnement de la macro `%mv_createfile`. Chaque test prépare des données ou un contenu via des étapes DATA ou des filerefs, puis appelle la macro pour créer un fichier sur le serveur dans un emplacement défini par la macro-variable `&mcTestAppLoc`. L'existence et le contenu des fichiers créés sont vérifiés à l'aide des macros de test `%mp_assert` et `%mfv_existfile`. L'utilisation de l'engine `filesrvc` pour lire et écrire des fichiers démontre une interaction directe avec le système de fichiers du serveur, une opération typiquement administrative dans SAS© Viya.
Analyse des données

Type : CREATION_INTERNE


Toutes les données et les contenus de fichiers utilisés par le script sont générés en interne. Les étapes DATA _NULL_ avec des instructions PUT créent dynamiquement le contenu textuel, et une étape DATA standard crée un jeu de données de test. Aucune source de données externe n'est requise.

1 Bloc de code
DATA STEP Data
Explication :
Test 1 : Crée un fichier texte simple. Une étape DATA _NULL_ écrit une chaîne de caractères dans un fileref temporaire, qui est ensuite utilisé par `%mv_createfile` pour créer un fichier .txt. `%mp_assert` valide que le fichier existe bien sur le serveur.
Copié !
1options mprint;
2 
3%let file=%mf_uid();
4 
5%put TEST 1 - basic file upload ;
6filename somefile temp;
7DATA _null_;
8 file somefile;
9 put 'hello testings';
10RUN;
11%mp_assertscope(SNAPSHOT)
12%mv_createfile(path=&mcTestAppLoc, name=&file..txt,inref=somefile,mdebug=1)
13%mp_assertscope(COMPARE
14 ,ignorelist=MCLIB0_JADP1LEN MCLIB0_JADP2LEN MCLIB0_JADPNUM
15 MCLIB0_JADVLEN MCLIB2_JADP1LEN
16 SASJSPROCESSMODE SASJS_STPSRV_HEADER_LOC
17 MCLIB2_JADP2LEN MCLIB2_JADPNUM MCLIB2_JADVLEN
18)
19 
20%mp_assert(
21 iftrue=(%mfv_existfile(&mcTestAppLoc/&file..txt)=1),
22 desc=Check IF created file exists
23)
2 Bloc de code
DATA STEP Data
Explication :
Test 2 : Crée un fichier HTML. Le contenu HTML est généré dans un fileref temporaire et la macro `%mv_createfile` le transforme en fichier `test.html` sur le serveur.
Copié !
1%put TEST 2 - html file;
2filename f2 temp;
3DATA _null_;
4 file f2;
5 put '<html><body><p>Hello world</p></body></html>';
6RUN;
7%mv_createfile(path=&mcTestAppLoc, name=test.html,inref=f2,mdebug=1)
8 
9%mp_assert(
10 iftrue=(%mfv_existfile(&mcTestAppLoc/test.html)=1),
11 desc=Check IF created file exists
12)
3 Bloc de code
DATA STEP Data
Explication :
Test 3 : Téléverse un jeu de données SAS. Un jeu de données est créé dans WORK, un fileref est pointé sur son fichier binaire `.sas7bdat`, puis `%mv_createfile` le copie sur le serveur.
Copié !
1%put TEST 3 - dataset upload ;
2DATA temp;
3x=1;
4RUN;
5filename ds "%sysfunc(pathname(work))/temp.sas7bdat";
6 
7%mv_createfile(path=&mcTestAppLoc, name=&file..sas7bdat,inref=ds,mdebug=1)
8 
9%mp_assert(
10 iftrue=(%mfv_existfile(&mcTestAppLoc/&file..sas7bdat)=1),
11 desc=Check IF created dataset exists
12)
4 Bloc de code
DATA STEP Data
Explication :
Test 4 : Crée un fichier de programme SAS. Une commande SAS est écrite dans un fichier temporaire, qui est ensuite sauvegardé en tant que `test4.sas`.
Copié !
1%put TEST 4 - create a .sas file;
2filename f4 temp;
3DATA _null_;
4 file f4;
5 put '%put hello FromSASStudioBailey; ';
6RUN;
7%mv_createfile(path=&mcTestAppLoc, name=test4.sas,inref=f4,mdebug=1)
8 
9%mp_assert(
10 iftrue=(%mfv_existfile(&mcTestAppLoc/test4.sas)=1),
11 desc=Check IF created sas program exists
12)
5 Bloc de code
FILENAME
Explication :
Test 5 : Copie un fichier en utilisant le service `filesrvc`. Un fileref lit le fichier `test4.sas` créé précédemment via `filesrvc`, et `%mv_createfile` l'utilise comme source pour créer un nouveau fichier `test5.sas`.
Copié !
1%put TEST 5 - reading from files service and writing back;
2filename sendfrom filesrvc folderpath="&mcTestAppLoc" filename='test4.sas';
3 
4OPTIONS MERROR SYMBOLGEN MLOGIC MPRINT;
5 
6%mv_createfile(path=&mcTestAppLoc,name=test5.sas,inref=sendfrom,mdebug=1) ;
6 Bloc de code
DATA STEP Data
Explication :
Test 6 : Valide la fonctionnalité de recherche-remplacement. Un contenu est créé, puis `%mv_createfile` est appelée avec le paramètre `swap` pour substituer une chaîne de caractères. Le script lit ensuite le fichier résultant pour confirmer que la substitution a réussi.
Copié !
1%put TEST 6 - try the find and replace;
2filename f6 temp;
3DATA _null_;
4 file f6;
5 put '//Hello world!';
6 put 'let var=/some/path/name;';
7RUN;
8%let in=/some/path/name;
9%let out=/final/destination;
10%mv_createfile(path=&mcTestAppLoc, name=test6.js,inref=f6,mdebug=1,swap=in out)
11 
12filename getback filesrvc folderpath="&mcTestAppLoc" filename='test6.js';
13 
14%let test6=0;
15DATA _null_;
16 INFILE getback;
17 INPUT;
18 IF _infile_="let var=&out;" THEN call symputx('test6',1);
19 putlog _infile_;
20RUN;
21 
22%mp_assert(
23 iftrue=(&test6=1),
24 desc=Check IF find & replace worked
25)
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.