AKINOSUGI's diary

社内SEとしてやってきたことや学んだ内容を記載

Cobol

社内システムにCobolを利用しているものがあり、その担当となったので自分のPCに学習環境を作ってみる。

 

Cobolというと金融とか証券とかで利用されているっていう話しがよくありますが、私の勤務先は上記に当てはまりません。なんに使っているの?っていうと基幹システムです。勝手な想像ですが、Cobolの利用が多いのは汎用機を利用していたからでしょう。汎用機からOpen系への移行は汎用機の維持費やHWスペックの向上(Open系でも十分な処理速度が見込めること)を背景に行われてきたのでしょうが、どちらもHWレベルのコストが原因です。そのため、アプリケーションまで変えるっていう動きまでいかなかったんでしょう。アプリケーションレイヤーでもCobolは保守・運用コストが高い(言語仕様や開発者の不足・高齢化があります)んですが、内製化でどうにかすればいいって考えなんでしょうね・・・。この状況に陥っている会社は以外に多いのではないでしょうか?特に汎用機時代からガッチリ業務設計してそれにあわせたプログラムを作り込んできた会社ほどその傾向にありそうだって勝手に思ってます。

 

さて、本題ですがCobolの環境を作るって結構面倒です。厳密に言うとWindows OSで作成しようとするとMinGW入れてとか色々めんどくさそうです。有償だとVisual Cobolとかあるんですが、お金かけてまでCobol導入したくない(笑)。

なので、UbuntuにOpen Cobolをいれることにしました。とはいっても私のPCはWindows10なので、UbuntuについてはVirtualBoxの上にたてました。VirtualBoxのインストールとか、UbuntuへのOpen Cobolのインストールの方法とかはググればわかります。※Ubuntuでsudo apt install open-cobolとかでcobcが実行できるようになります。

 

ほんで、お次はCobol用のエディターにいいのがないかってことなんですが、正直ないです(笑)。よく見るのが、SAKURA editorなんですが、微妙。他の言語の勉強で利用しているVisual Studio CodeCobolの入力補完を入れて利用することにしました。

あとは、Visual Studio Codeのtaskにcobc を実行できるようにtask.jsonへの登録を実施。※基本的にはCOBOL Source colouriser for Visual Studio Codeのdetailsに記載のTask: Single file compile using GnuCOBOL/OpenCOBOL/COBOL-ITを参照しました。

引数に-x, -oを設定した感じです。

{
"version": "2.0.0",
"tasks": [
{
"label": "gnucobol - cobc (single file)",
"type": "shell",
"command": "cobc",
"args": [
"-x",
"${file}",
"-o",
"${workspaceFolder}/cobol/sh/${fileBasenameNoExtension}"
],
"problemMatcher": "$gnucobol-cobc",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

 

visual studio codeのworkspacefolderには/home/user/source/を指定していてその配下の

cobol/にソースファイルがあり、実行ファイルがその下のshにできるイメージです。

cobolのソースファイル開いて[ctrl] + [shift] +[B]でBuildされます。

 

これで実行ファイルの作成ができるまでの環境ができたので、実際にプログラム書いてみるって感じです。