/** @file @brief testing gethistory service

SAS Macros

@li mp_assertcols.sas @li mp_assertcolvals.sas @li mp_assertdsobs.sas @li mf_getuniquefileref.sas @li mf_getuniquename.sas @li mp_filterstore.sas @li mx_testservice.sas **/ %let _program=&appLoc/services/editors/getdata; /** * Test 1 - basic fetch */ %let f1=%mf_getuniquefileref(); data _null_; file &f1 termstr=crlf; put 'LIBDS:$43.'; put "&dclib..MPE_TABLES"; run; %mx_testservice(&_program, viyacontext=&defaultcontext, inputfiles=&f1:sascontroltable, outlib=web1, mdebug=&sasjs_mdebug ) data _null_; infile "%sysfunc(pathname(WEB1))" lrecl=32767; input; putlog _infile_; run; data sasdata; set web1.sasdata; data sasparams; set web1.sasparams; data approvers; set web1.approvers; data dqrules; set web1.dqrules; data dqdata; set web1.dqdata; data cols; set web1.cols; data maxvarlengths; set web1.maxvarlengths; data xl_rules; set web1.xl_rules; data query; set web1.query; run; %mp_assertcols(work.query, desc=Query dataset is empty (test cols not obs as table has one row), cols=VARIABLE_NM RAW_VALUE SUBGROUP_ID, test=NONE, outds=work.test_results ) %mp_assertdsobs(work.sasdata, desc=Test1 - data is returned, test=HASOBS, outds=work.test_results ) /** * Test 2 - filtered view */ /* first, make filter */ data work.inquery; infile datalines4 dsd; input GROUP_LOGIC:$3. SUBGROUP_LOGIC:$3. SUBGROUP_ID:8. VARIABLE_NM:$32. OPERATOR_NM:$10. RAW_VALUE:$4000.; datalines4; AND,AND,1,LIBREF,CONTAINS,"'DC'" AND,OR,2,DSN,=,"'MPE_LOCK_ANYTABLE'" ;;;; run; %mp_filterstore( libds=&dc_libref..MPE_TABLES, filter_summary=&dc_libref..mpe_filteranytable, filter_detail=&dc_libref..mpe_filtersource, lock_table=&dc_libref..mpe_lockanytable, maxkeytable=&dc_libref..mpe_maxkeyvalues, queryds=work.inquery, outresult=work.result, outquery=work.query ) data _null_; set work.result; call symputx('filter_rk',filter_rk); run; %let f2=%mf_getuniquefileref(); data _null_; file &f2 termstr=crlf; put 'LIBDS:$43. FILTER_RK:8.'; put "&dclib..MPE_TABLES,&filter_rk"; run; %mx_testservice(&_program, viyacontext=&defaultcontext, inputfiles=&f2:sascontroltable, outlib=web2 ) data sasdata; set web2.sasdata; data query; set web2.query; run; %mp_assertdsobs(work.query, desc=Test2 - query has rows, test=HASOBS, outds=work.test_results ) %mp_assertdsobs(work.sasdata, desc=Test2 - data has just one row, test=EQUALS 1, outds=work.test_results ) /** * Test 3 - format catalog */ /* first, make sure format data exists */ %let fmtname=%upcase(%substr(%mf_getuniquename(prefix=FMT),1,15))NAME; /* add formats */ data work.fmts; length fmtname $32; fmtname="&fmtname"; do start=1 to 10; label= cats("&fmtname",start); output; end; run; proc sort data=work.fmts nodupkey; by fmtname; run; proc format cntlin=work.fmts library=dctest.dcfmts; run; /* now, make filter */ data work.inquery3; infile datalines4 dsd; input GROUP_LOGIC:$3. SUBGROUP_LOGIC:$3. SUBGROUP_ID:8. VARIABLE_NM:$32. OPERATOR_NM:$10. RAW_VALUE:$4000.; datalines4; AND,AND,1,FMTNAME,CONTAINS,"'&fmtname'" ;;;; run; %mp_filterstore( libds=DCTEST.DCFMTS-FC, filter_summary=&dc_libref..mpe_filteranytable, filter_detail=&dc_libref..mpe_filtersource, lock_table=&dc_libref..mpe_lockanytable, maxkeytable=&dc_libref..mpe_maxkeyvalues, queryds=work.inquery3, outresult=work.result3, outquery=work.query ) data _null_; set work.result3; call symputx('filter_rk3',filter_rk); run; %let f3=%mf_getuniquefileref(); data _null_; file &f3 termstr=crlf; put 'LIBDS:$43. FILTER_RK:8.'; put "DCTEST.DCFMTS-FC,&filter_rk3"; run; %mx_testservice(&_program, viyacontext=&defaultcontext, inputfiles=&f3:sascontroltable, outlib=web3, mdebug=&sasjs_mdebug ) data sasdata3; set web3.sasdata; putlog (_all_)(=); data query3; set web3.query; run; %mp_assertdsobs(work.query3, desc=Test3 - format query has rows, test=HASOBS, outds=work.test_results ) %mp_assertdsobs(work.sasdata3, desc=Test3 - format data has rows, test=EQUALS 10, outds=work.test_results )