# MOVE文

説明書の該当箇所: 6.5.21 MOVE文

  MOVE_CORR文.cob    Standard 版

MOVE CORRESPONDING(MOVE CORR)だけを扱います。
正しく動くと OK だけが並びます。

# MOVE CORRESPONDING とは

2つの集団項目の間で、同じ名前を持つ項目どうしを一度に転記します。

  MOVE CORR X TO Y.

X と Y は、わざと違う形に定義してあります。

  X                        Y
    B  PIC X                 B  PIC X
    C                        C
      C1 PIC 9                 C1 PIC 9
      C2 PIC 9                 C2 PIC 9
      FILLER PIC 9           D REDEFINES C
    D                          D1 PIC 9
      D1 PIC 9                 D2 PIC 9
      D2 PIC 9               F  PIC 9(2)
    E  PIC 9                 E  PIC 9
    F
      F1 PIC 9
      F2 PIC 9

実行後の Y は "A12678" になります。1文字ずつ対応させると、
何が転記されて何が転記されなかったかが分かります。

  A     B  ← X の B
  12    C1 C2  ← X の C1 C2。X 側の3つめ(FILLER)は相手がいないので使われない
  67    F  ← X の F。X では集団項目、Y では PIC 9(2) の基本項目
  8     E  ← X の E

  ・名前が一致した組が転記されます
  ・名前の無い項目(FILLER)は対象になりません
  ・REDEFINES で重ねた項目(Y の D)は対象になりません。
    D が重ねている C には X の C1 C2 が入るので、結果は 12 です
  ・定義の順番が違っても名前で対応します。Y では F が E より前にあります

結果を IF文 で照合しているので、値から確かめられます。

# 関連

ADD CORRESPONDING と SUBTRACT CORRESPONDING も同じ考え方です。

  6_5_2_ADD文\ADD文-書き方3.cob
  6_5_26_SUBTRACT文\SUBTRACT文-書き方3.cob
