数据赋值
- 数据赋值-move,=,还原语句用clear
MOVE source TO destination.
destination = source.
- 结构体赋值,相似的结构体之间也可以进行赋值
REPORT Z_TEST001.
DATA: BEGIN OF add_personal,
title(5) VALUE 'mr',
name(20),
street(100),
no(3) TYPE n,
postcode(6) TYPE n,
END OF add_personal.
DATA: BEGIN OF add_company,
position(20) VALUE 'Consultant',
name(20) VALUE 'jack Huang',
street(100) TYPE c VALUE 'BEIJING AVENUE',
no(3) TYPE n VALUE '002',
postcode(6) TYPE n VALUE '10087',
END OF add_company.
MOVE-CORRESPONDING add_company TO add_personal.
write add_personal.
- 数据类型转换
类型转换如果数据类型不一致,则会消耗系统时间,所以应该有意识的把所有操作数和目标变量定义为相同的数据类型。
- 基本对象类型转换原则
除去基本类型只有类型D和类型T不存在转换规则,其它的都有对应的转换规则。 - 引用类型的转换
对象引用和数据引用变量之间不能相互赋值。 - 结构体转换原则
分结构体是扁平结构还是纵深结构
扁平结构—–允许在互不兼容的结构体之间赋值
纵深结构—–要求结构体之间完全兼容。 - 内表转换原则
内表对象只能赋值给内表对象,成功取决于行结构是否可以兼容,与表类型或者关键字无关。
- 基本对象类型转换原则
数值运算
关键字:COMPUTE,语法为[COMPUTE] n = <mathematical expression>
- 算术运算
*&---------------------------------------------------------------------*
DATA int type n value 2.
COMPUTE int = int + 1.
int = int + 1.
ADD 1 TO int.
write int.
使用数值运算+ - * / **关键字的前后必须都有空格,否则错误的语法导致程序无法编译。
- 数学运算,语法为:
[COMPUTE] n = func(m).
函数名 | 说明 |
---|---|
ABS | 返回绝对值 |
TRUNC | 返回整数部分 |
FRAC | 返回小数部分 |
SIGN | 正数返回1,负数-1,0为0 |
CELL | 天花板数 |
FLOOR | 地板数 |
示例:注意左括号中不能有空格,而参数两旁必须要有空格
DATA: result(20) TYPE c ,
float type f value '2.5000'.
result = trunc( float ).
write result.
此外还有一个F类型参数的函数列表
- 时间日期计算
DATA: seconds TYPE i,
hours TYPE i,
time1 TYpe t value '100000', "10:00:00 am
time2 TYPE t value '080000'. "08:00:00 am
seconds = time1 - time2 .
hours = seconds / 3600.
WRITE: / 'Seconds is ', seconds,
/ 'Hours is ', hours.