基幹系システムのダウンサイジング

汎用機の COBOL を、書き直さずに Linux へ移す

汎用機で動いていた自治体の基幹系システムを、オープンソースの COBOL で Linux サーバーへ移すダウンサイジングに加わりました。プログラムを1本ずつ書き直すのではなく、変換のプログラムとコンパイラの改良で、長年の業務の決まりを生かして移す方法を取りました。

時期
2008〜2012年ごろ
規模
COBOL 約15,000本・約500万行
JCL 約6,500本・約100万行
移した先
汎用機 → Linux サーバー(OpenCOBOL・Perl)
その後
同じプログラムを、いま C# へ変換中

はじまり

長年の業務の決まりが、プログラムに詰まっていた

移す対象は、汎用機で動いていた3つの業務の基幹系システムでした。COBOL のプログラムが約15,000本・約500万行、処理の手順を書いた JCL が約6,500本・約100万行あります。

プログラムには1970年代に書かれたとみられるコメントもあり、法令や制度が変わるたびの修正が、年輪のように積み重なっていました。1本ずつ手で移せば数千人月かかり、別の言語で書き直せば、業務の決まりの整理と使い方の教え直しから始めることになります。この蓄えをムダにしないことが、最初の条件でした。

やったこと

書き直さずに、移すための4つの手

  1. 変換は機械で

    メーカーごとの書き方の違いを自動で置き換えるプログラムを作りました。自動の変換だけで、9割近くのプログラムがコンパイルできる状態になりました。規則を直せば、全体に一度で反映できます。

  2. 足りない所はコンパイラを直す

    オープンソースの COBOL(OpenCOBOL)はソースが公開されているので、足りない機能をコンパイラそのものに足しました。データベースとの橋渡しは、COBOL から Perl を直接呼べるように組み込み、最初に試した呼び出し方と比べて、数十〜数百倍の速さで動くようにしました。

  3. 処理の手順は Perl へ

    処理の手順を書いた JCL には、オープンソースの実装がありません。実際に使っている機能のうち、欠かせないものに絞って Perl へ移しました。数十万件のデータの並べ替えと集計が数秒で終わる速さも確かめられました。

  4. 帳票は PDF で

    プリンタの制御の資料が残っていない中で、ラインプリンタの動きをまねるソフトを作りました。改行の位置などの出し方もほぼ元のまま、帳票を PDF で出せるようになりました。PDF にしたことで、部署ごとにファイルを分けて送ることもできます。

一緒に進めた人

結果が正しいかは、使う人に聞いて確かめた

プログラムを読めば、データが並べ替えられ集計されることまでは分かります。けれど、出てきた結果が業務として正しいかは、データを使う職員の方にしか分かりません。現場で聞き取りをしながら、1つずつ確かめて進めました。

帳票を部署ごとの PDF に分ける考えも、職員の方からいただいた案です。連続用紙を手で仕分けていた作業を、部署ごとのファイルを送るだけにできる、という案でした。

このダウンサイジングには、地元の複数の開発会社が業務ごとに分かれて参加し、作り方を共有しながら進めました。当社は、民間の医療機関のシステムで OpenCOBOL を使ってきた経験から、この取り組みに加わりました。

いまにつながること

メーカーに縛られない形で、引き継げる

使ったコンパイラも Perl もソースが公開されているので、利用料を払い続ける必要がなく、作った会社がいなくなっても他の会社が引き継げます。

このとき Linux へ移した COBOL のプログラムは、いま当社が C# へ変換しています。汎用機から Linux、そして C# へと、同じシステムを2段階で今の言語へ移しています。

古いシステムの移行について

ご相談

古い言語で動くシステムのこと、ご相談ください。

資料が残っていなくても、プログラムを読むところから始めます。

移行を相談する

相談する(お問い合わせ)