“自定义多选”参数类型
功能说明:在函数的参数类型中新增“自定义多选”类型,此类型适用于需要进行多项勾选的情景
用法:参数类型设置为“自定义多选”类型后,参数定义的操作类似于自定义参数的设置,但是对于各项的取值有特别要求。
在参数定义中,各项取值应该设置为1、2、4、8、16这种2^n次方模式。
单选时,参数值取的是对应被选项的值。
多选时,参数值取的是多项被选项值的或(即各项值的和)。
用户在使用中,需要对该参数值进行解析到对应位数(二进制)的值对应到各项上,
单项上1表示被选定,0表示没有被选定。
这样子描述可能比较抽象,下面我们提供一个范例,进行辅助理解。
范例:封装函数Test_CDSParam2,实现根据勾选项输出指定日上证50成份股的行情指标
Function Test_CDSParam2(Endt,outField);
Begin
{//返回上证50成份股在指定日的指定行情指标数据
可选指标outField:
1:名称 对应二进制1
2:收盘价 对应二进制10
4:成交量 对应二进制100
8:最高价 对应二进制1000
16:最低价 对应二进制10000
32:开盘价 对应二进制100000
// return array(outField.&1,outField.&2,outField.&4,outField.&8,outField.&16,outField.&32);
}
ov:=BackUpSystemParameters2();
setsysparam(pn_date(),Endt);
stocks:=select thisrow as "StockID" from GetBKByDate("SH000016",Endt) end;//取指数在指定日的成份股
if outField.&1 then //输出名称--借助位与运算进行判断是否被勾选
stocks:=select *,StockNameEndT(['StockID'],Endt) as '名称' from stocks end;
if outField.&2 then //输收盘价
stocks:=select *,spec(close(),['StockID']) as '收盘价' from stocks end;
if outField.&4 then //输出成交量
stocks:=select *,spec(vol(),['StockID']) as '成交量' from stocks end;
if outField.&8 then //输出最高价
stocks:=select *,spec(high(),['StockID']) as '最高价' from stocks end;
if outField.&16 then//输出最低价
stocks:=select *,spec(low(),['StockID']) as '最低价' from stocks end;
if outField.&32 then//输出开盘价
stocks:=select *,spec(open(),['StockID']) as '开盘价' from stocks end;
return stocks;
End;
参数outField的设置如下:
执行调用:输出“证券名称”,“收盘价”,“成交量”,“开盘价”这四个指标,选项如下
执行结果: