Publié le :

DataGridProvider

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script est conçu pour être exécuté comme une Stored Process ou un Job SAS©. Il prend en entrée des paramètres macro (dset, start, limit) pour définir la table source et la fenêtre de pagination. Il calcule le nombre total d'observations, extrait le sous-ensemble demandé dans une table temporaire, puis génère manuellement une structure JSON contenant le nombre total d'enregistrements et le tableau des données pour la page demandée, le tout envoyé vers le flux de sortie web (_webout).
Analyse des données

Type : MIXTE


Par défaut, le script utilise 'sashelp.class' via la macro %defaults. La table source peut être modifiée dynamiquement via la macro variable 'dset'. Une librairie 'dtemp' pointant vers 'D:\Temp' est définie mais n'est pas explicitement utilisée dans la logique de transformation principale.

1 Bloc de code
LIBNAME
Explication :
Définition d'une librairie temporaire (chemin Windows, à adapter pour Viya/Linux).
Copié !
1LIBNAME dtemp 'D:\Temp' ;
2 Bloc de code
MACRO
Explication :
Initialisation des paramètres par défaut (table source, début, limite) si ceux-ci ne sont pas fournis par l'environnement appelant.
Copié !
1%macro defaults ;
2 %IF %symexist(dset)=0 %THEN %DO;
3 %global dset;
4 %let dset=sashelp.class;
5 %END;
6 %IF ^%symexist(start) %THEN %DO; %global start; %let start=0; %END;
7 %IF ^%symexist(limit) %THEN %DO; %global limit; %let limit=160; %END;
8%mend defaults;
9%defaults
3 Bloc de code
DATA STEP
Explication :
Ouverture de la table source pour récupérer le nombre total d'observations (méta-donnée 'nobs') et stockage dans une macro variable.
Copié !
1DATA _null_ ;
2 dsid=open("&dset");
3 nobs=attrn(dsid,'nobs');
4 call symput('nobs',strip(put(nobs,8.)));
5RUN;
4 Bloc de code
MACRO
Explication :
Calcul des bornes de pagination (premier et dernier enregistrement à extraire).
Copié !
1%let first=%eval(&start+1);
2%let last=%eval(&start+&limit);
3%put first=&first last=&last nobs=&nobs;
4 
5 Bloc de code
DATA STEP Data
Explication :
Création de la table 'subset' contenant uniquement les données de la page demandée.
Copié !
1 
2DATA subset;
3SET &dset (firstobs=&first obs=&last);
4RUN;
5 
6 Bloc de code
DATA STEP
Explication :
Étape DATA _NULL_ qui parcourt la table 'subset' et écrit manuellement une structure JSON formatée (totalCount, rows) vers le filestream de sortie '_webout'. Le code inspecte dynamiquement les types de variables (numérique ou caractère) pour formater correctement les valeurs JSON.
Copié !
1DATA _null_ ;
2 LENGTH type $ 1 char $ 128 num 8;
3 file _webout;
4 dsid=open("subset");
5 /* ... logique de génération JSON ... */
6 dsid=close(dsid);
7RUN;
7 Bloc de code
MACRO
Explication :
Appel des macros standards de Stored Process pour finaliser l'exécution et gérer la sortie.
Copié !
1%let _result=streamfragment ;
2%STPBEGIN;
3/* ... */
4%STPEND;
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.