0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM BobでCOBOL TODOアプリを作ってみた

0
Posted at

はじめに

COBOLは1959年に誕生した、60年以上の歴史を持つプログラミング言語です。今でも銀行や保険会社のシステムで現役で動いています。

自分で書くのは難しそうだけど、読むのはできそう。そう思って、IBM Bob(AIコーディングアシスタント) にCOBOLでTODOアプリを書いてもらい、実際に動かして読んでみることにしました。

環境構築

MacでGnuCOBOLをインストールします:

$ brew install gnu-cobol

GnuCOBOLは、オープンソースのCOBOLコンパイラです。無料で使えて、macOS、Linux、Windowsで動作します。

完成したもの

GitHubリポジトリ:

シンプルなCLI TODOアプリです。メニュー形式で操作し、データはtodos.datファイルに保存されます。日本語にも対応しています。

コンパイルと実行

$ cobc -x -free TODO-APP.cob -o TODO-APP
$ ./TODO-APP

-freeオプションで自由形式(列位置を気にしない)で書けます。

実際の使用例

$ ./TODO-APP

================================
   COBOL TODO アプリケーション
================================

--- メニュー ---
1. TODOを追加
2. TODO一覧を表示
3. TODOを完了にする
4. TODOを削除
5. 終了

選択してください (1-5): 1
TODOの内容を入力してください: 買い物に行く
TODOを追加しました! (ID: 0001)

選択してください (1-5): 2
--- TODO一覧 ---
ID:  0001 | [未完了] | 買い物に行く

IBM Bobとの開発体験

コード生成

「COBOLでTODOアプリを作って」と依頼すると、基本構造を持ったコードを生成してくれました。

IDENTIFICATION DIVISION.
PROGRAM-ID. TODO-APP.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT TODO-FILE ASSIGN TO "todos.dat"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS WS-FILE-STATUS.

バグ修正のサポート

開発中、無限ループに陥るバグが発生。Bobに相談すると原因を特定してくれました:

問題: ファイルステータス変数がリセットされていない

修正:

MOVE '00' TO WS-TEMP-STATUS  ← これを追加!
PERFORM UNTIL WS-TEMP-STATUS = '10'
    READ TEMP-FILE
        ...
END-PERFORM

COBOLの特徴

英語に近い構文

MOVE 'Y' TO WS-FOUND
IF TODO-ID = WS-TODO-ID-INPUT
PERFORM UNTIL WS-FILE-EOF

他の言語と比べて、ビジネス文書のように読めます。

レコード指向のデータ

01  TODO-RECORD.
    05  TODO-ID      PIC 9(4).
    05  TODO-STATUS  PIC X.
    05  TODO-TEXT    PIC X(70).

データ形式を明示的に定義します(PIC 9(4): 4桁の数字、PIC X(70): 70文字)。

データファイル

$ cat todos.dat
0001D買い物に行く
0002Pレポートを書く

固定長レコード形式で保存されます。

IBM Bobを使った感想

良かった点

  • 古い言語でも対応: COBOLでもコード生成可能
  • バグ診断が的確: 無限ループの原因を正確に特定
  • 日本語対応: 日本語のドキュメントも生成可能

改善の余地

  • 初回生成コードにバグがあった

まとめ

IBM Bobを使って、60年前の言語COBOLでTODOアプリを作ることができました。

自分で書くのは難しそうでしたが、AIに生成してもらって読んでみると、COBOLの可読性の高さと明示的な構文が理解できました。

COBOLに良くも悪くも気になっている方は、ぜひ試してみてください。AIと一緒なら意外と面白いですよ。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?