Move 语句

MOVE 语句将数据从一个存储区域传输到一个或多个其他区域。

格式 1 :MOVE 语句

读取语法图跳过可视语法图MOVEidentifier-1literal-1TOidentifier-2

格式 2: 具有相应短语的 MOVE 语句

读取语法图跳过可视语法图MOVECORRESPONDINGCORRidentifier-1TOidentifier-2

CORR 是对应项的缩写,并且等效于对应项。

identifier-1 , literal-1
发送区域。
identifier-2
接收区域。 identifier-2 不得引用内部函数。

指定格式 1 时:

  • identifier-1identifier-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 语句中的重叠操作数可能导致不可预测的结果。