$PBExportHeader$f_cmpl_with_parms.srf global type f_cmpl_with_parms from function_object end type forward prototypes global function integer f_cmpl_with_parms (string arg_formula, s_cmpl_parm arg_cmpl, ref decimal arg_qty, ref string arg_msg) end prototypes global function integer f_cmpl_with_parms (string arg_formula, s_cmpl_parm arg_cmpl, ref decimal arg_qty, ref string arg_msg);Int rslt = 1 datastore ds_cmp Decimal ls_number String ls_exp String ls_rs Decimal ld_temp string ls_temp ls_exp = arg_formula IF ls_exp = '' THEN GOTO ext ds_cmp = CREATE datastore ds_cmp.DataObject = "ds_cmp_qty" ds_cmp.SetTransObject(sqlca) ds_cmp.Retrieve() ds_cmp.InsertRow(0) long i for i = 1 to upperbound(arg_cmpl.parmname) f_str_replace(ls_exp, '['+arg_cmpl.parmname[i]+']', string(arg_cmpl.parmvalue[i])) next ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_exp+"'") IF ls_rs = '' THEN ds_cmp.AcceptText() ls_number = ds_cmp.Object.cmp[ds_cmp.GetRow()] ELSE rslt = 0 arg_msg = '非法格式,不能计算!'+ls_exp GOTO ext END IF arg_qty = ls_number ext: RETURN rslt end function