proc_vid.insert("fn9B4F059E_product_xs_decimal2", 1530465001LL); PROC fn9B4F059E_product_xs_decimal2 (bat[void,oid] loop000, bat[void,oid] outer000, bat[void,oid] order_000, bat[void,oid] inner000, bat[void,oid] v_vid000, bat[void,oid] v_iter000, bat[void,oid] v_item000, bat[void,int] v_kind000) : bat[void,bat] { # fn:product var iter; var item; var kind; var ipik; v_vid000 := [oid](v_vid000).access(BAT_WRITE); v_iter000 := [oid](v_iter000).access(BAT_WRITE); v_item000 := [oid](v_item000).access(BAT_WRITE); { # translateVar (seq) var vid := v_vid000.ord_uselect(1530465001@0); vid := vid.hmark(0@0); iter := vid.leftfetchjoin(v_iter000); item := vid.leftfetchjoin(v_item000); ipik := iter; } # end of translateVar (seq) if (ipik.count() != 0) { # fn:sum var iter_grp := iter.materialize(ipik); var iter_aggr := {prod}(item.leftfetchjoin(dec_values), iter_grp, reverse(loop000)).tmark(0@0); iter := loop000.tmark(0@0); item_dec_ := iter_aggr; } else { item_dec_ := empty_dec__bat; } # end of fn:sum { # saveResult1 () : int var iter001 := iter; var item_dec_001 := item_dec_; # end of saveResult1 () : int iter := loop000; item_dec_ := dbl(0); var item_result; if (iter001.count() != loop000.count()) { # add zero values needed for fn:sum var difference := reverse(loop000.tdiff(iter001)); difference := difference.hmark(0@0); var zeros := difference.leftfetchjoin(iter.reverse()).leftfetchjoin(item_dec_); var res_mu := merged_union(iter001, difference, item_dec_001, zeros); item_result := res_mu.fetch(1); } else { item_result := item_dec_001; } iter := loop000; kind := DEC; item := dec_values.addValues(item_result).tmark(0@0); item := item.tmark(0@0); } # end of deleteResult1 () return bat(void,bat,4).append(iter).append(item).append(kind).access(BAT_READ); } # end of PROC fn9B4F059E_product_xs_decimal2