COBOLでファイル操作!初心者でもできるCLIツールとスクリプト作成入門
生徒
「COBOLのプログラムを使って、パソコンの中にあるファイルを自動でコピーしたり、中身を書き換えたりすることはできますか?」
先生
「もちろんです。COBOLはもともと事務計算が得意な言語なので、ファイル操作は一番の得意分野なんですよ。」
生徒
「難しそうに聞こえますが、私のようなパソコン初心者でもスクリプトを組めるようになるでしょうか?」
先生
「やり方さえ覚えれば大丈夫です。まずは基本となるファイルの読み書きや、操作を助けるスクリプトの書き方から見ていきましょう!」
1. ファイル操作とは?デジタルな書類整理の基本
プログラミングにおけるファイル操作とは、パソコンの中に保存されているデータ(ファイル)を読み込んだり、新しく作ったり、内容を書き換えたりすることを指します。パソコンを触ったことがない方でも、「机の引き出しから書類を取り出して、内容を確認し、新しい情報を書き加えてからまた引き出しに戻す」という作業を想像してみてください。これがコンピューターの中で行われるファイル操作の正体です。
COBOL(コボル)というプログラミング言語は、大量の書類(データ)を正確に処理するために生まれました。銀行の通帳データや、会社の給与計算など、膨大なファイルを扱う現場で今も現役で活躍しています。ファイル操作をマスターすることは、COBOLエンジニアとしての第一歩を踏み出すことと同義なのです。
2. CLIツールとスクリプトの役割を理解しよう
ファイル操作をより簡単にするために、CLI(シーエルアイ)ツールとスクリプトという二つの道具を使います。まず、CLIとは「Command Line Interface」の略で、マウスを使わずにキーボードで文字を打ち込んでコンピューターに命令を出す画面のことです。真っ黒な画面に文字が並んでいるのを見たことがあるかもしれませんが、それがCLIの代表格です。
そしてスクリプトとは、その命令を順番に書き記した「台本」のようなものです。例えば、「ファイルAをコピーする」「名前をBに変える」「中身を表示する」というバラバラな命令を一つのファイルにまとめておけば、一回の操作ですべての作業を自動で終わらせることができます。これを活用することで、人間が手作業で行うミスを減らし、効率的に作業を進めることが可能になります。
3. データをファイルに書き込む一番簡単なプログラム
まずは、COBOLを使って新しいファイルを作成し、そこに文字を書き込むプログラムを作ってみましょう。プログラミング未経験の方は、まず「どんな項目が必要か」を宣言する部分があることに注目してください。COBOLは非常に几帳面な言語なので、あらかじめ「これから使うファイルの名前はこれです」とコンピューターに教えてあげる必要があります。
IDENTIFICATION DIVISION.
PROGRAM-ID. WRITE-FILE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OUT-FILE ASSIGN TO "output.txt".
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 OUT-REC PIC X(20).
PROCEDURE DIVISION.
OPEN OUTPUT OUT-FILE.
MOVE "HELLO COBOL WORLD" TO OUT-REC.
WRITE OUT-REC.
CLOSE OUT-FILE.
STOP RUN.
このプログラムを実行すると、「output.txt」という名前のファイルが作られ、中に文字が保存されます。実行後のファイルの中身を確認すると以下のようになります。
HELLO COBOL WORLD
4. ファイルの内容を読み込んで画面に表示する
次に、先ほど作ったファイルの中身を読み込んで、画面に表示するプログラムを見てみましょう。「OPEN INPUT」という命令を使うことで、ファイルを引き出しから取り出すような動作を指示します。データを読み込むときは、一行ずつ順番に処理していくのが基本です。
IDENTIFICATION DIVISION.
PROGRAM-ID. READ-FILE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO "output.txt".
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-REC PIC X(20).
PROCEDURE DIVISION.
OPEN INPUT IN-FILE.
READ IN-FILE.
DISPLAY "ファイルの内容: " IN-REC.
CLOSE IN-FILE.
STOP RUN.
実行結果は、CLIの画面上に次のように表示されます。これにより、正しくデータが保存されていたことが確認できます。
ファイルの内容: HELLO COBOL WORLD
5. ファイル操作を自動化するシェルスクリプトの作成
プログラムが完成したら、それを動かす手順も自動化してみましょう。ここでは「シェルスクリプト」というものを使います。これは、プログラミングを実行するための「手順書」です。パソコン初心者の方向けに、ファイルを移動させたり名前を変えたりする一連の流れを一つにまとめたスクリプトを紹介します。
下記のスクリプト(名前を file_op.sh とします)は、古いファイルを消してからプログラムを動かし、出来上がったファイルを「保存用フォルダ」へ移動させるという流れを自動で行います。
#!/bin/bash
# 1. 古い出力ファイルを削除する(掃除)
rm -f output.txt
# 2. COBOLプログラムを実行する
echo "プログラムを実行中..."
./WRITE-FILE
# 3. 実行が成功したか確認してファイルを移動する
if [ -f output.txt ]; then
mkdir -p backup
cp output.txt ./backup/output_bak.txt
echo "バックアップを作成しました。"
fi
6. データの追記!既存のファイルに情報を付け足す
ファイル操作には、新しいものを作るだけでなく、すでにあるデータの後ろに新しい情報を付け足す「追記(EXTEND)」というモードがあります。例えば、毎日の売上データを一つのファイルにどんどん溜めていきたい時に使います。この機能を使わないと、新しいデータを書くたびに前のデータが消えてしまうので注意が必要です。
IDENTIFICATION DIVISION.
PROGRAM-ID. APPEND-FILE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MY-FILE ASSIGN TO "log.txt".
DATA DIVISION.
FILE SECTION.
FD MY-FILE.
01 MY-REC PIC X(30).
PROCEDURE DIVISION.
OPEN EXTEND MY-FILE.
MOVE "新しい記録を追加しました" TO MY-REC.
WRITE MY-REC.
CLOSE MY-FILE.
STOP RUN.
このプログラムを何度も動かすと、「log.txt」というファイルの中に、実行した分だけメッセージが積み重なっていきます。これが日記やログ(記録)の仕組みの基礎になります。
7. ファイルの存在チェックとエラー処理の重要性
ファイル操作でよくあるトラブルが、「読み込もうとしたファイルがどこにもない!」という状況です。これを防ぐために、スクリプト側で「ファイルがあるかどうか」を事前に確認する知恵が必要です。プログラミング未経験の方は、こうした「もしもの時の備え」をしっかり作ることが、良いエンジニアへの近道だと覚えておいてください。
CLIツールを使えば、特定のファイルが存在するかどうかを瞬時に判定できます。ファイルがなければ「作業を中断して警告を出す」といった処理を組み込むことで、システムが変な止まり方をすることを防げます。これは「ガード処理」とも呼ばれ、実際の現場では必ずといっていいほど使われるテクニックです。
8. 大量ファイルを一括処理するループスクリプト
最後に、たくさんのファイルを一度に処理する便利なスクリプトを紹介します。例えば、100個あるデータファイルの名前をすべて一括で変更したり、特定のフォルダにまとめたりする作業です。これを手作業でやると何時間もかかりますが、スクリプトなら一瞬です。
「ループ(繰り返し)」という考え方を使います。これは、指定した範囲のファイルに対して、同じ命令を何度も繰り返すようにコンピューターに指示するものです。パソコン初心者にとって、こうした「コンピューターならではの力」を一番実感できるのが、この大量一括処理の瞬間でしょう。
#!/bin/bash
echo "全ファイルの整理を開始します..."
for file in *.txt; do
echo "処理中: $file"
# ファイルの先頭に『processed_』という文字をつけてコピーする
cp "$file" "processed_$file"
done
echo "すべての整理が完了しました!"
9. 学んだファイル操作を組み合わせてシステムを作る
ここまで、プログラムによる読み書きと、スクリプトによる自動化を別々に見てきました。これらを組み合わせることで、初めて「システム」としての形が見えてきます。例えば、「毎日決まった時間にデータを集めて、COBOLで計算し、結果を安全な場所に保存してバックアップを取る」という一連の流れが、これまで学んだ知識だけで作れるようになります。
プログラミング未経験の方は、まずは一つ一つの命令が何を意味しているのかを、簡単な例え話と一緒に理解していってください。一度に全部を覚える必要はありません。実際に文字を打ち込み、ファイルが作られたり動いたりする様子を見ることで、少しずつ知識が自分のものになっていきます。COBOLとCLIスクリプトを味方につけて、自由自在にファイルを操れるようになりましょう!