发布于 2014-07-17 23:50:12
1楼
找到答案了,使用ANY型定义一个目标区域,该目标区域实际上就是整个数据块,然后使用SFC21初始化整个区域;具体说明如下:
1. 首先定义一个ANY型的临时变量
2. 为它的LW0字赋值为 W#16#1002,表示ANY寻址的数据类型为BYTE,
3, 通过DBLG为ANY型指针赋值给LW2,即重复因子(数据长度)
4. 通过DBNO为ANY型指针赋值给LW4,即DB号
5, 把指针 P#DBX0.0传送到LDW6
以上5个步骤就把数据块的整个区域定义为了一个ANY型的指针了,再通过调用SFC21,把0(类型为BYTE)作为源区域值,上面的定义的指针为目标区域值就可以了实现把整个数据块初始化为0了.
程序如下:
L 0
T #Zero //将累加器1中的内容复制到Zero(byte型)临时变量中
OPN #dbBlock //打开dbBLOCK,
L DBLG
LAR1 P##pFillDB //一个临时变量,类型为ANY,初值为P#0.0
T W [AR1,P#2.0]
L W#16#1002
T W [AR1,P#0.0] //表示寻址的数据类型为字节
L DBNO
T W [AR1,P#4.0]
L P#DBX 0.0
T D [AR1,P#6.0]
CALL "FILL"
BVAL :=#Zero
RET_VAL:=#iSFC21Return
BLK :=#pFillDB
漫漫人生海,滔滔命运湖