RPGLE语言之EVAL,MOVE讲解(2)
2012/03/31 in 编程语言
ADMIN写在前面的话:在上一篇的博文中,主要讲解了EVAL的用法。此篇博文,则讲述MOVE的用法及注意事项。
二,MOVE
1.基本语法: MOVE FLD01 FLD02 //即将 FLD01 的值,赋值给 FLD02

2.注意事项:
1)MOVE操作,允许 FLD01,FLD02为不同类型,即一个可以是字符类型,另一个是数值类型。
2)MOVE默认是以右对齐的形式进行覆盖赋值的。
(1)当两操作数都为字符时:如FLD01 = ‘ABC ‘,FLD02 为’1234567′ ,则 MOVE FLD01 FLD02 操作之后, FLD02值为:’12ABC ‘,在MOVE操作中,空格也被当成字符进行处理;
(2)当FLD01为数值类型,FLD02为字符类型时:如 FLD01 = 12.34 ,FLD02 = ‘ABC’,则 MOVE FLD01 FLD02 操作之后,FLD02值为:’234′,此时,FLD01 中的小数点跟超出FLD02长度的字符,都会被锯掉;
(3)当FLD01为 字符(8A),FLD02 为 数值(5S2),MOVE操作会将字符右对齐赋值到数字中,如果字符后面有空,系统会自动做补零处理:如: FLD01 = ‘12345678′ , FLD02 = *ZEROS ,则 MOVE FLD01 FLD02 后,FLD02 = 456.78; 若: FLD01 = ’12345 ‘ , 则 MOVE FLD01 FLD02 后,FLD02 =450.00,FLD01 中的空格会默认补上零;
(4)当数字长度大于字符长度,即FLD02为数值(10S2),MOVE操作同样按右对齐的方式进行赋值,FLD02 比 FLD01多出来的高位将保持不变。如: FLD01 = ’12345678′ , FLD02 = 98765432.10,
则 MOVE FLD01 FLD02 后,FLD02 = 98123456.78,其中高位98保持不变。
所以,通常用MOVE操作对字符跟数值类型进行转换赋值,两操作数长度最好保持一致。
三 MOVEL
语法与MOVE基本相同,只不过,MOVEL 是左对齐的形式进行赋值。如: FLD01 =’123′,而FLD02为数值类型(8S2),则 MOVEL FLD01 FLD02 后,FLD02 = 123000.00 注意其在右边的补零填充。
我用菊子曰写博客,你呢?
