From fa377305e704e0ee0a9958eab00c3e690590f446 Mon Sep 17 00:00:00 2001 From: Jan Wielemaker Date: Wed, 31 Oct 2012 11:16:58 +0100 Subject: [PATCH] Implement errors for RANK and / --- ods_table.pl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ods_table.pl b/ods_table.pl index 6065972..7f5ba00 100644 --- a/ods_table.pl +++ b/ods_table.pl @@ -866,7 +866,10 @@ ods_eval(A/B, Value, M) :- !, ods_eval_typed(A, number, VA, M), ods_eval_typed(B, number, VB, M), - Value is VA/VB. + ( VB =:= 0 + -> Value = #('DIV/0!') + ; Value is VA/VB + ). ods_eval(-A, Value, M) :- !, ods_eval_typed(A, number, VA, M), Value is -VA. @@ -1018,12 +1021,17 @@ eval('RANK'(V, List), Rank) :- msort(List, Sorted), reverse(Sorted, Descending), - nth1(Rank, Descending, V). + ( nth1(Rank, Descending, V) + -> true + ; Rank = #('N/A') + ). eval('RANK'(V, List, Order), Rank) :- ( Order =:= 0 -> eval('RANK'(V, List), Rank) ; msort(List, Ascending), nth1(Rank, Ascending, V) + -> true + ; Rank = #('N/A') ). eval('ISERROR'(T), True) :- ( T = #(_)