Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523578
  • 博文数量: 235
  • 博客积分: 1209
  • 博客等级: 少尉
  • 技术积分: 1417
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 19:59
文章分类

全部博文(235)

文章存档

2012年(107)

2011年(128)

分类:

2011-11-20 19:08:01

   

    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,仅仅只是四舍,没有五入。

阅读(613) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~