COBOLのMOVE文を完全ガイド!初心者でもわかるデータコピーと編集の基本
生徒
「先生、COBOLでデータをコピーしたり編集したりする方法ってあるんですか?」
先生
「はい、COBOLにはMOVE文という命令があって、それを使えば簡単にできます。」
生徒
「MOVE文ってどういうものなんですか?」
先生
「それでは、MOVE文の基本から一緒に学んでいきましょう!」
1. MOVE文とは?
COBOLのMOVE文は、変数や定数などのデータを別の場所にコピーするための命令です。プログラムの世界では「変数(へんすう)」という、値を入れておく箱のようなものがあります。MOVE文を使うことで、この箱から別の箱へ中身を移すことができます。
例えば「りんごを入れた箱から、別の箱にりんごを移す」イメージです。コンピュータの中では「文字」や「数字」を箱に入れて扱うので、MOVE文はとても基本的で重要な命令になります。
2. MOVE文の基本構文
MOVE文の書き方はとてもシンプルです。
MOVE 移したいデータ TO 移す先
「TO」は英語で「〜へ」という意味なので、「どこからどこへ移すのか」が直感的にわかりやすいのが特徴です。
3. 文字データをコピーする例
まずは文字(アルファベットや日本語など)をコピーしてみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME1 PIC X(10) VALUE "TARO".
01 NAME2 PIC X(10).
PROCEDURE DIVISION.
MOVE NAME1 TO NAME2.
DISPLAY "NAME2の中身は:" NAME2.
STOP RUN.
このプログラムを実行すると、NAME1に入っていた「TARO」がNAME2にコピーされます。
NAME2の中身は:TARO
このように、文字をそのままコピーすることができます。初心者にとってイメージしやすいのは「コピー&ペースト」と同じような感覚です。
4. 数字データをコピーする例
次に数字のコピーです。数字を扱うときは、PIC 9という型(データ型)を使います。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(3) VALUE 123.
01 NUM2 PIC 9(3).
PROCEDURE DIVISION.
MOVE NUM1 TO NUM2.
DISPLAY "NUM2の中身は:" NUM2.
STOP RUN.
NUM2の中身は:123
数字のコピーも文字と同じようにMOVE文で簡単に行えます。
5. データが短い場合や長い場合の挙動
MOVE文を使うときに注意が必要なのは、データの長さが違う場合です。例えば「5文字の箱に3文字のデータを入れる」とどうなるでしょうか。
01 SHORT-NAME PIC X(3) VALUE "ABC".
01 LONG-NAME PIC X(5).
MOVE SHORT-NAME TO LONG-NAME.
この場合、「ABC」とコピーされますが、残りの2文字分はスペース(空白)で埋められます。逆に長いデータを短い箱に入れようとすると、入りきらない部分は切り捨てられてしまいます。
この動きは初心者にとって大事なポイントで、実際のプログラムでもよくトラブルの原因になります。
6. 定数を直接MOVEする
変数だけでなく、直接「値」をMOVEすることもできます。これを「リテラル」と呼びます。
MOVE "HELLO" TO NAME1.
MOVE 999 TO NUM1.
このように書けば、すぐに固定の文字や数字を代入できます。手作業で「箱に中身を入れる」と考えるとイメージが湧きやすいです。
7. MOVE文を使った編集の基本
MOVE文には「編集機能」もあります。例えば「数値を3桁で表示する」といった場合に便利です。
01 NUM-VALUE PIC 9(3) VALUE 45.
01 EDITED-VALUE PIC ZZ9.
MOVE NUM-VALUE TO EDITED-VALUE.
DISPLAY "表示:" EDITED-VALUE.
表示: 45
Zは「数字がなければスペースで表示」という意味なので、45が右寄せで表示されます。これを使えば、帳票や画面出力のときに見やすい形に整えることができます。
8. 重要ポイント
- MOVE文はデータコピーの基本命令
- 文字・数字どちらにも使える
- 長さが違うとスペースや切り捨てが起こる
- 編集用のPICを使えば見やすい表示が可能
COBOLを学ぶ上で、MOVE文は必ず理解しておきたい基礎です。コピーの仕組みを理解することで、より実用的なプログラムに近づけます。
まとめ
MOVE文で理解できるCOBOLの基本的なデータ操作
ここまで見てきたように、COBOLのMOVE文は「データを別の場所へコピーする」という非常にシンプルな役割を持っています。 しかし、この単純な命令の中には、COBOLプログラミングの基礎となる重要な考え方が数多く含まれています。 文字データや数値データを変数から変数へ移すだけでなく、定数を直接代入したり、表示用にデータを整形したりと、 MOVE文は業務プログラムのあらゆる場面で使われています。
特に初心者の方にとって重要なのは、「MOVEは代入であり計算ではない」という点です。 MOVE文は値をそのまま写す動作を行うため、足し算や引き算のような処理は行いません。 その代わり、データ項目の長さや型によって、スペースで埋められたり、余分な部分が切り捨てられたりする挙動が発生します。 この仕様を理解していないと、画面表示が崩れたり、帳票の桁がずれたりといった問題につながります。
MOVE文のもうひとつの大きな特徴は、「編集用PICとの組み合わせ」です。 数値をそのまま扱うだけでなく、PIC ZZ9 や PIC 9,999 のような編集定義を使うことで、 人が見やすい形式に変換して表示できます。 これは、銀行や保険会社の帳票、業務画面などでCOBOLが長年使われてきた理由のひとつでもあります。 MOVE文を正しく理解することで、実務に直結するプログラムを書く第一歩を踏み出せます。
MOVE文の基本を確認するシンプルなサンプル
IDENTIFICATION DIVISION.
PROGRAM-ID. MOVE-SUMMARY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SRC-NAME PIC X(8) VALUE "HANAKO".
01 DST-NAME PIC X(8).
01 SRC-NUM PIC 9(3) VALUE 78.
01 DST-NUM PIC ZZ9.
PROCEDURE DIVISION.
MOVE SRC-NAME TO DST-NAME.
MOVE SRC-NUM TO DST-NUM.
DISPLAY "名前:" DST-NAME.
DISPLAY "数値:" DST-NUM.
STOP RUN.
名前:HANAKO
数値: 78
このサンプルでは、文字データと数値データの両方をMOVE文でコピーしています。 数値項目では編集用PICを使うことで、表示が整えられている点に注目してください。 このような書き方は、COBOLの業務プログラムで非常によく使われる基本パターンです。
MOVE文を正しく使えるようになると、変数の扱い方やデータ定義の重要性が自然と理解できるようになります。 COBOLでは、処理そのものよりも「どんなデータを、どんな形で扱うか」が非常に重要です。 MOVE文は、その考え方を学ぶための最適な入り口と言えるでしょう。
生徒:「MOVE文って、ただコピーするだけなのに、思ったより奥が深いですね。」
先生:「そうですね。COBOLではデータの形や長さがとても大事なので、MOVE文の動きを理解することが基本になります。」
生徒:「文字が足りないとスペースで埋まったり、長いと切り捨てられたりするのも重要なんですね。」
先生:「その通りです。そこを意識できるようになると、画面や帳票のトラブルを防げます。」
生徒:「編集用PICを使えば、表示もきれいにできるのが便利だと思いました。」
先生:「MOVE文とPICの組み合わせは、COBOLらしさがよく出る部分です。ここをしっかり身につけておきましょう。」
生徒:「まずはMOVE文を使った簡単なプログラムをたくさん書いて慣れてみます!」
先生:「それが一番の近道ですね。基礎を固めれば、次のステップもスムーズに進めますよ。」