Database aubit_tests define lv_catalogue record like catalogue.* define lv_pass array[10] of char(50) define lv_result char(1) define lv_skip_reason char(20) # This assumes all the data has already been loaded into the database main define lv_mode integer if arg_val(1)="SHORT" THEN start report rep_tests to "rep_tests_short.html" let lv_mode=2 else let lv_mode=1 start report rep_tests to "rep_tests_long.html" end if declare c1 cursor for select * from catalogue order by test_no foreach c1 into lv_catalogue.* let lv_pass[1]="?" let lv_pass[2]="?" let lv_pass[3]="?" let lv_pass[4]="?" let lv_pass[5]="?" let lv_pass[6]="?" let lv_pass[7]="?" let lv_pass[8]="?" let lv_pass[9]="?" let lv_pass[10]="?" let lv_pass[1]=get_result(lv_catalogue.test_no,"ESQLI") let lv_pass[2]=get_result(lv_catalogue.test_no,"ECI") let lv_pass[3]=get_result(lv_catalogue.test_no,"ECP") output to report rep_tests(lv_catalogue.*, lv_pass[1], lv_pass[2], lv_pass[3], lv_pass[4], lv_pass[5], lv_pass[6], lv_pass[7], lv_pass[8], lv_pass[9], lv_pass[10],lv_mode) end foreach finish report rep_tests end main function get_result(lv_test,lv_class) define lv_class char(10) define lv_test integer define lv_result,lv_skip_reason char(50) define lv_r integer select result,skip_reason into lv_r,lv_skip_reason from results,test_Run where test_no=lv_catalogue.test_no and test_Run.timestamp=results.timestamp and test_run.log_text=lv_class if lv_skip_reason is not null and lv_R is null then return "!" end if if lv_r=1 then return "1" end if if lv_r=0 then return "0" end if if lv_r is null then return "*" end if return "?" end function report rep_tests(lv_cat, lv_p1,lv_p2,lv_p3,lv_p4,lv_p5,lv_p6,lv_p7,lv_p8,lv_p9,lv_p10,lv_mode) define lv_cat record like catalogue.* define lv_p1, lv_p2, lv_p3, lv_p4, lv_p5, lv_p6, lv_p7, lv_p8, lv_p9, lv_p10 char(1) define lv_mode integer output left margin 0 top margin 0 bottom margin 0 format first page header print ""; print ""; print ""; print ""; print ""; print ""; print ""; print ""; on every row if lv_mode=1 then print "", td(lv_cat.test_no), td(ft(lv_p1)), td(ft(lv_p2)), td(ft(lv_p3)), td(lv_cat.test_desc_txt), "" end if if lv_mode=2 then if lv_p1="0" or lv_p2="0" or lv_p3="0" then # Only show where something has failed print "", td(lv_cat.test_no), td(ft(lv_p1)), td(ft(lv_p2)), td(ft(lv_p3)), td(lv_cat.test_desc_txt), "" end if end if on last row print "
Test NoESQLIECIECPDescription
" end report function td(lv_str) define lv_str char(256) let lv_str="",lv_str clipped,"" return lv_str clipped end function function ft(x) define x char(1) if x="1" then return "ok" end if if x="0" then return "fail" end if if x="!" then return "skip" end if if x="*" then return "notdone" end if if x="?" then return "unknown" end if end function