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 Framework 用 COBOL」や富士通の「Software NetCOBOL」が知られています。

Microsoft .NET Framework 用 COBOL

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

富士通 Software NetCOBOL

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

COBOLに関連するお仕事しませんか?

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

COBOLに関連する案件をすべて見る

この記事を書いた人

M・I A-STARの中の人
記事がよければクリックしてね

案件を探す

検索条件を選択