发布于 2012-06-29 18:08:42
1楼
O #relayrqjidianq
问题就在这里,当#relayrqjidianq的实参是一个绝对地址引用的DB块数据时,这个形参#relayrqjidianq将用一个临时变量来处理这个参数,做为一个OUT参数,块开始执行不会读取实参到形参里,所以这个临时变量就没有被赋值,所以当你的输入实参是一个绝对地址引用的DB块数据时,这条指令就违背了临时变量先赋值后使用的原则,因为系统很多时候临时变量区域是重叠使用的,所以临时变量要先赋值后使用,不然就会引起错误。
如何避免这个问题呢?
1.可以使用IN_OUT替换OUT,因为IN_OUT在块开始时会读入实参到形参,所以临时变量也就被赋值了
2.可以用OPN指令先打开数据块,在参数输入DBXx.y这样的数据,或者是其他区域M、Q等,因为这些做为实参时是直接访问实参地址,而不会使用临时变量