CHAPTER 5 过程部之二
一。MOVE 语句的较高技巧
1。各种类型数据之间的传送规则见下表:(Y:表示合法传送。N:表示非法传送。空白:表示某些时候是合法的。)
接收项 |
数值型 |
数值型 |
数值编辑型 |
字母型 |
字符型 |
字符编辑型 |
组合项 |
发送项 |
整数 |
非整数 |
|||||
数值型整数 |
Y |
Y |
Y |
N |
Y |
Y |
Y |
数值型非整数 |
Y |
Y |
Y |
N |
N |
N |
Y |
数值编辑型 |
Y |
Y |
Y |
N |
Y |
Y |
Y |
字母型 |
N |
N |
N |
Y |
Y |
Y |
Y |
字符型 |
Y |
Y |
Y |
||||
字符编辑型 |
N |
N |
N |
N |
Y |
Y |
Y |
数值常量 |
Y |
Y |
Y |
N |
N |
N |
Y |
非数值常量 |
N |
N |
N |
Y |
Y |
Y |
Y |
ZERO |
Y |
Y |
Y |
N |
Y |
Y |
Y |
SPACE |
N |
N |
N |
Y |
Y |
Y |
Y |
组合项 |
Y |
Y |
Y |
2。用CORRESPONDING子句的传送 —— 对应传送(同名传送)
对应传送的一般格式:
MOVE CORRESPONDING 标识符1 TO 标识符2
CORR
说明:(1)如果两个组合项中包括的项不同,则只传送同名的项。
(2)传送的两者间必须有成对的同名数据项,而且这一对中必须至少有一个项是
初等项。否则不能作为对应项传送。
(3)所谓同名,指的是它们有相同的全程受限,即全程同名。
假如T1和T2的描述分别为:
01 T1。 01 T2。
02 X。 02 X。
03 X1。。。 03 X2。。。
03 X3。。。 03 X1。。。
02 Y1。 02 Y。
03 A1。。。 03 A1。。。
则T1中的A1与T2中的A1就不是全程同名。
4。除法语句中的余数语句(REMAINDER 子句):DIVIDE 语句只能求商不能求余数。如想求余数,可用 REMAINDER 子句。
如: DIVIDE A INTO B GIVING C REMAINDER D
注意:(1)商和余数的值不仅取决于除数和被除数,还取决于数据部中对商和余数的描述。
(2)如用ROUNDED子句,它只对商起作用,余数不作四舍五入处理,在计算余
数时,仍按四舍五入前的值为准。
(3) 长度溢出也只检查商的值是否溢出,而不检查余数。
三。IF语句的较高技巧
1。符号条件:
数据名 IS [NOT] POSITIVE
算术表达式 NEGATIVE
ZERO
2。类型条件:
标识符 IS [NOT] NUMERIC
ALPHABETIC
3。条件名条件:用来表示条件变量当前值的名字叫条件名。条件名本身是一个条件,它有一个值(‘真’或‘假’),用它来检查条件变量的值是否落在条件名所代表的值的范围中,当条件变量的值落在条件名所代表的值的范围中,则此条件名所表示的条件为‘真’,否则为‘假’。
条件名条件的一般格式:
88 条件名 { VALUE IS} 常量1 [{THRU} 常量2]
[常量3 [ [{THRU} 常量4]] 。。。]
如: 02 WS-FILE-STATUS PIC 9(2)。
88 WS-FILE-NORMAL VALUE 0,93。
88 WS-FILE-EOF VALUE 10。