Move 语句
MOVE 语句将数据从一个存储区域传输到一个或多个其他区域。
CORR 是对应项的缩写,并且等效于对应项。
- identifier-1 , literal-1
- 发送区域。
- identifier-2
- 接收区域。 identifier-2 不得引用内部函数。
指定格式 1 时:
- 当 identifier-1 或 identifier-2 中的一个引用了国家或地区组项,而另一个操作数引用了字母数字组项时,国家或地区组将作为组项进行处理; 在所有其他情况下,国家或地区组项将作为国家或地区类别的基本数据项进行处理。
- 发送区域中的数据将按照在 MOVE 语句中指定 identifier-2 数据项的顺序移动到每个 identifier-2 引用的数据项中。 请参阅下面的基本动作和集体动作。
指定格式 2 时:
- 这两个标识都必须是组项。
- 国家组项作为组项 (而不是作为国家类别的基本数据项) 进行处理。
- 中的选定项目被移至 identifier-1 中的选定项目被移动到 identifier-2 根据相应短语的规则。 结果与在单独的 MOVE 语句中引用的每对对应标识相同。
不能在 MOVE 语句中指定使用以下类型的用法描述的数据项:
- INDEX
- POINTER
- FUNCTION-POINTER
- PROCEDURE-POINTER
A data item defined with a usage of INDEX, POINTER, FUNCTION-POINTER, 或 PROCEDURE-POINTER can be part of an alphanumeric group item that is referenced in a MOVE CORRESPONDING statement; however, no movement of data from those data items takes place.
发送或接收区域长度的评估可能会受到OCCURS子句中的DEPENDING ON短语的影响(参见 OCCURS子句 )。
如果发送字段 (identifier-1) 是引用修改或下标,或者是字母数字,数字,整数或国家 函数标识,那么在将数据移至第一个接收操作数之前,仅对引用修饰符,下标或函数求值一次。
与接收字段 (identifier-2) 关联的任何长度求值,预订或引用修改都会在将数据移至该接收字段之前立即进行求值。
例如,语句的结果:
MOVE A(B) TO B, C(B).
等价于:
MOVE A(B) TO TEMP.
MOVE TEMP TO B.
MOVE TEMP TO C(B).
其中 TEMP 定义为中间结果项。 在执行第一次移动的时间与执行到 C(B) 的最终移动的时间之间,下标 B 的值已更改。
有关中间结果的更多信息,请参阅 COBOL for Linux® on x86 Programming Guide中的 附录 A. 中间结果和算术精度 。
执行 MOVE 语句后,发送字段包含与执行前相同的数据。
用法说明: MOVE 语句中的重叠操作数可能导致不可预测的结果。
