Publié le :
Test / Macro CREATION_INTERNE

Test de la macro mp_jsonout avec valeurs manquantes spéciales

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script crée un jeu de données contenant une série de valeurs numériques, y compris des valeurs manquantes spéciales (._, .a, .b, etc.). Il utilise la macro mp_jsonout pour exporter ces données en JSON. Le fichier résultant est ensuite relu et converti (les valeurs spéciales étant traitées comme du texte dans le JSON) pour vérifier que les données reconstruites correspondent exactement aux données d'origine via PROC COMPARE.
Analyse des données

Type : CREATION_INTERNE


La table 'demo' est générée localement via un Data Step itératif.

1 Bloc de code
DATA STEP Data
Explication :
Définition d'un fichier temporaire et création de la table de données 'demo' contenant diverses valeurs numériques et valeurs manquantes spéciales pour le test.
Copié !
1filename webref temp;
2 
3DATA demo;
4 DO x=._,.,.a,.b,.c,.d,.e,-99, 0, 1,2, 3.333333;
5 OUTPUT;
6 END;
7RUN;
2 Bloc de code
MACRO CALL
Explication :
Appel de la macro mp_jsonout pour exporter la table 'demo' vers le fichier temporaire 'webref', avec l'option missing=STRING pour gérer les formats spécifiques.
Copié !
1%mp_jsonout(OPEN,jref=webref)
2%mp_jsonout(OBJ,demo,jref=webref,fmt=N,missing=STRING)
3%mp_jsonout(CLOSE,jref=webref)
3 Bloc de code
DATA STEP
Explication :
Étape de débogage affichant le contenu brut du fichier JSON généré dans la log SAS.
Copié !
1DATA _null_;
2 INFILE webref;
3 INPUT;
4 putlog _infile_;
5RUN;
4 Bloc de code
DATA STEP Data
Explication :
Lecture du fichier JSON via le moteur LIBNAME JSON et reconstruction de la table 'test'. Inclut une logique pour reconvertir les chaînes de caractères (représentant les valeurs manquantes spéciales) en format numérique SAS.
Copié !
1LIBNAME web JSON fileref=webref;
2 
3DATA work.test(keep=x);
4 SET web.demo(rename=(x=y));
5 IF y ='_' THEN x=._;
6 ELSE IF anyalpha(y) THEN x=INPUT(cats(".",y),best.);
7 ELSE x=INPUT(y,best.);
8 put (_all_)(=);
9RUN;
5 Bloc de code
MACRO CALL
Explication :
Vérification qu'aucune erreur système (SYSCC) ne s'est produite jusqu'à présent.
Copié !
1%mp_assert(
2 iftrue=(&syscc=0),
3 desc=Checking for error condition with special missing export,
4 outds=work.test_results
5)
6 Bloc de code
PROC COMPARE
Explication :
Comparaison structurelle et du contenu entre la table originale 'demo' et la table issue du JSON 'test'.
Copié !
1 
2PROC COMPARE base=work.demo compare=work.test;
3QUIT;
4 
7 Bloc de code
MACRO CALL
Explication :
Assertion finale vérifiant que la PROC COMPARE n'a détecté aucune différence (SYSINFO=0).
Copié !
1%mp_assert(
2 iftrue=(&sysinfo=0),
3 desc=Returned json is identical to INPUT TABLE for all special missings,
4 outds=work.test_results
5)
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.