MOVE

MOVE 文は、編集規則に従ってデータを 1 つ以上のデータ領域に転記する。

書き方 1 の一般形式


*

書き方 2 の一般形式


*

指令

  1. 予約語リストのフラグ設定および修正を行うコンパイラ指令に加えて、以下の指令が、本セクションに記載の構文または意味内容に影響を与える可能性がある。
    • BYTE-MODE-MOVE - 送信側項目および受信側項目がその記憶領域を部分的に共有する (つまり、重複部分のある) MOVE 文の動作に影響を与える。
    • DBCS (DBSPACE) - 2 バイト文字の受信側項目を空白で埋める際に使用する文字に影響を与える。
    • DE-EDIT - 数字編集送信側項目の値を、その PICTURE 句で決定するかどうかを制御する。
    • TRUNC - 送信側項目が受信側のバイナリ値のサイズよりも大きい値を含む場合に、利用可能な記憶領域または PICTURE 句に基づいて切り捨てを行うかどうかを決定する。

すべての書き方に関する構文規則

  1. identifier-1 および literal は送信側領域を表し、identifier-2 は受信側領域を表す。
  2. 指標名または指標データ項目は、MOVE 文の作用対象として指定できない。
  3. MF 送信側項目または受信側項目がポインター データ項目または ADDRESS OF の作用対象である場合、MOVE 文の他の作用対象もポインター データ項目または ADDRESS OF の作用対象とするか、送信側項目の場合は NULL とする。
  4. MF 送信側項目または受信側項目が、オブジェクト参照、プログラム ポインター、エントリ ポインター、モニター ポインター、ミューテックス ポインター、セマフォ ポインター、またはスレッド ポインターである場合、MOVE 文の他のすべての作用対象も同じ型とするか、送信側項目の場合は NULL とする。
  5. VSC2MF 送信側項目または受信側項目のどちらかが 2 バイト文字 (USAGE DISPLAY-1) 項目である場合には、両方とも 2 バイト文字項目とする。表意定数の SPACE は、2 バイト文字の送信側として使用できる。

書き方 1 の構文規則

  1. OSVSVSC2MF 書き方 1 では、すべての一意名を集団項目または基本項目にできる。送信側領域のデータは、各 identifier-2 が参照するデータ項目に、指定された順番で転記される。
  2. MF identifier-1 には数値の関数一意名を指定できる。
  3. identifier-1 が USAGE BINARY-CHAR、USAGE BINARY-SHORT、USAGE BINARY-LONG、または USAGE BINARY-DOUBLE で記述されたデータ項目である場合、identifier-2 は数値項目または数字編集項目とする。それ以外の場合は、以下の表 1「MOVE 文のデータ項類」に記載の、転記の有効性を参照。

書き方 2 の構文規則

  1. CORR は、CORRESPONDING の省略形である。
  2. CORRESPONDING 指定を使用する際には、すべての一意名を集団項目とする。
  3. 以下の項目は、MOVE CORRESPONDING 文で参照する集団に含められる。ただし、この項目は転記されない。
    • VSC2MF POINTER、PROCEDURE-POINTER
    • ISO2002MF  OBJECT-REFERENCE、PROGRAM-POINTER
    • MF  EVENT-POINTER、MONITOR-POINTER、MUTEX-POINTER、SEMAPHORE-POINTER、THREAD-POINTER

すべての書き方に関する一般規則

  1. MF identifier-1 が数値の関数一意名である場合、identifier-2 は数値項目または数字編集項目のどちらかとする。
  2. literal または identifier-1 で指定したデータは、各 identifier-2 が参照するデータ項目に、指定した順番で転記される。identifier-2 を参照する規則は、他の受信側領域にも適用される。identifier-2 が添え字付けまたは指標付けされている場合、データを各データ項目に転記する直前に添え字または指標が評価される。

    ANS85 identifier-1 が部分参照されている、添え字付けされている、または関数一意名である場合、その部分参照、添え字、または関数一意名の評価は、データが受信側の最初の作用対象に転記される直前に一度だけ行われる。

    ANS85 次の文の結果について、

    ANS85 
     MOVE a(b) TO b, c(b)

    ANS85 は以下に等しい。

    ANS85 
     MOVE a(b) TO temp MOVE temp TO b MOVE temp TO c(b)

    ANS85 ここで、「temp」は COBOL システムが提供する中間結果項目である。

  3. 送信側項目および受信側項目がともに基本項目である MOVE は、基本項目転記である。すべての基本項目は、数値、英字、英数字、数字編集、英数字編集

    ISO2002MF 、各国文字、各国文字編集、ブール

    OSVSVSC2MF 、または浮動小数点

    のいずれかの項類に属する。

    OSVSVSC2MF 

    これらの項類は PICTURE 句で記述する。数値定数は数値の項類に属し、文字定数は英数字の項類に属する。表意定数 ZERO は、数値または数字編集項目に転記すると、数値の項類に属する。表意定数 ZERO は、他のすべてのケースでは英数字の項類に属する。表意定数 SPACE は、英字の項類に属する。その他の表意定数は、すべて英数字の項類に属する。

    これらの項類間での基本項目の転記については、以下の規則が適用される。

    1. 表意定数 SPACE、英数字編集データ項目、または英字データ項目は、数字または数字編集のデータ項目に転記できない。
    2. 数字編集データ項目は、数値または数字編集

      ISO2002MF またはブール

      データ項目に転記できない。

      ANS85 現在、この制限は廃止されている。

    3. 数値定数、表意定数 ZERO、数値データ項目、数字編集データ項目

      ISO2002MF 、またはブール データ項目

      は、英字データ項目に転記できない。
    4. 整数でない数値定数または整数でない数値データ項目は、英数字または英数字編集のデータ項目

      ISO2002MF またはブール データ項目

      に転記できない。
    5. ISO2002MF identifier-2 がブール データ項目である場合、受け取ることができるのは、ブール文字が関連付けられた表意定数のみである。
    6. ISO2002MF 英字、英数字編集、数値、または各国文字のデータ項目は、ブール データ項目に転記できない。
    7. ISO2002MF ブール データ項目は、各国文字データ項目に転記できない。
    8. 上記以外の基本項目の転記は文法的に正しく、下記の一般規則 5 に示す規則に従って実行される。
  4. 文法的に正しい基本項目の転記の実行中に、必要に応じて、ある形式の内部表現から別の形式の内部表現にデータが変換される。これは、受信側項目に対して指定された編集処理

    ANS85 、または受信側項目によって暗黙指定された逆編集

    とあわせて行われる。
    1. 受信側項目が英数字編集または英数字の項目である場合、「COBOL 言語の概念」の章の「標準桁寄せ規則」トピックに記載のとおり、桁寄せおよび必要な空白の穴埋めが行われる。送信側の項目のサイズが受信側の項目のサイズよりも大きい場合は、受信側の項目が満たされた後で、右側の超過文字が切り捨てられる。送信側項目が符号付き数値として記述されている場合、演算符号は転記されない。演算符号が別個の文字位置を占める場合 (「SIGN 句」トピックを参照)、その演算符号は転記されず、送信側項目は実際のサイズ (標準データ形式の文字でのサイズ) よりも 1 文字小さいものと見なされる。
    2. 受信側項目が数値または数字編集の項目である場合、「COBOL 言語の概念」の章の「標準桁寄せ規則」セクションに記載のとおり、小数点による桁寄せおよび必要なゼロの穴埋めが行われる。ただし、編集要件によりゼロが置き換えられている場合は除く。

      ANS85 送信側の作用対象が数字編集である場合、その作用対象の編集されていない数値 (符号付きの場合がある) を取得するために、逆編集が暗黙指定される。その後、編集されていない数値が受信側項目に転記される。逆編集の効果は、DE-EDIT コンパイラ指令の設定に依存する。

      受信側項目が符号付き数値である場合、送信側の符号は受信側項目に転記される。「SIGN 句」のトピックを参照。必要に応じて、符号の表現形式の変換が行われる。送信側項目に符号が付いていない場合、受信側項目用に正符号が生成される。

      受信側項目が符号なしの数値である場合、送信側項目の絶対値が受信側項目に転記され、受信側項目用の符号は生成されない。

      送信側項目が英数字として記述されたデータ項目である場合、送信側項目が符号なしの整数として記述された場合と同様にデータが転記される。

      受信側項目が数値または数字編集であり、送信側項目が英数字である際に、送信側項目の内容が整数でない場合、転記結果は不定となる。送信側項目が英数字の定数であり、その内容が整数でない場合は、エラーが報告されて、ゼロがその対象に転記される。「手続き部」の章の「矛盾するデータ」トピックを参照。

      ANS85 送信側項目が数値データ項目である場合、転記し戻すと数字編集項目に同じ値が現れるように転記処理が行われる (ただし、切り捨てが発生した場合は除く)。データ項目内のデータが、編集された PICTURE 文字列に準拠しない場合、ゼロがその対象に転記される。

    3. 受信側項目が英字である場合、「COBOL 言語の概念」の章の「標準桁寄せ規則」トピックに記載のとおり、桁寄せおよび必要な空白の穴埋めが行われる。送信側の項目のサイズが受信側の項目のサイズよりも大きい場合は、受信側の項目が満たされた後で、右側の超過文字が切り捨てられる。
    4. OSVSVSC2MF 受信側項目が浮動小数点数である場合、最初に送信側項目が内部浮動小数点数に変換された後に転記される。外部浮動小数点数項目へ、または外部浮動小数点数項目からデータを転記する場合、最初に内部浮動小数点数値のデータ変換が行われる。
    5. VSC2MF 受信側項目が NCHAR でない 2 バイト文字である場合、送信側項目も 2 バイト文字または各国文字とする。変換は行われない。送信側項目と受信側項目のサイズが異なる場合、データ項目の右側が切り捨てられるか 2 バイト文字の空白で穴埋めされる。
  5. 基本項目転記以外の転記は、英数字同士の基本項目転記とまったく同様に扱われる。ただし、データの内部表現形式は変換されない。このような転記では、送信側または受信側の領域に含まれる個々の基本項目または集団項目は考慮されず、受信側領域にデータが格納される。ただし、OCCURS 句の一般規則の事項は例外である。
  6. 下記の表 1 で、各種の MOVE 文の適合性を概略する。表内に示す一般規則の参照番号は、該当の転記を禁止する規則、または適合する転記動作を示す。
  7. ISO2002MF 受信側項目がブール値である場合、送信側項目のブール値は、必要に応じてデータ表現の変換とあわせて転記され、「COBOL 言語の概念」セクションの「標準桁寄せ規則」トピックに記載のとおり、必要な桁寄せおよびゼロの穴埋めが行われる。送信側項目がブール値でない場合、送信側項目と同じ用途および文字数のブール データ項目の場合と同様に処理される。送信側項目の内容がブール クラス条件で偽の値になると、エラーが報告される (「手続き部」セクションの「矛盾するデータ」トピックを参照)。

書き方 2 の一般規則

  1. CORRESPONDING 指定を使用すると、「手続き部」の章の「CORRESPONDING 指定」に記載の規則に従い、identifier-1 で選択した項目が、identifier-2 で選択した項目に転記される。その結果は、別々の MOVE 文で対応する一意名の各ペアを参照した場合と同じ結果になる。

    OSVSVSC2 この処理は、宛先集団ごとに繰り返される。

    表 1. MOVE 文のデータ項類
    送信側項目の項類 受信側データ項目の項類 (関連する規則番号を各列に記載)
    英字 英数字編集/英数字 整数/整数以外 数字編集の外部/内部浮動小数点数 各国文字 NCHAR 以外の 2 バイト文字 NCHAR 2 バイト文字 ブール
    英字 適合/4c 適合/4a 非適合/3a 非適合/3a 適合 非適合/4e 適合 非適合/3f
    英数字 適合/4c 適合/4a 適合/4b2 適合/4b 適合 非適合/4e 適合 適合/3e
    英数字編集 適合/4c 適合/4a 非適合/3a 非適合/3a 適合 非適合/4e 適合 非適合/3f
    整数 非適合/3c 適合/4a 適合/4b 適合/4b 適合 非適合/4e 適合 非適合/3f
    整数以外 非適合/3c 非適合/3c 適合/4b 適合/4b 非適合 非適合/4e 非適合 非適合/3f
    数字編集 非適合/3c 適合/4a 適合/4b 適合/4b 適合 非適合/4e 適合 非適合/3f
    各国文字 非適合 非適合 適合 適合 適合 適合 適合 非適合
    NCHAR 以外の 2 バイト文字 非適合/4e 非適合/4e 非適合/4e 非適合/4e 適合 適合/4e 適合 非適合/3f
    NCHAR 2バイト文字 適合 適合 非適合 非適合 適合 適合/4e 適合 非適合
    ブール 非適合/3c 適合/4a 非適合/3b 非適合/3b 非適合 非適合/3g 非適合 適合/4f
    注: 送信側項目で整数以外の英数字定数が使用されている場合は、エラーが報告される。

    NCHAR 2 バイト文字のサポートの詳細については、「2 バイト文字サポートの Micro Focus 拡張」を参照し、NCHAR 以外の 2 バイト文字のサポートの詳細については、「2 バイト文字集合のサポート」を参照。