这俩货都是指针。在动态编程里用。
但是从好理解的角度来看,都给他们理解成数据对象。
都得指向其他的数据对象。不过field symbol指的是其他的数据对象内存地址的值。而数据引用只是指向内存地址。
1.Field symbol
当Field Symbol指向了其他的数据对象,那我们访问或者更改field symbol的值,就是等于更改了它指向的数据对象的值。
从代码里解释:
1.1 指向变量
162 行,assign了变量给FS之后,<fs>的值就已经变成了5。也就是说此时<fs>已经指向了v_field存址空间的值了。
接下来需要判断是否assign,(因为如果没有assign,那么fs指向nothing,系统会给一个dump,在和offset同用的时候,如果assign的超出了内存地址也会报dump)。判断后给<fs> = 20, 同时v_field变量的值也会被改成20。
1.2 指向内表行(在loop里面使用)
165 行,这个field symbol已经指向了内表的行。可以直接修改行内component的值了。内表会被直接修改。
这个也就是代替了工作区间的用法。在转换例程里面经常使用。
自建的内表也是行内定义个field symbol,就不用定义工作区间了。减少代码行数。
1.3 动态计算
比如动态计算表中的N列。
在KNC1中,sum UM01*-UM16*列的总和。
上面看到这条里面只有06S和06H里面有值。
那我们来计算:
174行,执行第一次的时候,很显然,<fs>被分配了wa_knc1-UM01S的值,由于取到的这列值就是0.00,所以<fs>=0.00。得一直到UM06S和UM06H才会有值。
运行第六次到173行,拿到了06S的值,接下来再去拿06H的值然后合计。
2. 数据引用
data reference.--见下篇。