Avatar of admin

by admin

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  注意其在右边的补零填充。 

菊子曰 我用菊子曰写博客,你呢?
Avatar of admin

by admin

RPGLE语言之EVAL,MOVE讲解

2012/03/29 in 编程语言

ADMIN写在前面的话:在使用程序语言进行开发过程中,用到最多的,便是赋值语句。而对于RPGLE这门程序语言,实现其赋值功能的便是:EVAL,MOVE这两个操作符。那么,今天就来详细讲解下它们的用法,及不同之处。

一,EVAL(H|M|R)

1. 基本语法:        EVAL    FLD01  =  FLD02     赋值,使FLD01的值,等于FLD02.

2. 注意事项:

1)FLD01与FLD02的类型必须相同,即同为字符类型,或同为数字类型,长度可不必相同

2)当FLD01与FLD02同为字符类型时,EVAL 的赋值是以左对齐的形式进行的,如:FLD01=’123456′

FLD02 = ‘ABC’,在进行赋值 EVAL  FLD01 = FLD02 后,FLD01 = ‘ABC   ’,系统实际做的,是先将FLD01清空,然后将FLD02左对齐赋值到FLD01上。 

3)关于长度不必相同:当FLD01与FLD02同为字符类型,则当FLD01长度小于FLD02,则FLD02多出的部分,会被据掉,如: FLD01 为 4A 类型,FLD02 = ‘ABCDEF’  则 EVAL  FLD01 = FLD02, FLD01 为 ‘ABCD’;当FLD01与FLD02同为数字类型,则当FLD01长度小于FLD02,则程序运行到此语句,直接报错。

4)EVAL,可以实现,累加赋值,如: FLD01为4A类型,EVAL  FLD01 = ‘A’ + ‘B’ + ‘C’ + ‘D’,

则:FLD01 = ‘ABCD’

5)EVAL(H),(对数值类型)可以实现四舍五入赋值:当FLD01的位数长度小于FLD02时,该赋值语句才能实现四舍五入的赋值(而默认,EVAL则是四舍赋值)。如: FLD01  为4S1 类型,FLD02 为4S2类型,

FLD02 = 20.05 , 则 EVAL(H)  FLD01 = FLD02 ,  FLD01 = 20.1 而 EVAL  FLD01  = FLD02 ,FLD01 = 20.0

未完,待续……

 

菊子曰 我用菊子曰写博客,你呢?
Avatar of admin

by admin

AS400-系统集成特性介绍

2012/03/24 in IT花边

ADMIN写在前面的话:AS400是一个典型的集成计算机,在它上面,集成了:各种网络通信协议,集成文件系统,数据库管理系统。对于集成,不好的一面是,使计算机缺少灵活性,不利于多方案布置的实现;而好的一面是,减少计算机采购成本,减少后期的维护成本。而是AS400上的集成,是如何实现趋利避害的呢?

    集成是指将完成不同功能的程序模块集合在一个有机的整体中。在这个整体中除含有操作系统功能外还有网络通信功能,数据库管理功能,语言支持功能等。将它们作为一个整体来设计的优点是代码量少,执行效率高,安全性好,易于安装、维护和使用,同时也避免了功能上的重复和不同厂商产品之间的缝隙问题引起的一些争端。当然这种集成性所引起的不利因素也是有的,那就是系统的灵活性会有所下降。 

AS/400是一个最典型的集成的商用计算机,它把计算机系统通常要用到的一些功能如网络通信功能,数据库管理功能,安全管理功能完全集成在AS/400操作系统中。这种集成系统的整体功能远远胜于各部分功能的简单迭加。使用各种功能的用户接口都是一致的,因此在AS/400上开发应用会节省更多的人力资源、财力资源。需要的维护人员也比其它计算机系统少,这是AS/400在业界获得成功原因之一。AS/400集成系统中含有对各种网络通信协议和通信设备的支持,如TCP/IP协议,异步传输控制协议(ASYNC),二进制同步传输协议(BSC),同步数据链路控制协议(SDLC),高级数据链路控制协议(HDLC),X.25协议等几乎所有目前在市场上流行的通信协议及各种网络通信适配器。AS/400支持几乎所有的TPC/IP应用,Internet应用。 



 

    在OS/400中还含有一个功能强大的数据库管理系统DB2/400,这是一个全功能的开放性的关系数据库系统,是IBM DB2家族中的一个成员,目前这个DB2/400已升级到DB2 UDB for AS/400,它除了支持原有DB2/400数据库中存储过程(store procedure),参照完整性(referential Integraty ),触发器(trigger),二阶段提交(two-way commitment)等重要功能外,还增加了对于多媒体信息,对象型DBMS,试算表,虚拟文件等方面的支持。另外在OS/400 V4R4版本中还增强了数据库查询性能,SQL连接能力,并行处理能力等。 

由于AS/400的操作系统是由OS/400与LIC组合而成,整个集成的系统所提供的功能根据其与硬件的关系不同,使用频率不同,对安全的要求不同而被分别放在不同的层面上。上图显示了各功能模块所处的位置。上图中可以看出,CL部分是直接面向用户的,完全处于MI上方;工作管理(work management)的职责主要是对作业的管理,与硬件关联不大,所以大部分位于OS/400中;设备管理部分有些和硬件关系十分密切,如设备的驱动程序等要放在LIC层,而那些对设备进行监控的部分放在OS/400中实现;安全部分虽然与硬件完全独立,但为了提供更高级别的安全保护,还是把它的大部分功能放到LIC层实现。此外有些功能与硬件并无多大关系,但对系统性能举足轻重,也将其放在LIC层实现。还有一些功能是分散在OS/400和LIC中的。由于数据传输部分与磁盘驱动方式和数据传输方式密切相关故在LIC中实现,文件定义部分与硬件无关在OS/400中实现,文件中的成员(member)定义与磁盘有一定关联在LIC中实现更好些。有些功能很难确定在LIC中还是在OS/400中实现更合适,AS/400总是尽可能地进行层次划分。

菊子曰 我用菊子曰写博客,你呢?