カテゴリ: COBOL 更新日: 2026/05/17

COBOLとPowerShellを連携!初心者でもわかる自動化スクリプト活用ガイド

COBOLとPowerShellスクリプトの連携例
COBOLとPowerShellスクリプトの連携例

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

生徒

「COBOLのプログラムをWindowsの便利な機能と一緒に使う方法ってありますか?例えば、計算結果を自動で別のフォルダに移したりしたいんです。」

先生

「それならWindows標準の『PowerShell(パワーシェル)』と連携させるのが一番ですよ。COBOLの計算能力とPowerShellの操作性を組み合わせると、最強の自動化ツールになります。」

生徒

「パワーシェル……初めて聞きました。パソコン初心者の私でも、二つの言葉を繋いで動かすことができるでしょうか?」

先生

「大丈夫です!連携の仕組みはとてもシンプルです。具体的なスクリプト例を見ながら、基本から学んでいきましょう!」

1. COBOLとPowerShellの連携とは?異なる道具を組み合わせる知恵

1. COBOLとPowerShellの連携とは?異なる道具を組み合わせる知恵
1. COBOLとPowerShellの連携とは?異なる道具を組み合わせる知恵

プログラミングの世界には、得意分野が異なるたくさんの「言葉」があります。COBOL(コボル)は、大量の数字を正確に計算したり、帳票を作ったりするのが得意な、歴史あるベテランの言葉です。対してPowerShell(パワーシェル)は、Windowsのパソコン自体を操作したり、ファイルを移動させたりするのが得意な、若くて活発な言葉です。

この二つを連携させるということは、「計算の達人(COBOL)」と「運びの達人(PowerShell)」に協力して仕事をしてもらうことを意味します。未経験の方には、料理人が美味しい料理を作り、配達員がそれをお客さんの元へ届けるような、分業システムをイメージしてもらうのが分かりやすいでしょう。これによって、人間が手作業で行っていた「計算して、保存して、コピーする」という一連の動作をすべて自動化できるのです。

2. PowerShellスクリプトの基本!Windowsを操る魔法の呪文

2. PowerShellスクリプトの基本!Windowsを操る魔法の呪文
2. PowerShellスクリプトの基本!Windowsを操る魔法の呪文

連携を学ぶ前に、まずはPowerShellスクリプトについて知っておきましょう。PowerShellは、Windowsの画面にあるアイコンをクリックする代わりに、文字(コマンド)を打ち込んでパソコンに命令を出すための道具です。そして、その命令をテキストファイルに書き留めたものが「スクリプト」です。

パソコンを触ったことがない方でも、手順書を渡されてその通りに動くロボットを想像してみてください。スクリプトがあれば、毎回同じ命令を打ち込む手間が省け、ボタン一つで何度でも同じ作業を完璧にこなしてくれます。このPowerShellからCOBOLプログラムを呼び出すことが、自動化の第一歩となります。

3. PowerShellからCOBOLを呼び出す一番簡単な例

3. PowerShellからCOBOLを呼び出す一番簡単な例
3. PowerShellからCOBOLを呼び出す一番簡単な例

それでは、具体的にどうやってPowerShellからCOBOLを動かすのかを見てみましょう。まずは、挨拶を表示するだけのシンプルなCOBOLプログラムを準備します。


IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-PS.
PROCEDURE DIVISION.
    DISPLAY "パワーシェルから呼ばれました!".
    STOP RUN.

このプログラムを「HELLO-PS.exe」という名前で作成したとします。次に、これを呼び出すPowerShellスクリプト(run_cobol.ps1)を書きます。


# 1. 画面にメッセージを出します
Write-Host "COBOLプログラムを実行します..."

# 2. COBOLの実行ファイルを呼び出します
./HELLO-PS.exe

# 3. 終わったことを報告します
Write-Host "実行が完了しました。"

実行結果は以下のようになります。PowerShellの青い画面(CLI)に、COBOLが喋った言葉が表示されます。


COBOLプログラムを実行します...
パワーシェルから呼ばれました!
実行が完了しました。

4. 計算結果をファイルに保存して自動でフォルダ分けする

4. 計算結果をファイルに保存して自動でフォルダ分けする
4. 計算結果をファイルに保存して自動でフォルダ分けする

次はもう少し実戦的な例です。COBOLで売上を計算し、その結果が書かれたファイルを、PowerShellが今日の日付のフォルダを作って自動的に移動させるという流れを作ります。まずは計算を行うCOBOLプログラムです。


IDENTIFICATION DIVISION.
PROGRAM-ID. SALE-CALC.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT OUT-FILE ASSIGN TO "result.txt".
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 OUT-REC PIC X(30).
PROCEDURE DIVISION.
    OPEN OUTPUT OUT-FILE.
    MOVE "2026/05/07 URIAGE: 50000" TO OUT-REC.
    WRITE OUT-REC.
    CLOSE OUT-FILE.
    STOP RUN.

この計算結果を整理するPowerShellスクリプトは、以下のようになります。「もしフォルダがなかったら作る」という賢い判断も入っています。


# 今日の日付でフォルダ名を作ります
$folderName = Get-Date -Format "yyyyMMdd"

# COBOLを実行します
./SALE-CALC.exe

# フォルダがなければ作ります
if (-not (Test-Path $folderName)) {
    New-Item -ItemType Directory -Path $folderName
}

# できたファイルをフォルダに移動します
Move-Item -Path "result.txt" -Destination "$folderName/result_backup.txt"
Write-Host "ファイルを $folderName フォルダに整理しました。"

5. 環境変数を使ってPowerShellからCOBOLへ情報を渡す

5. 環境変数を使ってPowerShellからCOBOLへ情報を渡す
5. 環境変数を使ってPowerShellからCOBOLへ情報を渡す

プログラムに「今は誰が作業しているか」や「どのデータを使ってほしいか」といった情報を外から伝えたいとき、環境変数(かんきょうへんすう)という仕組みを使います。これは、パソコンの中にある「共有のメモ帳」のようなものです。

PowerShellでメモ帳に書き込み、COBOLがそれを読み取ることで、情報の受け渡しがスムーズになります。未経験の方は、「伝言板」をイメージしてください。この機能を使うと、プログラムを書き換えなくても動作を変えることができるため、非常に柔軟な運用が可能になります。以下は、環境変数を読み取るCOBOLのコードです。


IDENTIFICATION DIVISION.
PROGRAM-ID. READ-ENV.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(10).
PROCEDURE DIVISION.
    DISPLAY "環境変数を読み込みます...".
    ACCEPT USER-NAME FROM ENVIRONMENT "MY_USER".
    DISPLAY "現在の作業担当者は " USER-NAME " です。".
    STOP RUN.

6. 条件分岐でエラー時に通知を出す高度な連携

6. 条件分岐でエラー時に通知を出す高度な連携
6. 条件分岐でエラー時に通知を出す高度な連携

自動化で大切なのは、失敗したときに気づけることです。PowerShellは、COBOLが「無事に終わったか(0)」それとも「エラーで止まったか(0以外)」という数字を受け取ることができます。これを終了コードと呼びます。

この終了コードを見て、PowerShellが「成功なら次へ、失敗なら赤い文字で警告を出す」という判断を下します。これにより、夜中に自動で動かしていても、朝起きたときにどこで問題が起きたのかが一目で分かります。初心者はまず、この「もしも(if)」の書き方を覚えるのが上達の近道です。以下のコードは、わざとエラーを出す処理のイメージです。


IDENTIFICATION DIVISION.
PROGRAM-ID. ERROR-GEN.
PROCEDURE DIVISION.
    DISPLAY "重大なエラーが発生しました!".
    MOVE 9 TO RETURN-CODE.
    STOP RUN.

これを受け取るPowerShell側の書き方は以下の通りです。


./ERROR-GEN.exe

if ($LASTEXITCODE -ne 0) {
    Write-Error "COBOLプログラムが異常終了しました。コード: $LASTEXITCODE"
} else {
    Write-Host "正常に終了しました。"
}

7. 複数のファイルを一括で処理するループ機能の活用

7. 複数のファイルを一括で処理するループ機能の活用
7. 複数のファイルを一括で処理するループ機能の活用

PowerShellの強力な武器の一つに、ループ処理があります。これは「同じことを何度も繰り返す」機能です。例えば、フォルダの中に100個のデータファイルがあるとき、それら一つひとつに対して順番にCOBOLプログラムを動かしていく、といった作業が得意です。

人間が100回クリックするのは大変ですが、スクリプトなら数行書くだけで終わります。パソコン初心者が一番「プログラミングをやっていてよかった!」と思える瞬間です。大量の書類を一枚ずつ処理する事務作業を、一瞬で終わらせる魔法を身につけましょう。CLIツールを使えば、こうした大量処理もパソコンへの負担を抑えつつ静かに完了させることができます。

8. ログ出力で「いつ誰が動かしたか」を記録する

8. ログ出力で「いつ誰が動かしたか」を記録する
8. ログ出力で「いつ誰が動かしたか」を記録する

連携スクリプトを運用する上で欠かせないのがログ(記録)です。PowerShellには、画面に出る文字をそのままテキストファイルに保存する便利な機能があります。これにより、「いつプログラムが始まったか」「どんなメッセージが出たか」をすべて証拠として残せます。

これを「実行ログ」と呼び、仕事でシステムを動かすときには非常に重要視されます。何か問題が起きたとき、このログを読み返すことで原因を突き止めることができます。PowerShellの「Tee-Object」や「Out-File」といったコマンドを使えば、画面に表示しつつ保存することも簡単です。安全・確実な運用を目指すなら、必ずログを取る習慣をつけましょう。

9. 連携をマスターして自分だけの自動ツールを作ろう

9. 連携をマスターして自分だけの自動ツールを作ろう
9. 連携をマスターして自分だけの自動ツールを作ろう

ここまで、COBOLとPowerShellを繋いで動かす様々な方法を見てきました。大切なのは、最初から完璧なものを作ろうとしないことです。まずは「挨拶を出すだけ」から始め、次に「ファイルを移動させる」、その次に「エラーを判定する」という風に、少しずつ部品を組み合わせていってください。

COBOLという計算の達人と、PowerShellというWindows操作の達人。この二つの力を合わせれば、あなたのパソコン作業は驚くほど楽になります。プログラミング未経験でも、一つ一つの意味を理解しながら進めば、必ず使いこなせるようになります。便利な自動化の世界を楽しみながら、一歩ずつエンジニアとしての階段を上っていきましょう!

カテゴリの一覧へ
新着記事
New1
COBOL
COBOLのEVALUATE文の使い方を完全ガイド!初心者でもわかる多岐選択
New2
C#
C#の拡張メソッドとは?既存クラスに機能を追加する便利技
New3
C#
ASP.NET CoreとC#の例外処理ベストプラクティス!エラーハンドリングの基本と実装方法
New4
Azure
Azure WAFとは?SQLインジェクションやXSSからWebサイトを守る初心者ガイド
人気記事
No.1
Java&Spring記事人気No1
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.2
Java&Spring記事人気No2
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.3
Java&Spring記事人気No3
C#
C# WinForms入門!初心者でも簡単にWindowsアプリを作る方法
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLのファイルステータス(FILE STATUS)の使い方を完全ガイド!初心者でもわかるエラー処理の基本
No.6
Java&Spring記事人気No6
C#
C#のbool型を完全解説!初心者でもわかるtrueとfalseの基本と使い方
No.7
Java&Spring記事人気No7
C#
C#のイベント処理を完全攻略!WinFormsとWPFの基本を解説
No.8
Java&Spring記事人気No8
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!