カテゴリ: COBOL 更新日: 2025/12/24

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文の正確な使い方が不可欠です。

また、MOVE文はデータの「型(PIC句)」や「桁数(サイズ)」と密接に関係しています。文字列型(PIC X)に数値型(PIC 9)を移す場合や、桁数が異なる変数同士で値を移す場合は、意図しない結果になることもあります。そのため、MOVE文を使う際には、必ず「送る側と受け取る側のPIC構造の確認」が重要になります。

MOVE文は、定数を直接代入する用途でも活用されます。たとえば、初期化や仮の値を設定する場合、「MOVE 0 TO 変数名」や「MOVE '未設定' TO フラグ項目」のように、定数から変数へのデータ移送をシンプルに記述できます。

グループ項目へのMOVEもCOBOLではよく使われます。01レベルで定義したデータの塊ごとに、まとめて別の変数へコピーしたり、逆に個々の項目へ分解して扱ったりすることで、柔軟なデータ操作が可能になります。以下は、グループ項目同士のMOVE例です。


       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 SOURCE-DATA.
           05 NAME       PIC X(10) VALUE "山田 太郎".
           05 AGE        PIC 9(2) VALUE 35.

       01 TARGET-DATA.
           05 TARGET-NAME PIC X(10).
           05 TARGET-AGE  PIC 9(2).

       PROCEDURE DIVISION.
           MOVE SOURCE-DATA TO TARGET-DATA
           DISPLAY "名前:" TARGET-NAME
           DISPLAY "年齢:" TARGET-AGE
           STOP RUN.

このように、MOVE文は「一項目」だけでなく、「グループ単位」での移送にも使えます。グループ名同士を指定すれば、中に含まれる各項目が対応する順番でコピーされる仕組みです。ただし、構造が一致していない場合は予期せぬコピーになるため、項目の順番や型の整合性にも注意が必要です。

MOVE文のもうひとつの利点は、視認性とメンテナンス性の高さです。たとえば、複雑な処理の中で「この変数にはどの値が入るのか」「どこからコピーされたのか」を一目で判断できる構文であるため、大規模なシステムの保守にも役立ちます。COBOLのようにビジネス処理が明確に分かれている言語では、こうした可読性の高さが特に重要です。

また、MOVE文はPERFORMやIF文などの他の命令と組み合わせることで、より柔軟な処理を構築できます。たとえば、「条件によって異なる値をMOVEする」「繰り返しの中でデータを順にコピーする」といった使い方は、実務でも非常によく見られます。以下のような構成です。


       IF SALES-AMOUNT > 10000
           MOVE "高額" TO SALES-LEVEL
       ELSE
           MOVE "通常" TO SALES-LEVEL
       END-IF

こうした条件分岐との組み合わせにより、MOVE文は単なるコピー以上の役割を担うようになります。「処理の流れの中で、どのようにデータを変化させるか」をコントロールするための基盤となる命令なのです。

最後に、MOVE文を学ぶ上で大切なのは「実際に手を動かして試すこと」です。さまざまな型・桁・値のパターンでMOVEを試し、その結果を観察することで、自然と正しい使い方が身についていきます。COBOLの世界では、「基本命令をどれだけ深く理解しているか」がプログラミング全体のスキルに直結します。ぜひ、MOVE文をきっかけに、他の命令への理解も深めていってください。

先生と生徒の振り返り会話

生徒

「MOVE文って、単純なコピーだけかと思ってたけど、型や桁によって挙動が変わるんですね。意外と奥が深い…」

先生

「そのとおりです。MOVEは見た目はシンプルですが、COBOLの中でもとても重要な命令なんですよ。」

生徒

「特にグループ項目に対してMOVEできるのが便利ですね。構造さえ揃っていれば、一気にコピーできて時短になります。」

先生

「そうですね。構造の一致を確認しながら使えば、ミスも少なくなりますし、メンテナンス性も高まります。」

生徒

「これからは、値のコピーをするたびにMOVE文の使い方に注意して、しっかり型も意識します!」

先生

「それが一番大切ですね。COBOLは基本命令の理解がすべての基盤になります。じっくり身につけていきましょう。」

理解度のクイズ問題

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

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

問題
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 句、文字と数値の扱い。

下記をクリックすると、解答が表示されます
カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決