macOS CatalinaでVSCode使ってCOBOL環境整備


なんでこんなことやってんの?

派遣先でCOBOLソースコードの読解を要求されたのでやってます。まだまだCOBOLの需要があったことは驚きでした。仕事だからしょうがないんで。

COBOLコンパイラのインストール

% brew install gnu-cobol 

にておしまい。 brewコマンドのインストールは他を参照してね。いっぱいあるから。

% cobc -version
cobc (GnuCOBOL) 3.1.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart
Built     Dec 28 2020 19:08:49
Packaged  Dec 23 2020 12:04:58 UTC
C version "Apple LLVM 12.0.0 (clang-1200.0.32.28)"

まだまだ、2021年現在でもメンテナンスされていることに驚きます。いい世の中だなぁ。

試しにHELLO_WORLD

       IDENTIFICATION  DIVISION.
       PROGRAM-ID.     HELLO_WORLD.
       PROCEDURE       DIVISION.
          DISPLAY  "*** HELLO_WORLD ***"
          STOP RUN.

行の最初の7つの空白がないとコンパイルエラーになります。また、最終行は空の改行が必要です。昔からそうなんで、しょうがないです。EOFってやつですよ。hello.cobでソースコードを保存したとして、

% cobc -x -Wall -debug hello.cob; ./hello
*** HELLO_WORLD ***

と、出ます。パチパチ。ここで、終わってもいいんだけど、毎回コマンドをターミナルで叩くのもヤボですね。今どきそれはない。

VSCodeを使って統合環境にする

https://code.visualstudio.com/download
にて、ダウンロードしましょう。ダウンロードされたら、アプリケーションフォルダに移動しておきましょう。それからダブルクリックで VSCode 起動です。先ほど作ったhello.cobを開くと、こんな画面になります。

この段階で、実はかなりいじくった状態です。1つずつ紹介していきましょう。


プラグインをVSCodeへ既にインストールしています。VSCodeではExtensionsという名前になっています。これはCOBOLのテキスト表記をわかりやすくするものです。その名もCOBOLというExtensionsです。あまりに一般的な名前で、どうかとは思います。設定はないので、COBOLでサーチしてインストールボタンを押すだけです。


次は、Save and Run 0.0.22 です。これを使ってテキスト編集後に実行まで持っていくわけです。Save and Runでサーチしてインストールボタンを押します。


Save and Run 0.0.22 付近のギアマークを押して設定画面を出します。中身を訂正します。

    "saveAndRun": {

        "commands": [
          {
            "match": ".cob",
            "cmd": "cobc -x -Wall -debug ${file}; ./${fileBasenameNoExt} ",
            "useShortcut": true,
            "silent": false
          },
        ]
      },

その後、VSCodeを再起動。これやらないと設定が有効にならないって話です。


あとは、コマンド+シフト+Rキーを叩くだけで、勝手にターミナルを開き、コンパイルエラーがないとこうなります。エラーがでなければ、デバックしまくりですねぇ。

おわりに

他の言語だったとしてもコンパイル後に自動的に実行してテストしたいとかの参考になるでしょう。テキストエディタを少し統合環境ぽくできたわけです。この他にGitHubとの連携もやってたので、これだけでも半日かかりました。GitHubの連携は、まだまだわかってないんだけど、そんなに頻繁じゃないのでコマンド叩くことにします。参考になりました?

GitHubを使う場合、こんなところにGitメニューがありましたよ。これでコマンド打たなくてもいい。ヤレヤレ。