any数据类型及参数传递
any是一种用于传递指针的形参数据类型,可视为pointe r 类型的扩展,较pointer 类型为复杂,长度为10个字节,增加的4 字节,最高字节 (byte 0) 固定为b#16#10,第二字节 (byte 1) 为any指针所指向区域的数据类型,而接下来的2 字节 (byte 3, 4) 组合为一个int ,为any指针所指定区域的长度,称为重复系数 (rep etition factor) 。其余6 字节作用与pointe r 类型相同。
编程举例:
// 冒泡排序程序,算法原理请参考相关资料
// 此例程仅提供存于db块中的int 类型数据排序
// 结果为int 数据由小到大排列,保存于原db块中
//fc3 块,形参定义如下:
// 输入参数dat a(a ny 类型);输出参数error(int类型)
// 若输出参数error不为0, 则说明排序未进行,
//error = 1, d ata(any 类型)输入指针无效
//error = 2, d ata(any 类型)输入指针地址非db地址
//error = 3, d ata(any 类型)输入指针指定区域类型非int 类型
set
save
l 0
t #err or
// 将输入any 指针‘data_ in’复制到lb0~lb9
l d [ ar1,p#0.0]
t ld 0
l d [ ar1,p#4.0]
t ld 4
l w [ ar1,p#8.0]
t lw 8
//any 指针 byte0 是b#1 6#10
l lb 0
l b#16#10
==i
jcn err1
// 输入数据区是否为db块
l lb 6
l b#16#84
==i
jcn err2
// 类型为int
l lb 1
l b#16#5
==i
jcn err3
// 打开输入db块
opn db [lw 4]
// 数据起始地址去掉数据区标识部分
l ld 6
l dw#16#ffffff
ad
t ld 10
// 计算最后一个存储单元指针保存至ld10
l lw 2
l 2
*i
t ld 14
l l#2
-d
sld 3
l ld 10
+d
t ld 10
// 外循环计数lw20 ,循环次数为(数据个数-1)次
l lw 2
l 1
-i
nxt2: t l w 20
l ld 10
lar1
l lw 20
// 嵌套循环计数lw18 ,循环次数为(lw20)次
nxt1: t l w 18
t a r1
l p#2. 0
-d
lar1
// 后一单元数据小于前一单元数据?
l db w [ar1,p#2.0]
l db w [ar1,p#0.0]
《i 《/i
jcn l1
// 否,交换2 单元数据
l db w [ar1,p#2.0]
l db w [ar1,p#0.0]
t dbw [ar1,p#2.0]
pop
t dbw [ar1,p#0.0]
l1: l lw 18
loop nxt1
l lw 20
loop nxt2
ju ex it
// 错误码1,any指针有错
err1: l 1
t #err or
ju ex it
// 错误码2,输入数据区不是db块
err2: l 2
t #err or
ju ex it
// 错误码3,输入数据类型不是int
err3: l 3
t #err or
exit: set
save
在ob1程序中调用举例:
a m 0.0
f p m 0.1
jcn exi t
call f c 3 //fc3 为上述排序程序
data : =p#db3.dbx 0.0 int 64 // 参数data, db3 中64个int 排序
error : =mw2
exit: nop 0
蓝牙耳机什么牌子好,听歌最好的蓝牙耳机
半导体市场的复苏全靠5G?今年恐怕没戏
宝马Vision iNEXT:一款全面互联、提供高度自动驾驶功能的纯电动汽车
西门子博途:SCL中FB模块的结构
2022骨科手术机器人的进展如何
对于ANY数据类型及参数传递的详细解析
纯电动汽车优缺点 纯电动汽车的组成
汇顶科技聘任胡煜华女士为公司总裁 负责公司整体运营管理
一文解析FCC的卫星标准
物联网快讯:上汽集团联合浦东新区、阿里三方打造的「智己汽车」正式启动
大数据+旅游业缔造“智慧旅游”2.0!
智慧城市中的LiFi
SAMSUNG三星车规电容的耐高温PN系列怎么样
未来的超级电池:你更中意哪一款
功能全面的双向可编程直流电源信号发生器
openharmony二次开发
什么是Pause帧?以太网MAC的pause流控介绍
OPPO积极备战5G手机,有望成为全球首批发布商用5G手机的企业
1799元配高端芯片?360手机N5剑指高端旗舰市场
Ni/P电镀对具有不同n型发射极的晶体硅衬底的影响