COBOL運用の自動化!シェルスクリプトの書き方と活用例を初心者向けに解説
生徒
「COBOLのプログラムを動かすとき、毎回長い命令を入力するのが大変です。もっと簡単に、まとめて実行する方法はないでしょうか?」
先生
「それならシェルスクリプトを使うのが最適です。複数の命令を一冊の手順書にまとめて、パソコンに自動実行させることができますよ。」
生徒
「手順書を自分で書くということですか?プログラミングをしたことがない私でも書けるものなのでしょうか?」
先生
「もちろんです。基本は普段使っている命令を並べるだけですから。具体的な書き方と、COBOLでの活用例を一緒に学んでいきましょう!」
1. シェルスクリプトとは?パソコンへの自動指示書
シェルスクリプトとは、一言で言うと「パソコンへの命令を順番に書き記した魔法のメモ」のことです。プログラミング未経験の方には、「料理のレシピ」や「仕事のマニュアル」をイメージしてもらうと分かりやすいでしょう。レシピには「野菜を切る」「炒める」「味をつける」といった手順が書いてありますよね。シェルスクリプトも同様に、「このファイルを読み込む」「計算する」「結果を表示する」といった手順を書いておきます。
パソコンを動かすための黒い画面(CLI)では、通常は一回ずつキーボードで命令を打ち込みますが、シェルスクリプトとして保存しておけば、そのファイルの名前を呼ぶだけで、中身に書かれたすべての命令をパソコンが猛スピードで実行してくれます。COBOLの現場では、大量のデータを夜間に自動で処理させるために、このシェルスクリプトが欠かせない道具となっています。手作業によるミスを防ぎ、誰が実行しても同じ結果が得られるようになるのが最大のメリットです。
2. シェルスクリプトの基本的な書き方とルール
シェルスクリプトを書き始めるのはとても簡単です。特別なソフトは必要なく、メモ帳のようなテキストエディタがあれば十分です。ただし、作成する際にはいくつか守るべき決まりごとがあります。まず、ファイルの最初の一行目に必ず「シバン」と呼ばれる特殊な記号を書きます。これは「このファイルはシェルスクリプトですよ」とパソコンに教えるための印です。一般的には #!/bin/bash と書きます。
次に、ファイルの名前の末尾には .sh という拡張子をつけます。これは「シェル(shell)」の頭文字をとったものです。そして、中身には実行したい命令を一行ずつ書いていくだけです。例えば、画面に挨拶を表示して、日付を確認するスクリプトは以下のようになります。命令の意味が分からなくても、まずは形を真似してみることが大切です。
#!/bin/bash
# これはコメントです。実行には関係ありません。
echo "こんにちは!自動処理を開始します。"
date
echo "現在の日時を表示しました。"
このスクリプトを実行すると、次のような結果が得られます。
こんにちは!自動処理を開始します。
2026年 5月 7日 木曜日 00:00:00 JST
現在の日時を表示しました。
3. 実行権限を与えてスクリプトを起動させる
スクリプトを書き終えて保存しただけでは、まだパソコンはそれを「実行できるプログラム」として認めてくれません。ただのテキストファイルだと思い込んでいます。そこで、実行権限(じっこうけんげん)という許可証を与える必要があります。これは、鍵のかかったドアを開けるための鍵を渡すようなイメージです。
黒い画面(ターミナル)で chmod +x ファイル名.sh という命令を打ち込むことで、そのファイルが実行可能な状態になります。一度この許可を与えてしまえば、次からは ./ファイル名.sh と入力するだけで、いつでも何度でも自動処理を呼び出せるようになります。パソコン初心者の方が最初につまずきやすいポイントですが、「魔法の杖に魔力を込める儀式」だと思えば、少し楽しく感じられるかもしれませんね。これで、あなたの書いた手順書が命を持って動き出します。
4. COBOLプログラムをコンパイルして実行する活用例
それでは、実際のCOBOL開発でシェルスクリプトをどのように使うか見ていきましょう。COBOLのプログラムを動かすには、「翻訳(コンパイル)」と「実行」という二つの手順が必要です。これを毎回手入力するのは面倒ですよね。そこで、この二つの手順を一つにまとめたスクリプトを作ります。まず、動作確認用のシンプルなCOBOLプログラムを用意します。
IDENTIFICATION DIVISION.
PROGRAM-ID. AUTO-RUN.
PROCEDURE DIVISION.
DISPLAY "シェルスクリプトから呼び出されました!".
STOP RUN.
このプログラムを自動でコンパイルして実行するシェルスクリプトは、以下のようになります。ファイル名は run_cobol.sh としましょう。
#!/bin/bash
echo "コンパイルを開始します..."
cobc -x AUTO-RUN.cob
echo "プログラムを実行します..."
./AUTO-RUN
echo "すべての処理が完了しました。"
実行結果は以下のようになります。
コンパイルを開始します...
プログラムを実行します...
シェルスクリプトから呼び出されました!
すべての処理が完了しました。
5. 変数を使って柔軟なスクリプトを作る
スクリプトの中で、何度も同じ名前や数値を使うことがあります。そんな時に便利なのが変数(へんすう)です。変数は、値を入れておくための「名前付きの箱」のようなものです。例えば、保存先のフォルダ名を変数に入れておけば、後でフォルダ名が変わったとしても、一箇所を書き換えるだけでスクリプト全体を修正できます。
シェルの変数を使うときは 変数名=値 と書き、中身を取り出すときは $変数名 のように頭にドル記号をつけます。これを使うことで、スクリプトがより賢く、使いやすくなります。初心者のうちは、よく使う単語を変数に置き換える練習から始めると、プログラムの「効率化」の感覚が身につきます。以下の例では、ユーザー名を変数に入れてメッセージを組み立てています。
#!/bin/bash
USER_NAME="COBOL初心者"
MESSAGE="本日の学習、お疲れ様です!"
echo "${USER_NAME}さん、${MESSAGE}"
実行すると次のように表示されます。
COBOL初心者さん、本日の学習、お疲れ様です!
6. 条件分岐(if文)によるエラーチェックの自動化
運用現場でのシェルスクリプトの真骨頂は、状況に応じた「判断」ができることです。これにはCOBOLと同じようにif文を使います。例えば、COBOLプログラムが成功したか失敗したかをスクリプトに判断させ、「成功したらログを保存する」「失敗したら警告を表示する」といった分岐が可能です。
前の手順の成功・失敗は $? という特殊な変数に入っています。これが「0」なら成功、「0以外」なら失敗です。これを自動でチェックするようにしておけば、夜中にエラーが起きても、スクリプトが適切に対処してくれます。このように「もし〜なら、こうする」というロジックを組むことで、ただの手順書が「頼りになる相棒」へと進化します。以下は、プログラムの終了コードをチェックする例です。
#!/bin/bash
./AUTO-RUN
if [ $? -eq 0 ]; then
echo "成功:プログラムは正常に終了しました。"
else
echo "エラー:問題が発生しました。確認してください。"
fi
プログラムが正常なら以下のように表示されます。
シェルスクリプトから呼び出されました!
成功:プログラムは正常に終了しました。
7. 繰り返し処理で複数のファイルを一括処理
「100個のデータファイルすべてに同じ処理をしたい」というとき、手作業では気が遠くなりますが、シェルスクリプトなら数行で解決します。これには繰り返し処理(for文やwhile文)を使います。これは、指定した回数分、あるいは条件を満たすまで、同じ命令をぐるぐると繰り返す仕組みです。
例えば、複数のプログラムを一気にコンパイルしたり、月ごとの集計ファイルを順番に作成したりするのに役立ちます。パソコンは疲れることを知りませんから、何千回、何万回の繰り返しも一瞬で終わらせてくれます。プログラミング未経験の方が最も感動するのが、この「圧倒的なスピードと効率」です。単調な作業はパソコンに任せて、人間はもっとクリエイティブな仕事に集中できるようになります。これが自動化の真髄です。
8. ファイル操作とログ出力の連携
運用の現場では、処理の結果を画面に出すだけでなく、必ず「ファイルとして記録」を残します。これをログ出力と呼びます。シェルスクリプトでは > という記号(リダイレクト)を使うことで、画面に出るはずの文字をファイルに書き込むことができます。また、既存のファイルに追記したいときは >> と二つ並べます。
「いつ、誰が、何を実行して、成功したのか」を自動でファイルに書き溜めておけば、後でトラブルが起きたときの原因究明が非常にスムーズになります。COBOLプログラムの実行結果と、シェルスクリプト独自のメッセージを組み合わせて保存する設定は、実務において必須のスキルです。以下のコードは、実行ログをファイルに書き出すイメージです。
#!/bin/bash
LOG_FILE="operation.log"
echo "$(date) 処理を開始します" >> $LOG_FILE
./AUTO-RUN >> $LOG_FILE 2>&1
echo "$(date) 処理が完了しました" >> $LOG_FILE
このスクリプトを実行しても画面には何も出ませんが、operation.log というファイルの中にしっかりと記録が残されます。記録を確認すると次のようになっています。
2026年 5月 7日 木曜日 00:05:00 JST 処理を開始します
シェルスクリプトから呼び出されました!
2026年 5月 7日 木曜日 00:05:01 JST 処理が完了しました
9. シェルスクリプトをマスターしてCOBOL運用のプロへ
シェルスクリプトは、COBOLプログラムを支える「舞台裏の監督」のような存在です。プログラム単体でも力強い処理ができますが、シェルスクリプトと組み合わせることで、初めて「止まらないシステム」として完成します。一見、難しそうな英語の羅列に見えるかもしれませんが、一つ一つの命令はシンプルです。大切なのは、小さな自動化から始めてみることです。
まずは今日学んだ「echo」での挨拶や、日付の表示から試してみてください。自分の書いた一行がパソコンを動かす喜びを積み重ねていけば、気づいたときには複雑な運用スクリプトも自由に操れるようになっているはずです。プログラミング未経験からでも、この道具を手に入れれば、あなたのITスキルは格段に飛躍します。一歩ずつ、楽しみながら学んでいきましょう!