之前有网友提问,比如 1到5号仓对应5个重量,将重量从小到大排列好以后,还要能够知道从小到大的这个重要对应的仓号;排序很简单,但是对号入座有点麻烦了;我是这么做的,先将源数据拷贝到一个位置,然后在分配一个相同大小的位置,按现有的结构分配5个编号,当用冒泡法进行数据排序的时候,序号跟着一起变动,这样好像就解决问题了;
在DB10里定义若干个INT数据类型DBW0到DBW8为源数据,DBW10到DBW18为数据排序的位置,DBW20到DBW28为序号。
CALL "BLKMOV"
SRCBLK :=P#DB10.DBX 0.0 INT 5
RET_VAL:=#TEMP1
DSTBLK :=P#DB10.DBX 10.0 INT 5 //先做一个数据的拷贝
OPN DB 10
LAR1 P#20.0
L 1
T #TEMP3
L 5
C001: T #LOOP3
L #TEMP3
T DBW [AR1,P#0.0]
L #TEMP3
+ 1
T #TEMP3
+AR1 P#2.0
L #LOOP3
LOOP C001 //循环写入1到5的序号
L 4
A003: T #LOOP1
LAR1 P#10.0
L 4
A002: T #LOOP2
L DBW [AR1,P#0.0]
L DBW [AR1,P#2.0]
>I
JCN A001
L DBW [AR1,P#0.0]
T #TEMP2
L DBW [AR1,P#2.0]
T DBW [AR1,P#0.0]
L #TEMP2
T DBW [AR1,P#2.0] //数据大小的排列
L DBW [AR1,P#10.0]
T #TEMP4
L DBW [AR1,P#12.0]
T DBW [AR1,P#10.0]
L #TEMP4
T DBW [AR1,P#12.0] //序号也要跟着走
A001: +AR1 P#2.0
L #LOOP2
LOOP A002
L #LOOP1
LOOP A003
模拟后的图片:

以重量为30为例,对应的就是4号仓,正确的。