カテゴリ: COBOL 更新日: 2025/11/10

COBOLのMOVE文を完全ガイド!初心者でもわかるデータ移送の基本

データ項目の移送(MOVE文)基本操作
データ項目の移送(MOVE文)基本操作

先生と生徒の会話形式で理解しよう

生徒

「COBOLで、データを別の場所に移すことってできますか?」

先生

「はい、できますよ。COBOLではMOVE文を使って、データを他の項目にコピーすることができます。」

生徒

「コピーって、どういう場面で使うんですか?」

先生

「例えば、入力された名前を別の変数に記録したり、数値をまとめて管理するために他の場所へ移すときなどに使います。今からわかりやすく説明しますね。」

1. MOVE文とは?COBOLでのデータ移送の基本

1. MOVE文とは?COBOLでのデータ移送の基本
1. MOVE文とは?COBOLでのデータ移送の基本

COBOLのMOVE文とは、あるデータ項目(変数)から別のデータ項目へ、値をコピー(移送)する命令です。これは、まるで書類の内容を別の用紙に書き写すようなものです。

たとえば、あなたの名前「たなか ゆい」をメモ帳Aに書いて、それをメモ帳Bにも書き写すような操作がMOVE文のイメージです。

MOVE文は、プログラムの中でとてもよく使われる重要な命令のひとつで、データの受け渡しや加工に欠かせません。

2. MOVE文の基本構文

2. MOVE文の基本構文
2. MOVE文の基本構文

MOVE文の基本的な書き方は以下のようになります。


MOVE 移す値 TO 移される項目

「TO(トゥー)」は英語で「〜へ」という意味なので、「この値をあの場所へ移してね」と命令していると考えると分かりやすいです。

3. MOVE文の具体的なサンプルコード

3. MOVE文の具体的なサンプルコード
3. MOVE文の具体的なサンプルコード

それでは、実際のCOBOLコードを見てみましょう。ここでは、名前を変数に代入する例を紹介します。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. MOVE-SAMPLE.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NAME-ORIGINAL    PIC X(20) VALUE "たなか ゆい".
       01 NAME-COPY        PIC X(20).

       PROCEDURE DIVISION.
           MOVE NAME-ORIGINAL TO NAME-COPY
           DISPLAY "コピーされた名前: " NAME-COPY
           STOP RUN.

実行結果:


コピーされた名前: たなか ゆい

このように、NAME-ORIGINALに入っていたデータが、NAME-COPYに移され、同じ名前が表示されました。

4. MOVE文はデータの「型」に注意!

4. MOVE文はデータの「型」に注意!
4. MOVE文はデータの「型」に注意!

COBOLでは、データの「型(かた)」に気をつける必要があります。型とは、データが文字なのか数字なのか、あるいはその長さや形式のことです。

例えば、下のような変数があるとします。


01 AGE-SOURCE      PIC 9(3) VALUE 25.
01 AGE-TARGET      PIC 9(3).

この場合は、MOVE AGE-SOURCE TO AGE-TARGETと書けば、うまく数値がコピーされます。

ただし、型が違うと想定外の動作をすることがあるので注意が必要です。

5. MOVE文は「右から左へ」の動き

5. MOVE文は「右から左へ」の動き
5. MOVE文は「右から左へ」の動き

初心者の方がよく混乱するポイントに、「どちらからどちらへ移すの?」という疑問があります。

MOVE文では、「右から左に移す」のではなく、英語通りに「左から右へ」と覚えましょう。

つまり、


MOVE "こんにちは" TO GREETING

であれば、「こんにちは」という文字がGREETINGという変数に入るという意味です。

6. MOVE文を使って数値を操作する

6. MOVE文を使って数値を操作する
6. MOVE文を使って数値を操作する

次は数値をMOVE文で移す例です。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. MOVE-NUMBER.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 POINTS-IN     PIC 9(3) VALUE 120.
       01 POINTS-OUT    PIC 9(3).

       PROCEDURE DIVISION.
           MOVE POINTS-IN TO POINTS-OUT
           DISPLAY "得点(コピー後): " POINTS-OUT
           STOP RUN.

実行結果:


得点(コピー後): 120

このように、数字も文字と同じようにMOVE文でコピーすることができます。

7. MOVE文で使える便利なパターン

7. MOVE文で使える便利なパターン
7. MOVE文で使える便利なパターン

MOVE文では、定数(固定の値)もそのまま使うことができます。

たとえば、以下のように直接値を移すことも可能です。


MOVE "OK" TO STATUS
MOVE 100 TO SCORE

このように書くことで、STATUSSCOREという変数に、すぐに値を設定できます。

8. MOVE文で注意する「桁あふれ」

8. MOVE文で注意する「桁あふれ」
8. MOVE文で注意する「桁あふれ」

COBOLでは、変数のサイズ(桁数)に注意しないと「桁あふれ」が起こります。

たとえば、以下のように、受け取る側の変数が小さいと、値が切れてしまいます。


01 MESSAGE-ORIGINAL   PIC X(10) VALUE "HELLO WORLD".
01 MESSAGE-COPY       PIC X(5).

このとき、


MOVE MESSAGE-ORIGINAL TO MESSAGE-COPY

を実行すると、「HELLO」までしかコピーされません。

このように、変数の大きさは常に意識することが大切です。

9. MOVE文はCOBOLの「コピー役」

9. MOVE文はCOBOLの「コピー役」
9. MOVE文はCOBOLの「コピー役」

MOVE文は、COBOLの中でも特に基本的で、非常によく使われる命令です。文字や数値などのデータを、別の変数にコピー(正確には「移送」)するための文であり、まさにプログラム内の「コピー役」として活躍します。

たとえば、「受付で入力された名前」を「印刷用の変数」に移したり、「計算結果」を「出力用の項目」にコピーしたりと、さまざまな場面で利用されます。データ処理を行うCOBOLの中では、MOVE文が正しく使えることがとても重要です。

初心者の方にとっては、「左側にあるデータを、右側の変数に写すだけ」と聞くと簡単そうですが、実際に書いてみると「どちらが送る側?」「どういう形式で書くの?」と迷うこともあるかもしれません。ですが、構文はとてもシンプルです。


       MOVE "こんにちは" TO GREETING

この例では、「こんにちは」という文字列をGREETINGという変数に移す、という意味になります。英語の語順そのままで、「〜を〜に」という命令の流れが理解しやすいですね。

また、もう少し丁寧なサンプルも見てみましょう。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. COPY-HELLO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 MESSAGE-SOURCE    PIC X(10) VALUE "HELLO".
       01 MESSAGE-TARGET    PIC X(10).

       PROCEDURE DIVISION.
           MOVE MESSAGE-SOURCE TO MESSAGE-TARGET
           DISPLAY "移送後のメッセージ: " MESSAGE-TARGET
           STOP RUN.

このコードを実行すると、「HELLO」という文字列が別の変数に移されて表示されます。このように、MOVE文は「入力された値」や「既にあるデータ」を「別の場所で使う」ための橋渡しとして活躍します。

まずは、小さな文字列や数字を別の変数にコピーしてみるところから始めてみると、MOVE文の使い方が自然と身についてきます。

理解度のクイズ問題

理解度のクイズ
この記事の理解度をクイズで確認しよう

空欄の★に当てはまる内容を答えてください。

問題
COBOLでデータを別の項目へコピーする基本命令は MOVE です。 構文は「MOVE 送る値 TO 受け取る項目」の形になり、左側の値を右側の項目へ移すのがポイントです。 次の例は、文字データと数値データを移送する基本パターンです。
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 SRC-TEXT    PIC X(10) VALUE "HELLO".
       01 DST-TEXT    PIC X(10).
       01 SRC-NUM     PIC 9(3)  VALUE 120.
       01 DST-NUM     PIC 9(3).

       PROCEDURE DIVISION.
           MOVE SRC-TEXT TO DST-TEXT
           MOVE SRC-NUM  TO DST-NUM
           STOP RUN.
【ヒント】 ・「★1 送る値 ★2 受け取る項目」=値をコピーする命令。 ・型や桁数(PIC句)が合わないと切り捨てや想定外の動作に注意。 ・関連キーワード:COBOL 入門、MOVE 文、データ移送、PIC 句、文字と数値の扱い。

下記をクリックすると、解答が表示されます
カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法