Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24216
  • 博文数量: 3
  • 博客积分: 74
  • 博客等级: 民兵
  • 技术积分: 61
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-05 14:35
文章分类
文章存档

2011年(3)

我的朋友

分类: 系统运维

2011-11-17 23:54:34

   

    AS400中,常用的赋值指令是EVALMOVE。如果不清楚两者的区别,就不利于程序开发,因为错误的使用容易产生逻辑错误。下面总结一下两者的特点与区别,尽可能通俗易懂。

    1.MOVE操作的两个变量可以不是同一类型的,即允许一个为字符,一个为数字,赋值方向是从右向左(MOVEL从左向右赋值)。而EVAL操作的两个变量必须是同一类型的,赋值方向是从左向右。

    2.MOVE 操作中,允许Result 字符进行定义,而EVAL不具备这种灵活的功能。

    3.MOVE 使用的是覆盖方式赋值,即没有被覆盖的位保留原值。而EVAL在赋值之前,要把被赋值变量清空。

    4.MOVE相比EVAL的最大优势是可以实现字符和数字之间的灵活转换。针对这一点,需要明白字符的空位是空字符,空字符也是一个字符。数字的前面若有空位,在数字赋值到字符型变量时,前面的空位不再是0,而是空字符。字符的后面若有空位,在字符赋值到数字型变量时,后面的空位系统会自动做补零处理。 所以通常,字符转数字时,长度最好保持一致,以免得赋值时有意外。

    5.日期、时间型变量与字符、数字的转换中,MOVE可以起到类似内置函数%Time的功能。针对这一点,我们要注意数字转化为日期和时间,可以不要时间格式的间隔符;但是字符转化为日期和时间,则需要时间格式的间隔符。

    6.EVAL实现两个数字型变量的赋值,如果变量被赋值到更短的变量中,系统会报错。

    7.EVAL可以实现字符的拼接,MOVE不具备此功能。

         8.EVAL除了能实现数学运算,还能四舍五入:对于数字运算,EVAL(H),是四舍五入的运算;EVAL,仅仅只是四舍,没有五入。

阅读(5860) | 评论(6) | 转发(3) |
1

上一篇:没有了

下一篇:RPG编程技巧2_Chain、Setll、Read的作用与区别

给主人留下些什么吧!~~

星期五啦2011-11-23 00:54:16

分析的挺好的

十七岁的回忆2011-11-20 19:08:28

顶一下~

☆彼岸★花开2011-11-20 18:54:58

狂想程序员: 分享知识是一种快乐,呵呵。.....
恩,是的,呵呵~

niuhua772011-11-20 11:06:58

不错,顶一个

狂想程序员2011-11-20 00:08:24

☆彼岸★花开: 挺详细的,学习啦.....
分享知识是一种快乐,呵呵。