/******************************************************************************
 * Programme : DataGridProvider
 * Reference : DATAGR299F
 * Source    : https://www.wearecas.eu/en/sampleCode/DATAGR299F
 ******************************************************************************/

/* --- BLOC 1 --- */
libname dtemp 'D:\Temp';

/* --- BLOC 2 --- */
%macro defaults ;
	%if %symexist(dset)=0 %then %do;
		%global dset;
		%let dset=sashelp.class;
	%end;
	%if ^%symexist(start) %then %do; %global start; %let start=0; %end;
	%if ^%symexist(limit) %then %do; %global limit; %let limit=160; %end;
%mend defaults;
%defaults

/* --- BLOC 3 --- */
data _null_ ;
	dsid=open("&dset");
	nobs=attrn(dsid,'nobs');
	call symput('nobs',strip(put(nobs,8.)));
run;

/* --- BLOC 4 --- */
%let first=%eval(&start+1);
%let last=%eval(&start+&limit);
%put first=&first last=&last nobs=&nobs;

/* --- BLOC 5 --- */
data subset;
	set &dset (firstobs=&first obs=&last);
run;

/* --- BLOC 6 --- */
data _null_ ;
	length type $ 1 char $ 128 num 8;
	file _webout;
	dsid=open("subset");
	/* ... logique de génération JSON ... */
	dsid=close(dsid);
run;

/* --- BLOC 7 --- */
%let _result=streamfragment ;
%STPBEGIN;
/* ... */
%STPEND;

