COBOLを活かせる仕事

    COBOLとは?

    COBOLの案件・業界分布について

    COBOLは、世の中にパソコンが登場した1970年代よりも前の1960年から存在し、50年以上の歴史をもつプログラム言語。数値計算、大量処理、帳票出力など事務処理系に強いという特徴があります。国際標準規格が整備され、記述の制約があるぶんだれでも同じように書けますが、自由度が低いというデメリットがあります。

    しかし、自由度が少ないゆえに不具合が起こりにくく、主に行政機関や金融機関等で利用されてきました。


    新しいプログラム言語がどんどん開発されるなか、COBOLは古い言語のため自然と廃れるかと思いきや、コンピュータの初期の時代から使われているため膨大なプログラム資産があること、これまでのCOBOLから新たに置き換えるためにはコストがかかりすぎること、利用している業界が行政機関や金融機関という“お固い“業種でなかなか新技術に移行しないことなどにより、“延命”のための技術が進化しています。

    ただし、COBOLを読める技術者が減少の一途をたどっていることは事実で、その確保が懸念されているようです。

     

    COBOLは、メインフレームとして利用されている銀行をはじめとする金融業界、行政機関などで必要とされています。また、COBOLで動く行政・金融システムは、消費税増税など法令の改正対応が求められることが多いので、改修のためにも、COBOLの知識は当面必要となると思われます。

     

    COBOLのサンプルコード

    ⚫順次ファイルコンバート

    (1つのファイルをある条件に従って3ファイルに出力する)

     

    000200 * * 000300 *

    サブシステム名:資材必要量計画*

    000400 * *

    000500 *モジュール名:順次ファイルコンバート*

    000600 * *

    000700 *モジュールID:SAMPLE01 *

    000800 * *

    000900 *機能概要:1つのファイルをある条件に従って3ファイルに*

    001000 *:出力する。*

    001100 * *

    001200 *作成者:山田太郎*

    001300 *作成日:1995.10.01 *

    001400 * 変更履歴:1996.08.01山田XXXを追加*

    001500 * *

    001600 *************************** *************************************

    001700識別部。

    001800プログラムID。サンプル01。

    001900 *

    002000環境部門。

    002100入出力セクション。

    002200ファイル制御。

    002300 SELECT IN01-ファイル割り当てIN01。

    002400 SELECT OT01-FILE ASSIGN OT01。

    002400 SELECT OT02-ファイル割り当て

    OT02 002400 SELECT OT03-ファイル割り当てOT03。

    002500/002600

    データ部。

    002700ファイルセクション。

    002800 FD IN01-FILE

    002900ブロックには0レコードが含まれています。

    003000 01 I1-REC。

    003100 AAA001のコピー==()== BY == I1-==。

    003200 *

    003300 FD OT01-ファイル。

    003400 01 O1-REC。

    003500 BBB001のコピー==()== BY == O1-==。

    003200 *

    003300 FD OT02-ファイル。

    003400 01 O2-REC。

    003500 BBB001のコピー==()== BY == O2-==。

    003200 *

    003300 FD OT03-FILE。

    003400 01 O3-REC。

    003500 BBB001のコピー==()== BY == O3-==に置き換えます。

    003600/002400

    WORKING-STORAGE SECTION。

    002500 *

    003900 * ----ワークエリア---------------------------------------- ------ *

    004000 01 WRK-AREA。

    004100 03 CAN-AREA。

    004200 05 CAN-PGMID PIC X(08)値 "SAMPLE01"。

    004300 03 CTR-AREA。

    004400 05 CTR-I1 PIC S9(09)パック10進数。

    004500 05 CTR-O1 PIC S9(09)パック10進数。

    004500 05 CTR-O2 PIC S9(09)パック10進数。

    004500 05 CTR-O3 PIC S9(09)パック10進数。

    004100 03キーエリア。

    004200 05 KEY-NEW PIC X(01)。

    002700 03 MSG-エリア。

    002800 DISPMSGをコピーします。

    004600 *

    004700 * ----初期化領域--------------------------------------- --------- *

    004800 01 INI-O1-REC。

    004900 BBB001のコピー==()== BY == INI-O1-==。

    004600 *

    004700 * ----共通領域---------------------------------------- ---------- *

    004800 01 W1-REC。

    004900 BBB001のコピー==()== BY == W1-==。

    006900 /

    007000手続き部。

    007100 ******************************************************* ***************

    007200 * SAMPLE01(0.0)*

    007300 ****************************** *************************************

    007400 00-SAMPLE01セクション。

    007100 *

    007500は10-INITを実行します。

    007700

    KEY-NEW = HIGH-VALUEまで20-MAIN 008000を実行します。

    008100 30-ENDを実行します。

    008200 *

    008300 00-SAMPLE01-EXIT。

    008400終了プログラム。

    008500 / *************************************************** ***************

    008600 * <初期処理>(1.0)*

    008700 *領域の初期クリア、入出力ファイルをオープンする。*

    008800 * *

    008900 ******************************* *********************************

    009000 10-INITセクション。

    009100 *

    007200 * ----出力ファイルの初期化------------------------------------- -*

    007300 INI-O1-RECへのスペースの移動。

    007400 INI-O1-RECを初期化します。

    007900 *

    008000 * ----ワークエリアの初期化------------------------------------- -*

    008100 LOW-VALUEをKEY-NEWに移動します。

    008200ゼロからCTRエリアに移動します。

    007500 *

    007600 * ----ファイルOPEN ---------------------------------------- -*

    007700入力IN01ファイルを開きます。

    007800オープン出力OT01-ファイル

    007800 OT02-ファイル

    007800 OT03-ファイル。

    007500 *

    008220 * ----入力ファイルのREAD ------------------------------------ *

    008230 11-READを実行します。

    012100 *

    012200 10-INIT-EXIT。

    012300終了。

    012400 **************************************************** ***************

    012500 * <READ処理>(1.1)*

    012600 *入力ファイルをREADする。*

    012700 * *

    012800 ************ ************************************************** **

    012900 11-READセクション。

    013000 *

    009400

    END

    009600でIN01-FILE 009500を読み取りKEY-NEWに

    高値を移動します009700 ENDで

    終了しません009800 COMPUTE CTR-I1 = CTR-I1 + 1

    009900 END-READ。

    014000 *

    014100 11-READ-EXIT。

    014200終了。

    014300 **************************************************** ***************

    014400 * <主処理>(2.0)*

    014500 *レコードを編集してWRITEする。*

    014600 * *

    014700 ********** ************************************************** ****

    014800 20のメインセクション。

    014900 *

    015000 * ----出力ファイルの初期化-------------------------------------- *

    015100 INI-O1-RECをW1-RECに移動します。

    015200 *

    015300 * ----出力ファイルの編集-------------------------------------- -*

    015400 W1-BB0001へのI1-AA0001の移動。

    015500移動I1-AA0002からW1-BB0002へ。

    015600 I1-AA0003をW1-BB0003に移動します。

    015700移動I1-AA0004からW1-BB0004へ。

    015800 MOVE I1-AA0005からW1-BB0005へ。

    015900 *

    016000 * ----振り分け&出力ファイルのWRITE ------------------------ *

    016100 EVALUATE I1-AA0001

    016200 WHEN 1

    016300 WHEN 2

    016400 MOVE W1-REC TO O2-REC * 1,2の時

    016500 PERFORM 22-WRITE

    016700 WHEN 3

    016400 MOVE W1-REC TO O3-REC * 3の時

    016500 PERFORM 23-WRITE 017100

    WHENその他

    016400 MOVE W1-REC TO O1-REC * 1,2,3以外の時

    016500 PERFORM 21-WRITE

    017500 END-EVALUATE。

    017600 *

    017610 * ----入力ファイルのREAD ------------------------------------ *

    017620 11-READを実行します。

    017630 *

    017700 20-MAIN-EXIT。

    017800終了。

    017900 ****************************************************** ***************

    018000 * <終了処理>(3.0)*

    018100 *スマートフォンファイルをCLOSEする。*

    018200 * *

    018300 **************************************************** ***************

    018400 30エンドセクション。

    018500 *

    014400 * ----ファイルCLOSE ---------------------------------------- *

    014500 CLOSE IN01-ファイル

    014600 OT01-ファイル

    014600 OT02-ファイル

    014600 OT03-ファイル。

    020100 *

    020200 * 件数のコンソール表示020300

    MSG-RECへのスペースの移動。

    020400 CAN-PGMIDをMSG-PROGRAM-IDに移動します。

    020500移動3からMSG-TBL-NUMへ。

    020600「XXXXX」をMSG-MESSAGE-B(1)に移動します。

    020700 MOVE CTR-I1からMSG-REC-CTR(1)へ。

    020800「XXXXX」をMSG-MESSAGE-B(2)に移動します。

    020900 CTR-O1をMSG-REC-CTR(2)に移動します。

    021000 MSG-MESSAGE-B(3)への「XXXXX」の移動。

    021100 MOVE CTR-O2からMSG-REC-CTR(3)へ。

    021200 MSG-AREAを使用した「AAAAMSG」の呼び出し。

    021300 *

    021400 30-END-EXIT。

    021500終了。

    012500 / *************************************************** ***************

    012600 * <ライト処理>(2.1)*

    012700 *出力ファイル1へのWRITEする。*

    012800 * *

    012900 ********** ************************************************** ****

    013000 21-WRITEセクション。

    013100 *

    013200 WRITE O1-REC。

    017000 COMPUTE CTR-O1 = CTR-O1 + 1.

    013400 *

    013500 21-WRITE-EXIT。

    013600終了。

    012500 **************************************************** ***************

    012600 * <WRITE処理>(2.2)*

    012700 *出力ファイル2へのWRITEする。*

    012800 * *

    012900 ********** ************************************************** ****

    013000 22-WRITEセクション。

    013100 *

    013200 WRITE O2-REC。

    017000 COMPUTE CTR-O2 = CTR-O2 + 1.

    013400 *

    013500 22-WRITE-EXIT。

    013600終了。012500 **************************************************** ***************

    012600 * <WRITE処理>(2.3)*

    012700 *出力ファイル3へのWRITEする。*

    012800 * *

    012900 ********** ************************************************** ****

    013000 23-WRITEセクション。

    013100 *

    013200 WRITE O3-REC。

    017000 COMPUTE CTR-O3 = CTR-O3 + 1.

    013400 *

    013500 23-WRITE-EXIT。

    013600終了。

     

    COBOLのフレームワーク

    現在において、COBOLには、新しくシステムを構築する需要はほぼありません。そのため、

    「幅広く利用されているCOBOLのフレームワークは存在しない」といっても良いでしょう。

    それよりも、COBOLで培われた資産を生かすために、現在のWEBサーバーやDBサーバーと連携としてCOBOLを動作させる、Microsoftの「.NET FrameworkCOBOL」や富士通の「Software NetCOBOL」が知られています。

     

    Microsoftの「.NET FrameworkCOB0L」は、マイクロソフトが提供するソフトウエア開発、実行用のプログラム。ソフトウエア開発や実行を行う際、部品的な役割を果たします。

     

    富士通の「Software NetCOBOL」は、事務処理向けに開発されたプログラム言語です。10進演算、ファイル処理、帳票作成など事務処理に特化し、高生産性、高性能といった特長があります。


    最後に

    当サービスでは、COBOLの案件を豊富に取り揃えております。ぜひ魅力的なCOBOLの案件をお探しください。


    ■COBOL案件

    https://freelance.modis.co.jp/projects/?skill=1


    COBOLについて

    【COBOLとは】 今から半世紀以上前に誕生したプログラム言語です。科学技術計算や人工知能開発等の専門的な目的のための言語しか無かった時代に、事務処理用として初めて開発されました。また現在でも多くの企業で会計処理や経理システムのために使用されています。 COBOLの特徴としては、プログラム文法が英語の単語や文法のように平易なため初心者プログラマーの方も飲み込みやすいこと、ファイル処理機能に優れ10進数計算の誤差が無いこと、データベース連携とセットになるケースがほとんどであること、CやJava等の言語と比べて汎用性が低いことなどがあげられます。 元々はメインフレーム向けに開発された言語ですが、今ではLinuxやオフコン、Windows等のPC系のOS上でも稼動させることが可能です。またオープンソース製のCOBOLも数多く登場し、個人プログラマーから企業、公共機関、自治体等幅広い分野で活用されています。 【COBOL関連の求人案件】 メインフレーム系の案件とオープン系の案件に大きく分けることが可能です。メインフレーム系は銀行や生保等のシステムが中心で、高いレベルの信頼性を確保すべき勘定系開発が多く、改修案件を中心に常に一定量が見込まれます。またオープン系はLinuxやWindows上のコンパイラ向けの開発が企業の海外拠点への導入が進むにつれて増えてきています。また最近は銀行や保険業界で勘定系に付帯する処理はオープン系に移行しつつあるため、オープン系COBOLの勢いが強まってきています。 最新技術にも対応した性能の高いCOBOL処理系がたくさん登場し、今後大企業だけでなく、様々な分野で導入が加速していくと考えられます。オープン系COBOLエンジニアにとっては今がよい案件をゲットするチャンスと言えます。 またオープン化に伴ってCOBOLとJavaやPHPとの複合的なスキルセットを求める案件も増えています。

    続きを見る