CODASYLへのCOBOL 60レポート(1960 年 4 月) | |
| パラダイム | 手続き型、命令型、オブジェクト指向、汎用 |
|---|---|
| デザイン: | ハワード・ブロムバーグ、ノーマン・ディスカウント、ヴァーノン・リーブス、ジーン・E・サメット、ウィリアム・セルデン、ガートルード・ティアニー、間接的にグレース・ホッパーの影響を受けた[1] |
| 開発者 | CODASYL、ANSI、ISO / IEC |
| 初登場 | 1959年 |
| 安定リリース | ISO/IEC 1989:2023 / 2023 |
| タイピングの規律 | 弱い、静的 |
| ファイル名拡張子 | .cbl、、.cob.cpy |
| 主な実装 | |
| GnuCOBOL、IBM COBOL、マイクロフォーカスビジュアルCOBOL | |
| 方言 | |
| COBOL/2、DEC COBOL-10、DEC PDP-11 COBOL、DEC PDP-11 COBOL-85、DEC VAX COBOL、DOSVS COBOL、Envyr ICOBOL、Fujitsu COBOL、Hitachi COBOL2002、HP3000 COBOL/II、IBM COBOL SAA、IBM COBOL/400、IBM COBOL/II、IBM Enterprise COBOL、IBM ILE COBOL、IBM OS/VS COBOL、ICL COBOL (VME)、Micro Focus ACUCOBOL-GT、Micro Focus COBOL-IT、Micro Focus RM/COBOL、Micro Focus Visual COBOL、Microsoft COBOL、Raincode COBOL、Realia COBOL、Ryan McFarland RM/COBOL、Ryan McFarland RM/COBOL-85、Tandem (NonStop) COBOL、Tandem (NonStop) SCOBOL、 UNIVAC COBOL、Unisys MCP COBOL74、Unisys MCP COBOL85、X/Open COBOL、[2] Veryant isCOBOL、Wang VS COBOL、WATBOL | |
| 影響を受けた | |
| 初期: AIMACO、COMTRAN、FACT、FLOW-MATIC
COBOL 2002: [a] C++、Eiffel、Smalltalk | |
| 影響を受けた | |
| CobolScript、[6] EGL、[7] PL/I、[8] PL/B [9] | |
COBOL(/ ˈ k oʊ b ɒ l、 - b ɔː l / ; 「共通ビジネス指向言語」の頭字語)は、ビジネス用に設計された英語に似たコンパイル型のコンピュータプログラミング言語です。命令型、手続き型、および2002年以降はオブジェクト指向言語です。COBOLは主に企業や政府のビジネス、金融、および管理システムで使用されています。COBOLは、大規模なバッチ処理やトランザクション処理ジョブなど、メインフレームコンピューターに展開されるアプリケーションで今でも広く使用されています。多くの大手金融機関は、2006年までこの言語で新しいシステムを開発していましたが、[10]今日COBOLでプログラミングされているほとんどのプログラミングは、既存のアプリケーションを純粋に維持するためのものです。プログラムは新しいプラットフォームに移行されたり、最新の言語で書き直されたり、他のソフトウェアに置き換えられたりしています。[11]
COBOLは1959年にCODASYLによって設計され、グレース・ホッパーによって設計されたプログラミング言語FLOW-MATICを部分的にベースとしています。これは、データ処理用の移植可能なプログラミング言語を作成するという米国国防総省の取り組みの一環として作成されました。当初は一時的な解決策と見なされていましたが、国防総省はすぐにコンピュータメーカーにそれを提供するよう圧力をかけ、その結果、広く採用されるようになりました。[12] 1968年に標準化され、5回改訂されています。拡張には、構造化プログラミングとオブジェクト指向プログラミングのサポートが含まれます。現在の標準はISO / IEC 1989:2023です。[13]
COBOL ステートメントには、などの散文構文があり、自己文書化され、非常に読みやすいように設計されています。ただし、冗長であり、300 を超える予約語を使用します。これは、他の言語 (この場合は) の簡潔で数学的な構文とは対照的です。
MOVE x TO yy = x;
COBOL コードは 4 つの部分(識別、環境、データ、および手順) に分かれており、セクション、段落、および文の厳格な階層構造が含まれています。大規模な標準ライブラリがないため、この標準では 43 のステートメント、87 の関数、および 1 つのクラスのみが指定されています。
COBOLが作られた当時、学術的なコンピュータ科学者は一般的にビジネスアプリケーションに興味がなく、その設計にも関わっていなかった。COBOLは(事実上)ビジネス用のコンピュータ言語としてゼロから設計され、入力と出力に重点が置かれ、データ型は数字とテキストの文字列だけだった。[14]
COBOL は、冗長性、設計プロセス、構造化プログラミングのサポート不足などの点で批判されてきました。これらの弱点により、ローカルでは読みやすいものの、全体としては理解しにくいモノリシックなプログラムが作成されます。
長年にわたり、COBOLはメインフレームでの業務処理のためのプログラミング言語として想定されてきましたが[15]、近年では多くのCOBOL処理がクラウドコンピューティングに移行されています[16]。
歴史と仕様
背景
1950年代後半、コンピュータユーザーとメーカーはプログラミングコストの上昇を懸念し始めた。1959年の調査では、データ処理設備のプログラミングコストは平均80万ドル、新しいハードウェアで実行できるようにプログラムを変換するには60万ドルかかることが判明した。新しいプログラミング言語が急増していた当時、同じ調査では、共通のビジネス指向言語を使用すれば、変換ははるかに安価で迅速になると示唆されていた。[17]
1959年4月8日、バローズ社のコンピュータ科学者であるメアリー・K・ホーズは、ペンシルバニア大学で学界、コンピュータユーザー、メーカーの代表者を集め、共通ビジネス言語に関する正式な会議を開催した。[18]代表者には、グレース・ホッパー(英語風データ処理言語FLOW-MATICの発明者)、ジーン・サメット、ソール・ゴーンが含まれていた。[19] [20]
4 月の会議で、このグループは国防総省(DoD) に、共通のビジネス言語を作成する取り組みを後援するよう要請した。この代表団は、国防総省のデータ システム リサーチ スタッフのディレクターである Charles A. Phillips 氏に感銘を与えた。[21]彼は、代表団が国防総省の問題を「完全に理解している」と考えていた。国防総省は 225 台のコンピューターを運用し、さらに 175 台を発注しており、それらのコンピューターで実行するプログラムの実装に 2 億ドル以上を費やしていた。ポータブル プログラムがあれば、時間の節約になり、コストを削減し、近代化を容易にすることができる。[22]
チャールズ・フィリップスは会議の主催に同意し、代表団に議題の起草を任せた。[23]
コボル60
1959年5月28日と29日(チューリッヒALGOL 58会議のちょうど1年後)、ペンタゴンでビジネス用の共通プログラミング言語の作成について議論する会議が開催されました。41人が出席し、フィリップスが議長を務めました。 [24]国防総省は、同じデータ処理プログラムを異なるコンピューターで実行できるかどうかを懸念していました。当時唯一の主流言語であったFORTRANには、そのようなプログラムを書くために必要な機能が欠けていました。 [25]
代表者たちは、銀行や保険から公共事業や在庫管理まで、さまざまな環境で機能する言語について熱心に説明した。彼らは、より多くの人がプログラミングできるようにすべきであり、新しい言語は現代の技術の限界によって制限されるべきではないことに全会一致で同意した。大多数は、その言語は英語を最大限に活用し、変更が可能で、マシンに依存せず、パワーを犠牲にしても使いやすいものでなければならないことに同意した。[26]
この会議の結果、運営委員会と短期、中期、長期の各委員会が設立された。短期委員会には暫定的な言語の仕様を作成するために9月(3か月)までが与えられ、その後他の委員会によって改良されることとなった。[27] [28]しかし、彼らの公式の使命は既存のプログラミング言語の長所と短所を特定することであり、新しい言語を作成するように明示的に指示されたわけではない。[25]
短期委員会は期限に驚きを隠さなかった。[29]委員の一人、ベティ・ホルバートン氏は3ヶ月という期限を「非常に楽観的」と評し、その文言が本当に一時的な解決策になるのか疑問視した。[30]
運営委員会は6月4日に会合を開き、活動全体をデータシステム言語委員会(CODASYL)と命名し、執行委員会を設置することに合意した。[31]
短期委員会のメンバーは、6つのコンピュータメーカーと3つの政府機関を代表していた。コンピュータメーカーは、バローズ・コーポレーション、IBM、ミネアポリス・ハネウェル(ハネウェル研究所)、RCA、スペリー・ランド、シルバニア・エレクトリック・プロダクツである。政府機関は、米国空軍、海軍のデビッド・テイラー・モデル・ベイスン、および国立標準局(現在の米国国立標準技術研究所)である。[32]委員会の議長は、米国国立標準局のジョセフ・ウェグスタインであった。作業は、データの説明、ステートメント、既存のアプリケーション、およびユーザーエクスペリエンスの調査から始まった。[33]
委員会は主にFLOW-MATIC、AIMACO、COMTRANプログラミング言語を検討した。[25] [34] FLOW-MATIC言語は実装されており、AIMACOはわずかな変更を加えた派生言語であったため、特に影響力があった。[35] [36] FLOW-MATICの発明者であるグレース・ホッパーも委員会の技術顧問を務めた。[29] FLOW-MATICがCOBOLにもたらした主な貢献は、長い変数名、コマンドの英語の単語、データ記述と命令の分離であった。[37]
ホッパーは「COBOLの母」や「COBOLの祖母」と呼ばれることもあるが[38] [39] [40] 、COBOLの主任設計者であるジャン・サメットはホッパーは「COBOLの母でも、創造者でも、開発者でもない」と述べている[41] [1] 。
ボブ・ベマーが発明したIBMのCOMTRAN言語は、グレース・ホッパーの同僚で構成された短期委員会によってFLOW-MATIC [42] [43]の競合相手とみなされた。 [44] IBMが設計プロセスを支配したようには見えないように、その機能の一部はCOBOLには組み込まれなかった。[27]また、ジャン・サメットは1981年に、一部の委員会メンバー(彼女自身も含む)から「強い反IBM的偏見」があったと述べた。[45]あるケースでは、COMTRANマニュアルの著者であり中期委員会メンバーであるロイ・ゴールドフィンガーが、彼の言語をサポートし代数式の使用を奨励するために小委員会の会議に出席した後、グレース・ホッパーは、英語に基づく言語を作成するスペリー・ランドの努力を繰り返すメモを短期委員会に送った。[46]
1980年、グレース・ホッパーは「COBOL 60は95%がFLOW-MATIC」であり、COMTRANの影響は「極めて小さい」とコメントした。さらに、彼女は、この作業がFLOW-MATICとCOMTRANの両方から影響を受けていると主張するのは、「他の人を満足させ、彼らが私たちを追い出そうとしないようにするため」だけだと述べた。[47]
COBOLに取り入れられたCOMTRANの機能には、数式[48]、PICTURE句[49] 、 GO TOIFの必要性を排除した改良されたステートメント、より堅牢なファイル管理システム[42]などがありました。
委員会の作業の有用性は大きな議論の的となった。委員の中には、この言語には多くの妥協があり、委員会による設計の結果であると考える者もいたが、検討した3つの言語よりも優れていると考える者もいた。言語が複雑すぎると考える者もいれば、単純すぎると考える者もいた。[50]
議論を呼んだ機能には、データ処理ユーザーにとって役に立たない、あるいは高度すぎると考えるものもあった。そのような機能には、ブール式、数式、表の添え字(インデックス)などがある。[51] [52]もう一つの議論のポイントは、キーワードを文脈依存にするかどうかと、それが読みやすさに与える影響だった。 [51]文脈依存のキーワードは却下されたが、このアプローチは後にPL/Iで使用され、2002年からはCOBOLでも部分的に使用された。 [53 ]対話性、オペレーティングシステムとの対話(当時はほとんど存在しなかった)、関数(純粋に数学的でデータ処理には役に立たないと考えられていた)についてはほとんど考慮されなかった。 [54] [55]
仕様は9月4日に執行委員会に提出されたが、期待に応えられなかった。ジョセフ・ウェグスタインは「粗雑な部分があり、追加する必要がある」と指摘し、ボブ・ベマーは後に「寄せ集め」と評した。委員会には12月までに改善するよう命じられた。[29]
9月中旬の会議で、委員会は新しい言語の名前について議論した。提案には「BUSY」(ビジネスシステム)、「INFOSYL」(情報システム言語)、「COCOSYL」(共通コンピュータシステム言語)などがあった。[56]「COBOL」という名前を誰が作ったのかは不明だが、[57] [58]ボブ・ベマーは後にそれが自分の提案だったと主張した。[59] [60] [61]
10月に中級委員会はロイ・ナットが作成したFACT言語仕様のコピーを受け取りました。その機能は非常に委員会に感銘を与え、COBOLをそれに基づいて作成するという決議を可決しました。[62]
これは、仕様策定で大きな進展を遂げていた短期委員会にとって打撃となった。技術的には優れているものの、FACTは移植性を考慮して開発されておらず、メーカーとユーザーの合意も得られていなかった。また、実証可能な実装も欠いており、[29] FLOW-MATICベースのCOBOLの支持者が決議を覆すことができた。RCA代表のハワード・ブロムバーグもFACTを阻止し、RCAのCOBOL実装の取り組みが無駄にならないようにした。[63]
委員会が大きすぎて、すぐにそれ以上の進展が見込めないことがすぐに明らかになった。苛立ったハワード・ブロンバーグは「COBOL」と刻まれた15ドルの墓石を購入し、チャールズ・フィリップスに不満を示すために送った。[b] [65] [66]
既存の言語を分析するために小委員会が結成され、6人のメンバーで構成されました。[25] [67]
- IBMのウィリアム・セルデンとガートルード・ティアニー、
- RCAのハワード・ブロムバーグとハワード・ディスカウント、
- シルバニア・エレクトリック・プロダクツのヴァーノン・リーブス氏とジーン・E・サメット氏。
小委員会は仕様作成の作業のほとんどを行い、短期委員会にその作業のレビューと修正を任せて、最終的な仕様を作成しました。[25]
仕様は1960年1月8日に執行委員会で承認され、政府の印刷局に送られ、COBOL 60として印刷されました。この言語の目的は、効率的で移植性の高いプログラムを簡単に作成できるようにすること、ユーザーが最小限の労力とコストで新しいシステムに移行できるようにすること、そして経験の浅いプログラマーにも適していることでした。[68]
CODASYL執行委員会は後に、ユーザーやベンダーからの質問に答え、仕様を改善・拡張するためにCOBOL保守委員会を設立した。[69]
1960年、COBOLコンパイラーの開発を計画しているメーカーのリストは増えていった。9月までにさらに5社のメーカーがCODASYLに加わり(Bendix、Control Data Corporation、General Electric (GE)、National Cash Register、Philco)、参加メーカーはすべてCOBOLコンパイラーを発表した。GEとIBMは、それぞれGECOMとCOMTRANという自社の言語にCOBOLを統合することを計画していた。対照的に、International Computers and Tabulatorsは自社の言語CODELをCOBOLに置き換えることを計画していた。[70]
一方、RCAとスペリーランドはCOBOLコンパイラの作成に取り組んでいた。最初のCOBOLプログラムは8月17日にRCA 501で実行された。[71] 12月6日と7日には、同じCOBOLプログラム(若干の変更はあるものの)がRCAコンピュータとレミントンランドのUnivacコンピュータで実行され、互換性が実現できることが実証された。[72]
使用された言語の相対的な影響は、すべての COBOL リファレンス マニュアルに印刷されている推奨アドバイスに今でも示されています。
COBOL は業界言語であり、いかなる企業または企業グループ、あるいはいかなる組織または組織グループの所有物でもありません。
明示的または黙示的を問わず、いかなる貢献者も CODASYL COBOL 委員会も、プログラミング システムおよび言語の正確性および機能に関して一切の保証を行いません。また、いかなる貢献者も委員会も、これに関して一切の責任を負いません。ここで使用されている著作権で保護された資料の著者および著作権所有者は次のとおりです。
FLOW-MATIC ( Unisys Corporationの商標)、UNIVAC (R) I および II のプログラミング、データ自動化システム、1958 年、1959 年、Unisys Corporation が著作権を取得; IBM Commercial Translator Form No. F28-8013、1959 年、IBM が著作権を取得; FACT、DSI 27A5260-2760、1960 年、Minneapolis-Honeywell が著作権を取得。
彼らは、この資料の全部または一部をCOBOL仕様で使用することを明示的に許可しています。このような許可は、プログラミングマニュアルや同様の出版物におけるCOBOL仕様の複製および使用にも適用されます。[73]
COBOL-61 から COBOL-65
Cobol が 10 年後までに存在し続ける可能性は低いでしょう。
匿名、1960年6月[74]
COBOL 60には多くの論理的欠陥が発見され、ゼネラル・エレクトリックのチャールズ・カッツは、COBOLは明確に解釈できないと警告した。消極的ながらも短期委員会が全面的なクリーンアップを実施し、1963年3月までに、意味の曖昧さは残るものの、COBOLの構文はALGOLと同じくらい定義可能であると報告された。[70]
COBOL は、構文が大きく、構文構造内に多くのオプション要素があるため、コンパイラを書くのが難しい言語です。また、多くのデータ表現、暗黙の型変換、I/O 操作に必要なセットアップを備えた言語に対して効率的なコードを生成する必要があります。[75]初期の COBOL コンパイラは原始的で低速でした。1962 年の米国海軍の評価では、コンパイル速度は 1 分あたり 3 ~ 11 ステートメントでした。1964 年半ばまでに、1 分あたり 11 ~ 1000 ステートメントに増加しました。メモリを増やすと速度が大幅に向上し、コンパイル コストは大きく異なることが確認されました。1 ステートメントあたりのコストは 0.23 ドルから 18.91 ドルでした。[76]
1962年後半、IBMはCOBOLを主な開発言語とし、COMTRANの開発を中止すると発表した。[76]
COBOL仕様は、発行後5年間で3回改訂されました。COBOL-60は1961年にCOBOL-61に置き換えられました。これは1963年にCOBOL-61拡張仕様に置き換えられ、ソート機能とレポートライター機能が導入されました。[77]追加された機能は、1959年後半にハネウェルが短期委員会に宛てた手紙で特定した欠陥を修正しました。[71] COBOLエディション1965では、仕様がさらに明確化され、大容量ストレージファイルとテーブルを処理する機能が導入されました。[78]
COBOL-68
COBOLのバージョン間の非互換性を克服するために標準化の取り組みが始まりました。1962年後半、ISOと米国規格協会(現在のANSI)の両方が標準を作成するためのグループを結成しました。ANSIは1968年8月に米国規格COBOL X3.23を作成し、これが後のバージョンの礎となりました。[79]このバージョンはアメリカ国家規格(ANS)COBOLとして知られ、1972年にISOに採用されました。[80]
COBOL-74
1970年までに、COBOLは世界で最も広く使用されるプログラミング言語になりました。[81]
ANSI委員会とは独立して、CODASYLプログラミング言語委員会が言語の改良に取り組んでいた。委員会は1968年、1969年、1970年、1973年に新しいバージョンを発表し、プログラム間通信、デバッグ、ファイルマージ機能などの変更や、文字列処理やライブラリインクルード機能の改善などを行った。[82]
CODASYLはANSI委員会から独立していたが、CODASYL開発ジャーナルはANSIによって、実装に値するほど人気のある機能を特定するために使用されていた。[83]プログラミング言語委員会は、ECMAおよび日本のCOBOL標準委員会とも連携していた。[82]
しかし、プログラミング言語委員会はあまり知られていなかった。副委員長のウィリアム・ラインハルスは、COBOLコミュニティの3分の2が委員会の存在を知らないと不満を述べた。また、会議の議事録や変更提案などの公開文書を無料で公開するための資金も不足していた。[84]
DELETE1974年、ANSIは、ファイル編成、ステートメント[85]、セグメンテーションモジュール[ 86 ]などの新機能を含む(ANS)COBOLの改訂版を公開しました。削除された機能にはNOTE、ステートメント、EXAMINEステートメント(に置き換えられましたINSPECT)、実装者定義のランダムアクセスモジュール(新しいシーケンシャルI/Oモジュールと相対I/Oモジュールに置き換えられました)が含まれます。これらは44の変更を構成し、既存のステートメントが新しい標準と互換性がなくなりました。[87]レポートライターはCOBOLから削除される予定でしたが、標準が公開される前に復活しました。[88] [89] ISOは後に1978年に更新された標準を採用しました。[80]
COBOL-85
1978 年 6 月、COBOL-74 の改訂作業が開始されました。提案された標準 (一般に COBOL-80 と呼ばれています) は以前の標準とは大きく異なり、非互換性と変換コストに関する懸念が生じました。1981 年 1 月、トラベラーズ インシュアランスの上級副社長であるジョセフ T. ブロフィ氏は、標準委員会がCOBOL-74 と上位互換性がないとして訴訟を起こすと脅しました。ブロフィ氏は、4,000 万行のコード ベースの以前の変換を「非生産的」で「プログラマー リソースの完全な無駄」と表現しました。[90]その年の後半、データ処理管理協会(DPMA) は、新しい標準に「強く反対」すると述べました。その理由として、「法外な」変換コストと「ユーザーに強制される」機能強化を挙げました。[91] [92]
最初の公開レビュー期間中、委員会は2,200件の回答を受け取り、そのうち1,700件は否定的な定型文でした。[93]その他の回答は、COBOL-80がシステムに与える影響の詳細な分析であり、変換コストはコード1行あたり少なくとも50セントになると予測されていました。回答のうち、提案された標準に賛成したのは12件未満でした。[94]
ISO TC97-SC5 は、1979 年にWim Ebbinkhuijsenの主導により、国際 COBOL 専門家グループを設立しました。このグループは、米国を含む多くの国の COBOL 専門家で構成されていました。その目標は、新しい COBOL 機能の必要性に関して、ANSI と世界のその他の国々の間で相互理解と尊重を達成することでした。3 年後、ISO はグループのステータスを正式なワーキング グループWG 4 COBOLに変更しました。このグループは COBOL 標準の主要な所有権と開発を引き継ぎ、ANSI がほとんどの提案を行いました。
1983年、DPMAは委員会が国民の懸念に応えたことを理由に、標準への反対を撤回した。同年、国立標準局の調査では、提案された標準にはほとんど問題がないと結論付けられた。[92] [95] 1年後、DECはVAX/VMS COBOL-80をリリースし、COBOL-74プログラムの変換にはほとんど問題がないことを指摘した。新しいEVALUATEステートメントとインラインは特に好評で、制御フローとデバッグがPERFORM簡素化されたため、生産性が向上した。[96]
2回目の公開レビューではさらに1,000件の(主に否定的な)回答が寄せられたが、最後のレビューではわずか25件しか寄せられず、その時点では多くの懸念事項が対処されていた。[92]
1985 年、ISO ワーキング グループ 4 は、当時の ANSI 提案標準を承認し、いくつかの変更を加えて、新しい ISO 標準 COBOL 85 として設定しました。これは 1985 年後半に公開されました。
60の機能が変更または廃止され、115の機能[97]が追加されました。[98] [99]
- スコープターミネータ (
END-IF、END-PERFORM、END-READなど) - ネストされたサブプログラム
CONTINUE、無操作ステートメントEVALUATE、スイッチ文INITIALIZEデータのグループをデフォルト値に設定できるステートメント- インライン
PERFORMループ本体 - 以前は、ループ本体は別の手順で指定する必要がありました。 - 参照変更により部分文字列へのアクセスが可能
- I/O ステータス コード。
この新しい規格はANSIを含むすべての国家標準化団体によって採用された。[80]
1989年と1993年に2度の改正が行われた。最初の改正では固有の機能が導入され、他の改正では修正が行われた。[80]
COBOL 2002 とオブジェクト指向 COBOL
1997年、ガートナーグループは、 COBOLの総行数は2000億行に達し、全ビジネスプログラムの80%がCOBOLで実行されていると推定した。[c] [100]
1990年代初頭、COBOLの次の全面改訂版にオブジェクト指向を追加する作業が開始されました。オブジェクト指向の機能はC++とSmalltalkから取り入れられました。[3] [4]
当初の見積もりでは、この改訂は1997年までに完了する予定であり、ISO委員会草案(CD)は1997年までに利用可能になった。一部のベンダー(Micro Focus、Fujitsu、IBMなど)は、完全な改訂の草案に基づいてオブジェクト指向構文を導入した。最終的に承認されたISO標準は、2002年後半に承認され、公開された。[101]
富士通/GTSoftware、[102] Micro Focusは、 .NET Frameworkをターゲットとしたオブジェクト指向COBOLコンパイラを導入した。
他にも多くの新機能があったが、その多くは1978年以来CODASYL COBOL Journal of Developmentに掲載されていたが、COBOL-85に収録される機会を逃していた。[103]その他の機能には以下のものがある: [104] [105]
- 自由形式のコード
- ユーザー定義関数
- 再帰
- ロケールベースの処理
- Unicodeなどの拡張文字セットのサポート
- 浮動小数点およびバイナリデータ型 (それまでは、バイナリ項目は宣言の10 進数指定に基づいて切り捨てられていました)
- ポータブルな演算結果
- ビットおよびブールデータ型
- ストレージの取得と解放のためのポインタと構文
- テキストベースの
SCREEN SECTIONユーザーインターフェース - 施設
VALIDATE - .NET やJavaなどの他のプログラミング言語やフレームワーク環境との相互運用性が向上しました。
この規格については3つの訂正が発行された。2006年に2つ、2009年に1つである。 [106]
COBOL 2014
2003年から2009年にかけて、COBOLのオブジェクトファイナライゼーション、XML処理、コレクションクラスについて説明した3つの技術レポートが作成されました。 [106]
COBOL 2002 はサポートが不十分で、標準を完全にサポートするコンパイラはありませんでした。マイクロフォーカスは、新機能に対するユーザーの需要が不足していることと、コンパイラの適合性をテストするために使用されていたNISTテストスイートが廃止されたことが原因であると判断しました。標準化プロセスも遅く、リソースが不足していることも判明しました。[107]
COBOL 2014には以下の変更が含まれています。[108]
- ポータブルな演算結果はIEEE 754データ型に置き換えられました
VALIDATE機能、レポート作成機能、画面処理機能などの主要な機能はオプションになっています。- メソッドのオーバーロード
- 動的容量テーブル(COBOL 2002のドラフトから削除された機能)[109]
COBOL 2023
COBOL 2023 標準では、いくつかの新機能が追加されました。
SENDおよびRECEIVEステートメントを使用した非同期メッセージング構文[110]- トランザクション処理機能と
COMMIT[ROLLBACK110] XOR論理演算子[110]- この
CONTINUEステートメントは、指定された期間プログラムを一時停止するように拡張することができる[111] - 声明[111
DELETE FILE] LINE SEQUENTIALファイル構成[112]- 無限ループの定義は
PERFORM UNTIL EXIT[111] SUBSTITUTE異なる長さの部分文字列の置換を可能にする組み込み関数[111]CONVERT基数変換関数[111]- ブールシフト演算子[113]
この標準の完全な実装はまだ知られていない。[引用が必要]
遺産
COBOLプログラムは世界中の政府や企業で使用されており、z/OS、z/VSE、VME、Unix、NonStop OS、OpenVMS、Windowsなどのさまざまなオペレーティングシステムで実行されています。1997年にガートナーグループは、世界のビジネスの80%がCOBOLで実行されており、2000億行を超えるコード[c]があり、毎年50億行以上が書かれていると報告しました。[114]
20 世紀末近く、2000 年問題(Y2K) は COBOL プログラミングの重要な取り組みの焦点となり、数十年前にシステムを設計したプログラマーによって対処されることもありました。COBOL コードの修正に特に多くの労力が必要になったのは、ビジネス アプリケーションで日付が頻繁に使用されるためビジネス指向の COBOL が多く、データ フィールドが固定長だったためです。[115]一部の調査では、「Y2K ソフトウェアの修復コストの 24% が COBOL によるもの」とされています。[116]これらのプログラムに Y2K のクリーンアップ作業が行われた後も、2003 年の調査では多くのプログラムが引き続き使用されていました。[117]著者らは、調査データから「他の言語やテクノロジとの統合が採用されない限り、今後 10 年間でアプリケーション開発における COBOL の重要性が徐々に低下する」ことが示唆されると述べています。[118]
2006年と2012年にComputerworldが実施した調査(352人の読者を対象に実施)によると、60%以上の組織がCOBOLを使用しており(C++やVisual Basic .NETよりも多い)、その半数では社内ソフトウェアの大半にCOBOLが使用されていました。[10] [119]マネージャーの36%がCOBOLからの移行を計画していると答え、25%はレガシーコードの書き換え費用がかからないのであれば移行すると答えました。一方、一部の企業はCOBOLプログラムをメインフレームからより安価で高速なハードウェアに移行しています。[10]
2016年の下院での証言では、COBOLが依然として多くの連邦機関で使用されていることが示された。[120] ロイターは2017年に、銀行システムの43%が依然としてCOBOLを使用しており、2200億行を超えるCOBOLコードが使用されていると報じた。[121]
2019年までに、COBOLプログラマーの数は退職により急速に減少し、大量のトランザクション処理にメインフレームシステムを依然として使用している企業や政府機関では、差し迫ったスキルギャップが生じています。システムを新しい言語で書き直す作業は、コードメンテナンスのアウトソーシングと同様に、費用がかかり問題が多いことが判明しているため、より多くの人々にCOBOLのトレーニングを行う提案が提唱されています。[122]
COVID-19パンデミックとそれに続く失業者の急増の間、米国のいくつかの州は、失業手当管理に使用されているレガシーシステムをサポートする熟練したCOBOLプログラマーが不足していると報告した。これらのシステムの多くは、パンデミック以前からより現代的なプログラミング言語への移行が進められていたが、そのプロセスは保留されていた。[123]同様に、米国国税庁は、コロナウイルス救済・救援・経済安全保障法で義務付けられた数千万件の支払いを行うために、 COBOLベースの個人マスターファイルに急いでパッチを当てた。[124]
特徴
構文
COBOL には英語に似た構文があり、プログラム内のほぼすべての記述に使用されています。たとえば、条件は または として表現できます が、より簡潔には または と 表現できます。より複雑な条件は、繰り返される条件と変数を削除することで省略できます。たとえば、 は と短縮できます。この構文をサポートするために、COBOL には 300 を超えるキーワードがあります。[125] [d]キーワードの中には、同じ単語の単純な代替または複数形のスペルであるものもあり、これにより、より文法的に適切なステートメントや節が提供されます。たとえば、とキーワードは、 と、およびとのように、互換的に使用できます。
x IS GREATER THAN yx GREATER yx > ya > b AND a > c OR a = da > b AND c OR = dINOFTIMETIMESVALUEVALUES
各 COBOL プログラムは、単語、リテラル、ピクチャー文字列 (§ PICTURE 句を参照)、および区切り文字という 4 つの基本的な語彙項目で構成されています。単語には、予約語とユーザー定義の識別子が含まれます。最大 31 文字の長さで、文字、数字、ハイフン、およびアンダースコアを含めることができます。リテラルには、数字 (例12) と文字列 (例'Hello!') が含まれます。[127]区切り文字には、スペース文字と、スペースが続くコンマとセミコロンが含まれます。[128]
COBOL プログラムは、識別部、環境部、データ部、および手続き部の 4 つの部分に分かれています。識別部では、ソース要素の名前とタイプを指定し、クラスとインターフェイスを指定します。環境部では、ファイルや文字セットなど、プログラムを実行するシステムに依存するプログラム機能を指定します。データ部は、変数とパラメータを宣言するために使用されます。手続き部には、プログラムのステートメントが含まれます。各部は、段落で構成されるセクションにさらに分割されます。
メタ言語
COBOLの構文は通常、中括弧、角括弧、縦棒、下線を使用した独自のメタ言語で記述されます。メタ言語はオリジナルのCOBOL仕様のために開発されました。当時はバッカス・ナウア記法が存在していましたが、委員会はそれを聞いたことがありませんでした。 [129]
例として、次のADDステートメントの説明を考えてみましょう。
この説明では、次のバリエーションが許可されます。
xに1 を加算xに1 、a 、bを加算切り捨て、y 、zを切り捨て
ADD a 、b TO c ON SIZE ERROR DISPLAY "Error" END-ADD
a をbに追加サイズエラーなし「エラーなし」サイズエラーあり「エラー」
コード形式


COBOLの人気が最高潮に達したのは、キーパンチマシンとパンチカードの時代と一致した。プログラム自体はパンチカードに書き込まれ、読み込まれてコンパイルされ、プログラムに入力されるデータもカード上にあることがあった。[130]
COBOL は、固定形式 (デフォルト) と自由形式の 2 つの形式で記述できます。固定形式では、コードを特定の領域に収まるように配置する必要があります (パンチ カードの使用から引き継がれています)。COBOL 2002 までは、次の形式がありました。
COBOL 2002では、領域AとBが統合されてプログラムテキスト領域が形成され、実装者が定義した列で終了するようになりました。[131]
COBOL 2002では、自由形式のコードも導入されました。自由形式のコードは、新しいプログラミング言語と同様に、ファイルの任意の列に配置できます。コメントは を使用して指定されます。*>これはどこにでも配置でき、固定形式のソースコードでも使用できます。継続行は存在せず、>>PAGE指示子がインジケータに置き換わります/。[131]
識別区分
識別部は、次のコード エンティティを識別し、クラスまたはインターフェイスの定義を含みます。
オブジェクト指向プログラミング
クラスとインターフェースは2002 年から COBOL に存在しています。クラスには、クラスメソッドと変数を含むファクトリオブジェクトと、インスタンスメソッドと変数を含むインスタンスオブジェクトがあります。[132]継承とインターフェースはポリモーフィズムを提供します。汎用プログラミングのサポートは、任意のクラスまたはインターフェースを使用するためにインスタンス化できるパラメータ化されたクラスを通じて提供されます。オブジェクトは参照として保存され、特定の型に制限される場合があります。メソッドを呼び出すにはINVOKE、 と同様に動作する ステートメントCALLと、関数を使用するのと類似したインラインメソッド呼び出しの 2 つの方法があります。[133]
*> これらは同等です。
INVOKE my-class "foo" RETURNING var MOVE my-class :: "foo" TO var *> インラインメソッドの呼び出し
COBOLではメソッドを隠す方法は提供されていない。ただし、クラスデータはPROPERTY句なしで宣言することで隠すことができ、外部コードからはアクセスできなくなる。[134] メソッドのオーバーロードはCOBOL 2014で追加されました。[135]
環境部門
環境部には、構成セクションと入出力セクションが含まれます。構成セクションは、通貨記号、ロケール、文字セットなどの変数機能を指定するために使用されます。入出力セクションには、ファイル関連の情報が含まれます。
ファイル
COBOL は、シーケンシャル、インデックス、相対の3 つのファイル形式、つまり編成をサポートしています。シーケンシャル ファイルでは、レコードは連続しており、リンク リストと同様に、順番に走査する必要があります。インデックス ファイルには 1 つ以上のインデックスがあり、レコードにランダムにアクセスしたり、インデックスに基づいてソートしたりできます。各レコードには一意のキーが必要ですが、その他の代替レコード キーは一意である必要はありません。インデックス ファイルの実装はベンダーによって異なりますが、 C-ISAMやVSAMなどの一般的な実装はIBM のISAMに基づいています。その他の実装には、OpenVMSのRecord Management ServicesやHPE NonStop (Tandem)のEnscribe があります。相対ファイルは、インデックス ファイルと同様に、一意のレコード キーを持っていますが、代替キーはありません。相対レコードのキーはその順序位置です。たとえば、10 番目のレコードのキーは 10 です。つまり、キーが 5 のレコードを作成するには、(空の) 先行レコードの作成が必要になる場合があります。相対ファイルでは、順次アクセスとランダムアクセスの両方が可能です。[136]
一般的な非標準拡張は、テキストファイルの処理に使用される行順次編成です。ファイル内のレコードは改行で終了し、長さはさまざまです。[137]
データ部門
データ部は、異なる項目を宣言する 6 つのセクションに分かれています。ファイル レコード用のファイル セクション、静的変数用の作業記憶域セクション、自動変数用のローカル記憶域セクション、パラメーターと戻り値用のリンケージ セクション、テキストベースのユーザー インターフェイス用のレポート セクションと画面セクションです。
集計データ
COBOL のデータ項目は、データ項目が他のデータ項目の一部であるかどうかを示すレベル番号を使用して階層的に宣言されます。レベル番号が高い項目は、レベル番号が低い項目に従属します。レベル番号が 1 の最上位データ項目はレコードと呼ばれます。従属集約データを持つ項目はグループ項目と呼ばれ、従属集約データを持たない項目は基本項目と呼ばれます。標準データ項目を記述するために使用されるレベル番号は 1 から 49 です。[138] [139]
01 some-record . *> 集合グループレコード項目05 num PIC 9(10) . *> 基本項目05 the-date . *> 集合(サブ)グループレコード項目10 the-year PIC 9(4) . *> 基本項目10 the-month PIC 99 . *> 基本項目10 the-day PIC 99 . *> 基本項目
上記の例では、基本項目numとグループ項目 はthe-dateレコード に従属していますsome-recordが、基本項目the-year、the-month、 はthe-dayグループ項目 の一部ですthe-date。
IN従属項目は(または) キーワードで区別できますOF。たとえば、上記のサンプル コードと次の例を検討してください。
01 販売日.
05 年PIC 9(4) . 05 月PIC 99 . 05 日PIC 99 .
the-year、、およびという名前はthe-month、the-dayそれらの名前で複数のデータ項目が定義されているため、それ自体ではあいまいです。特定のデータ項目、たとえばグループ内に含まれる項目の 1 つを指定するにはsale-date、プログラマーはthe-year IN sale-date(または同等のthe-year OF sale-date) を使用します。この構文は、ほとんどの現代言語でサポートされている「ドット表記」に似ています。
その他のデータレベル
レベル番号66は、以前に定義された項目の構造に関係なく、それらの項目の再グループ化を宣言するために使用されます。このデータレベルは、関連するRENAMES節でも参照されますが、めったに使用されず[140]、1988年頃には古いプログラムでよく見られました。階層構造と論理構造のデータを無視できるため、その使用は推奨されず、多くのインストールで使用が禁止されていました。[141]
01 customer-record .
05 cust-key PIC X(10) . 05 cust-name . 10 cust-first-name PIC X(30) . 10 cust-last-name PIC X(30) . 05 cust-dob PIC 9(8) . 05 cust-balance PIC 9(7)V99 . 66 cust-personal-details cust-name THRU cust-dobに名前が変更されます。66 cust-all-details cust-name THRU cust-balanceに名前が変更されます。
レベル番号 77 は、項目がスタンドアロンであることを示し、このような状況ではレベル番号 01 と同等です。たとえば、次のコードでは、2 つの 77 レベルのデータ項目、およびを宣言しています。property-nameこれらsales-regionは、他のどのデータ項目からも独立した (従属しない) 非グループ データ項目です。
77 物件名PIC X(80) . 77 販売地域PIC 9(5) .
88レベル番号は、親データ項目にその節で指定された値の1つが含まれている場合に真となる条件名(いわゆる88レベル)を宣言しますVALUE。[142]たとえば、次のコードは、wage-typeデータ項目の現在の文字データ値に応じて真または偽となる2つの88レベル条件名項目を定義します。データ項目に の値が含まれている場合'H'、条件名は真ですが、またはwage-is-hourlyの値が含まれている場合は、条件名は真です。データ項目に他の値が含まれている場合は、両方の条件名が偽です。
'S''Y'wage-is-yearly
01 賃金種別PIC X . 88 賃金は時間単位VALUE "H" . 88 賃金は年単位VALUE "S" , "Y" .
データ型
標準COBOLでは以下のデータ型が提供されています。[143]
COBOLでは型の安全性は可変です。数値データは異なる表現やサイズの間で暗黙的に変換され、英数字データは数値やグループデータを含む文字列として保存できる任意のデータ項目に配置できます。[144]対照的に、オブジェクト参照とポインタは同じ型の項目からのみ割り当てることができ、その値は特定の型に制限される場合があります。[145]
PICTURE句
PICTURE(または)節PICは文字列であり、各文字列はデータ項目の一部と、そのデータ項目に含まれる内容を表します。一部のピクチャ文字は、項目のタイプと、メモリ内で項目が占める文字数または桁数を指定します。たとえば、 は910 進数を示し、 はS項目が符号付きであることを示します。その他のピクチャ文字 (挿入文字および編集文字と呼ばれる) は、項目のフォーマット方法を指定します。たとえば、一連の+文字は文字位置と、先頭の符号文字を最終文字データ内に配置する方法を定義します。右端の非数値文字には項目の符号が含まれ、+この位置の左側の に対応するその他の文字位置にはスペースが含まれます。繰り返し文字は、ピクチャ文字の後に括弧で数字を指定することによって、より簡潔に指定できます。たとえば、は9(7)と同等です9999999。数字 ( 9) と符号 ( S) 文字のみを含むピクチャ指定は、純粋に数値データ項目を定義しますが、英字 ( A) または英数字 ( ) 文字を含むピクチャ指定は、英数字Xデータ項目を定義します。その他の書式設定文字の存在は、編集された数値または編集された英数字データ項目を定義します。[146]
USAGE句
句USAGEは、データが格納される形式を宣言します。データ型に応じて、句を補完したり、PICTURE句の代わりに使用したりできます。ポインタやオブジェクト参照を宣言するために使用できますが、主に数値型を指定するために使用されています。これらの数値形式は次のとおりです。[147]
- バイナリでは、最小サイズは
PICTURE句またはUSAGE次のような句によって指定されます。BINARY-LONG USAGE COMPUTATIONAL、データは実装が提供する任意の形式で保存される。多くの場合、USAGE BINARYUSAGE DISPLAYデフォルトの形式では、データは文字列として保存されます- 浮動小数点数(実装依存形式またはIEEE 754準拠)
USAGE NATIONAL拡張文字セットを使用してデータが文字列として保存されるUSAGE PACKED-DECIMALデータは可能な限り小さい10進数形式(通常はパックされた2進化10進数)で保存されます。
レポートライター
レポートライターは、レポートを作成するための宣言的な機能です。プログラマーはレポートのレイアウトとそれを作成するのに必要なデータを指定するだけでよく、改ページ、データの書式設定、見出しや脚注などを処理するコードを記述する必要がありません。[148]
レポートはレポート ファイルに関連付けられており、レポート ライター ステートメントを通じてのみ書き込むことができるファイルです。
FDレポート出力REPORT販売レポート。
各レポートは、データ部のレポート セクションで定義されます。レポートは、レポートの見出し、フッター、および詳細を定義するレポート グループに分割されます。レポートは、階層的なコントロール ブレークを回避して動作します。コントロール ブレークは、キー変数の値が変わると発生します。たとえば、顧客の注文の詳細を示すレポートを作成する場合、プログラムが別の顧客の注文に到達したときにコントロール ブレークが発生する可能性があります。以下は、営業担当者の売上を示し、無効なレコードがあれば警告するレポートのレポート記述の例です。
RD販売レポートページ制限60行最初の詳細3コントロール販売者名。
01 タイプページヘッダー. 03 列1 値"販売レポート" . 03 列74 値"ページ" . 03 列79 PIC Z9ソースページ カウンター.
01 売上日タイプ詳細、行+ 1 。03 列3 値"売上日" 。03 列12 写真 99/99/9999ソース売上日。03 列21 値"だった" 。03 列26 写真 $$$$9.99ソース売上額。
01 無効な販売タイプ詳細、行+ 1 。03 列3 値"無効なレコード:" 。03 列19 PIC X(34)ソース販売レコード。
01 TYPE CONTROL HEADING seller-name , LINE + 2 . 03 COL 1 VALUE "Seller:" . 03 COL 9 PIC X(30) SOURCE seller-name .
上記のレポートの説明では、次のレイアウトについて説明しています。
売上レポート ページ 1 販売者: ハワード・ブロムバーグ 2008年10月12日の売上は1000ドルでした 2008 年 12 月 12 日の売上は $0.00 でした 2008年12月13日の売上は31.47ドルでした 無効なレコード: Howard Bromberg XXXXYY 販売者: ハワードディスカウント ... 売上レポート 12 ページ 2014年8月5日の売上は543.98ドルでした 無効なレコード: William Selden 12O52014FOOFOO 2014年5月30日の売上は$0.00でした
4 つのステートメントがレポート ライターを制御します。INITIATEはレポート ライターの印刷準備をします。GENERATEはレポート グループを印刷します。SUPPRESSはレポート グループの印刷を抑制します。TERMINATEはレポート処理を終了します。 上記の売上レポートの例では、手続き部は次のようになります。
OPEN INPUT sales 、OUTPUT report-out INITIATE sales-report PERFORM UNTIL 1 <> 1 READ sales AT END EXIT PERFORM END-READ VALIDATE sales-record IF valid-record GENERATE sales-on-day ELSE GENERATE invalid-sales END-IF END-PERFORM TERMINATE sales-report CLOSE sales 、report-out .
レポートライター機能の使用状況は大きく異なる傾向があり、広範囲に使用している組織もあれば、まったく使用していない組織もあります。[149]さらに、レポートライターの実装の品質にはばらつきがあり、品質の低い実装では実行時に過剰な量のメモリを使用することがありました。[149]
手続き区分
手順
手続き部内のセクションと段落(まとめて手続きと呼ばれる)は、ラベルや単純なサブルーチンとして使用できます。他の部とは異なり、段落はセクション内にある必要はありません。[150]
プログラムは終了するまで、その手順に沿って実行されます。[151]
手順をサブルーチンとして使用するには、PERFORM動詞が使用されます。
ステートメントは、呼び出されたコードの最後でステートメントPERFORMに続くコードに実行が戻るという意味で、新しい言語のプロシージャ呼び出しに多少似ていますが、パラメータを渡したり結果値を返したりするメカニズムは提供されません。 のような単純なステートメントを使用してサブルーチンが呼び出されると、制御は呼び出されたプロシージャの最後に戻ります。ただし、 は、複数の隣接するプロシージャのシーケンスにまたがる範囲を呼び出すために使用されるという点で異なります。これは、次の構文を使用して行われます。
PERFORMPERFORM subroutinePERFORMPERFORM sub-1 THRU sub-n
手順. ALPHAを実行. ALPHAからGAMMAまで実行停止実行. ALPHA . 'A'を表示. BETA . 'B'を表示. GAMMA . 'C'を表示.
このプログラムの出力は「AAB C」になります。
PERFORM従来のプロシージャ呼び出しとは異なり、少なくとも従来は、呼び出しスタックの概念はありません。その結果、ネストされた呼び出しが可能になります (ネストされた一連のコード自体がステートメントPERFORMを実行する場合がありますPERFORM) が、両方の呼び出しで同じコードの一部が実行される場合は特別な注意が必要です。問題は、内側の呼び出しのコードが外側の呼び出しの終了ポイントに到達したときに発生します。より正式には、PERFORM以前に呼び出されたがまだ完了していない呼び出しの終了ポイントに制御が渡された場合、COBOL 2002 標準では動作が未定義であると規定されています。
その理由は、COBOL は「戻りアドレス」ではなく、継続アドレスと呼ばれるものを使用して動作するからです。制御フローがいずれかのプロシージャの最後に到達すると、継続アドレスが検索され、制御がそのアドレスに転送されます。プログラムが実行される前に、すべてのプロシージャの継続アドレスは、プログラム テキスト内で次に来るプロシージャの開始アドレスに初期化されます。そのため、PERFORMステートメントが発生しない場合は、制御はプログラムの上から下へ流れます。ただし、PERFORMステートメントが実行されると、呼び出されたプロシージャ (または、呼び出された範囲の最後のプロシージャ (使用された場合)) の継続アドレスが変更されPERFORM THRU、最後に制御が呼び出しサイトに戻ります。元の値は保存され、後で復元されますが、ストレージ位置は 1 つだけです。2 つのネストされた呼び出しが重複するコードで動作する場合、継続アドレスの管理が互いに干渉し合う可能性があります。[152] [153]
次の例 (Veerman & Verhoeven 2006 より引用) は、この問題を示しています。
LABEL1 .
表示'1' LABEL2からLABEL3を実行停止実行. LABEL2 .表示'2' LABEL3からLABEL4を実行. LABEL3 .表示'3' . LABEL4 .表示'4' .
このプログラムの出力は「1 2 3 4 3」になると思われるかもしれません。「2」を表示した後、2 番目のPERFORM呼び出しによって「3」と「4」が表示され、最初の呼び出しが「3」で続行されます。従来の COBOL 実装では、これは当てはまりません。むしろ、最初のPERFORM文は の末尾に継続アドレスを設定しLABEL3、 内の呼び出しサイトに戻るようにしますLABEL1。2 番目のPERFORM文は の末尾に return を設定しますLABEL4が、 の継続アドレスは変更せずLABEL3、デフォルトの継続であると想定します。したがって、内部呼び出しが の末尾に到達するとLABEL3、外部の文に戻りPERFORM、プログラムは「1 2 3」のみを出力して停止します。一方、オープンソースの TinyCOBOL コンパイラなどの一部の COBOL 実装では、2 つの文PERFORMは互いに干渉せず、出力は確かに「1 2 3 4 3」になります。したがって、このような場合の動作は (おそらく) 驚くべきものであるだけでなく、移植性もありません。[153]
この制限の特別な結果は、PERFORM再帰的なコードを記述するために使用できないことです。これを説明するための別の簡単な例(Veerman & Verhoeven 2006 から少し簡略化されています):
1 をPERFORMラベル Aに移動する、STOP RUN . LABEL . DISPLAY A、IF A < 3、ADD 1 TO A PERFORMラベルEND-IF、DISPLAY 'END' .
出力は「1 2 3 END END END」であると予想されるかもしれませんし、実際に一部の COBOL コンパイラはそれを生成します。しかし、IBM COBOL などの他のコンパイラは、「1 2 3 END END END END ...」などと出力し、無限ループで「END」を何度も出力するコードを生成します。バックアップ継続アドレスを格納するスペースが限られているため、バックアップは再帰呼び出しの過程で上書きされ、復元できるのは へのジャンプだけですDISPLAY 'END'。[153]
声明
COBOL 2014には47の文(動詞とも呼ばれる)があり、[154]これらは制御フロー、I/O、データ操作、レポートライターの4つの大まかなカテゴリに分類できます。レポートライターの文については、レポートライターのセクションで説明します。
制御フロー
COBOL の条件文はIFと ですEVALUATE。は、複数の値と条件を評価する機能が追加されたswitch のような文EVALUATEです。 これを使用して、決定表を実装できます。 たとえば、次の文を使用してCNC 旋盤を制御できます。
評価TRUEかつ希望速度かつ現在の速度かつ蓋が閉じている場合かつ最小速度から最大速度かつ 希望速度未満実行マシンのスピードアップかつ蓋が閉じている場合かつ最小速度から最大速度かつ希望速度以上実行マシンのスローダウンかつ蓋が開いている場合 かつ任意かつゼロ以外実行緊急停止かつその他の場合続行 終了評価
文は、条件が真になるまで(他の言語でより一般的な、真である間ではPERFORMなく)実行されるループを定義するために使用されます。また、プロシージャまたはプロシージャの範囲を呼び出すためにも使用されます(詳細については、プロシージャのセクションを参照してください)。 およびは、それぞれサブプログラムとメソッドを呼び出します。サブプログラム/メソッドの名前は、リテラルまたはデータ項目である可能性のある文字列に含まれます。[155]パラメータは、参照、コンテンツ(コピーが参照によって渡される場合)または値(プロトタイプが使用可能な場合のみ)によって渡すことができます。 [156] は、サブプログラムをメモリからアンロードします。は、プログラムを指定されたプロシージャにジャンプさせます。
CALLINVOKE
CANCELGO TO
文はreturn文GOBACKであり、文はプログラムを停止します。文には6つの異なる形式があります。return文、 break文、continue文、終了マーカーとして使用したり、手順を終了するために使用できます。[157]STOPEXIT
例外は文によって発生し、手続き部の 部分に定義されたRAISEハンドラまたは宣言によってキャッチされます。宣言とは、処理するエラーを指定する文で始まるセクションです。例外は名前またはオブジェクトです。は、宣言内で使用され、例外が発生した文の後の文、または の外部の手続きにジャンプします。他の言語とは異なり、キャッチされない例外によってプログラムが終了されることはなく、プログラムは影響を受けずに続行できます。
DECLARATIVESUSERESUMEDECLARATIVES
入出力
ファイル I/O は、自己記述型のOPEN、CLOSE、READ、WRITEステートメントに加えて、REWRITEレコードを更新する 、START特定のキーを持つレコードを検索してアクセスする後続のレコードを選択する 、および最後にアクセスしたレコードのロックをUNLOCK解除するの 3 つのステートメントによって処理されます。
ACCEPTユーザーインタラクションはおよびを使用して行われますDISPLAY。
データ操作
次の動詞はデータを操作します。
INITIALIZEは、データ項目をデフォルト値に設定します。MOVEはデータ項目に値を割り当てます。MOVE CORRESPONDING は対応する同名のフィールドを割り当てます。SETには15のフォーマットがあり、インデックスの変更、オブジェクト参照の割り当て、テーブル容量の変更などの機能があります。[158]ADD、、、、およびは算術演算(数式の結果を変数に割り当てる)をSUBTRACT処理します。MULTIPLYDIVIDECOMPUTECOMPUTEALLOCATEおよびは動的メモリFREEを処理します。VALIDATEデータ部門のアイテムの説明に指定されたとおりにデータを検証し、配布します。STRINGおよび はUNSTRING、それぞれ文字列を連結および分割します。INSPECT文字列内の指定された部分文字列のインスタンスを集計または置換します。SEARCH条件を満たす最初のエントリをテーブルで検索します。
ファイルとテーブルは を使用してソートされSORT、MERGE動詞はファイルをマージしてソートします。RELEASE動詞はソートするレコードを提供し、RETURNソートされたレコードを順番に取得します。
スコープ終了
IFや などの一部のステートメントREADには、それ自体に ステートメントが含まれる場合があります。このようなステートメントは、ピリオド (暗黙的な終了) によって終了され、含まれているすべての終了していないステートメントが終了されます。または、スコープ ターミネータによって終了され、最も近い一致するオープン ステートメントが終了します。
*> 終了ピリオド ("暗黙の終了")
IF invalid-record IF no-more-records NEXT SENTENCE ELSE READ record-file AT END SET no-more-records TO TRUE .
*> スコープ終了子 (「明示的な終了」)
IF invalid-record IF no-more-records CONTINUE ELSE READ record-file AT END SET no-more-records TO TRUE END-READ END-IF END-IF
ピリオドで終了するネストされた文は、バグの原因になりやすい。[159] [160]たとえば、次のコードを調べてみましょう。
x の場合はyを表示します。zを表示します。
ここでの意図は、条件が真の場合にyと を表示することです。ただし、の後の誤ったピリオドによって文が終了しているため、の値が何であっても が表示されます。
zxzxIFDISPLAY y
もう 1 つのバグは、2 つのステートメントが に関連付けられる場合の、ぶら下がり else 問題の結果です。
IFELSE
x の場合y の場合a を表示し、それ以外の場合はb を表示します。
上記のコード例では、 は文 ではなく 文 ELSEに関連付けられている ため 、バグが発生しています。明示的なスコープターミネータが導入される前は、これを防ぐには、 内側の の後に配置する必要がありました。[160]IF yIF xELSE NEXT SENTENCEIF
自己修正コード
オリジナルの(1959年)COBOL仕様では 、多くのコンパイラが自己変更コードを 生成した悪名高い文をサポートしていました。および はプロシージャラベルであり、 そのような文の後に実行される プロシージャ内の単一の文は、代わりにを意味します 。多くのコンパイラはまだそれをサポートしていますが、[161] COBOL 1985標準では廃止とみなされ、2002年に削除されました。 [162]ALTER X TO PROCEED TO YXYGO TOXALTERGO TO Y
このALTER文は「文脈の局所性」を損ない、プログラム全体のロジックを理解しにくくするため、あまり評価されていませんでした。[163]教科書の著者であるダニエル・D・マクラッケンは1976年に、「プログラムを見たこともない人が、プログラムが失敗したために時間的に厳しいプレッシャーを感じながら、できるだけ早くプログラムに慣れなければならないとき、段落の中にGO TO文が1つだけあるのを見ると、プログラム全体の未知の場所に未知の数のALTER文が存在することを示し、どんなに勇敢なプログラマでも恐怖を感じます。」と書いています。[163]
こんにちは世界
COBOL の「Hello, World!」プログラム:
識別部.プログラム ID . hello-world .手続き部. 「Hello, world!」と表示.
1978年に『プログラミング言語C』の今では有名な「Hello, World!」プログラム例が初めて出版されたとき、同様のメインフレームCOBOLプログラムサンプルがJCLを通じて提出されたと思われます。おそらくパンチカードリーダーと80列のパンチカードが使われていたのでしょう。以下のリストは、DATA DIVISIONが空で、LinuxとMVS 3.8Jを実行するSystem/370 Herculesエミュレーターを使用してテストされました。2015年7月に書かれたJCLは、Jay MoseleyがホストするHerculesチュートリアルとサンプルから派生したものです。[164]当時のCOBOLプログラミングに合わせて、HELLO, WORLDはすべて大文字で表示されています。
// COBUCLG JOB ( 001 )、'COBOL BASE TEST' 、00010000 // CLASS = A 、MSGCLASS = A 、MSGLEVEL = ( 1 、1 ) 00020000 // BASETEST EXEC COBUCLG 00030000 // COB . SYSIN DD * 00040000 00000 * BASE COBOL INSTALLの検証00050000 01000 IDENTIFICATION DIVISION . 00060000 01100 PROGRAM-ID . 'HELLO' . 00070000 02000 ENVIRONMENT DIVISION . 00080000 02100 CONFIGURATION SECTION . 00090000 02110ソースコンピュータ。GNULINUX。00100000 02120オブジェクト コンピュータ。HERCULES。00110000 02200特殊名。00120000 02210コンソールはCONSLです。00130000 03000データ部。00140000 04000手続き部。00150000 04100 00 -メイン。00160000 04110 CONSL時に' HELLO , WORLD 'を表示し ます 。00170000 04900停止、実行。00180000 // LKED . SYSLIB DD DSNAME = SYS1 . COBLIB 、DISP = SHR 00190000 // DD DSNAME = SYS1 . LINKLIB 、DISP = SHR 00200000 // GO . SYSPRINT DD SYSOUT = A 00210000 // 00220000
JCL を送信すると、MVS コンソールに次のように表示されました。
19.52.48 ジョブ 3 $HASP100 COBUCLG ON READER1 COBOL ベース テスト
19.52.48 ジョブ 3 IEF677I ジョブ COBUCLG の警告メッセージが発行されました
19.52.48 ジョブ 3 $HASP373 COBUCLG 開始 - INIT 1 - クラス A - SYS BSP1
19.52.48 ジョブ 3 IEC130I SYSPUNCH DD ステートメントがありません
19.52.48 ジョブ 3 IEC130I SYSLIB DD ステートメントがありません
19.52.48 ジョブ 3 IEC130I SYSPUNCH DD ステートメントがありません
19.52.48 ジョブ 3 IEFACTRT - ステップ名 プロセスステップ プログラム戻りコード
19.52.48 ジョブ 3 COBUCLG ベーステスト COB IKFCBL00 RC= 0000
19.52.48 ジョブ 3 COBUCLG ベーステスト LKED IEWL RC= 0000
19.52.48 ジョブ 3 +HELLO, WORLD
19.52.48 ジョブ 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000
19.52.48 ジョブ 3 $HASP395 COBUCLG 終了
上記のコンソール リストの 10 行目は効果を上げるために強調表示されていますが、強調表示は実際のコンソール出力の一部ではありません。
関連するコンパイラ リストでは、14 行の COBOL からの 1 行の出力に対して、4 ページを超える技術詳細とジョブ実行情報が生成されました。
受付
構造の欠如
1970年代には、構造化プログラミングパラダイムの採用がますます広まっていった。著名なコンピュータ科学者であるエドガー・ダイクストラは、 1975年に出版されたCommunications of the ACMの編集者に「人を傷つけるかもしれない真実をいかに伝えるか」と題する手紙を書いた。その中で彼はCOBOLや他のいくつかの現代の言語を批判し、「COBOLの使用は精神を麻痺させる」と述べた。[165]
コンピュータ科学者のハワード・E・トンプキンスは、ダイクストラの発言に対する反対意見を発表し、非構造化COBOLは「構造化COBOLを十分に学んだことのないプログラマーによって書かれる」傾向があり、問題は主にトレーニングの問題であると主張した。[166]
スパゲッティコードの原因の1つは文でしたGO TO。GO TOしかし、COBOLコードから文を削除しようとすると、プログラムが複雑になり、コードの品質が低下しました。[167] GO TO文は主に文と手続きに置き換えられPERFORM、モジュールプログラミングが促進され[167]、強力なループ機能に簡単にアクセスできるようになりました。ただし、文PERFORMは手続きでしか使用できなかったため、ループ本体は使用される場所に配置されず、プログラムが理解しにくくなりました。[168]
COBOLプログラムはモノリシックでモジュール化されていないことで悪名高かった。[169] COBOLコードはプロシージャを通じてのみモジュール化できたが、これは大規模システムには不十分であることが判明した。データへのアクセスを制限することは不可能であり、プロシージャはあらゆるデータ項目にアクセスして変更することができた。さらに、プロシージャにパラメータを渡す方法がなかったが、ジャン・サメットはこれを委員会の最大の失敗とみなした。[170]
もう一つの複雑さは、特定の手順のシーケンスを実行する能力から生じましたPERFORM THRU。これは、制御が任意の手順にジャンプしたり、任意の手順から戻ったりできることを意味し、複雑な制御フローを作成し、プログラマーが単一エントリ単一終了ルールを破ることを可能にしました。[171]
COBOLがより多くの機能を採用するにつれて、この状況は改善されました。COBOL-74ではサブプログラムが追加され、プログラマーはプログラムの各部分がアクセスできるデータを制御できるようになりました。その後、COBOL-85ではネストされたサブプログラムが追加され、プログラマーはサブプログラムを非表示にできるようになりました。[172] 2002年には、オブジェクト指向プログラミング、ユーザー定義関数、ユーザー定義データ型が組み込まれ、データとコードに対するさらなる制御が可能になりました。
しかしながら、重要なレガシーCOBOLソフトウェアの多くは非構造化コードを使用しており、実質的に保守不可能になっています。未知の場所から未知の方法で使用される可能性があるため、コードの単純な部分を変更することさえリスクが高く、コストがかかる可能性があります。[173]
互換性の問題
COBOLは、移植性の高い「共通」言語となることを目指していました。しかし、2001年までに約300の方言が作成されました。[174]方言の1つのソースは標準そのものでした。1974年の標準は、1つの必須の核と、それぞれ2つまたは3つのレベルのサポートを含む11の機能モジュールで構成されていました。これにより、104,976の可能なバリアントが許可されました。[175]
COBOL-85は以前のバージョンと完全に互換性がなく、その開発は議論を呼んだ。トラベラーズ保険のCIOであるジョセフ・T・ブロフィは、新しい標準を実装するための多大な再プログラミングコストをCOBOLユーザーに知らせる取り組みの先頭に立った。[176]その結果、ANSI COBOL委員会は一般の人々から2,200通を超える手紙を受け取り、そのほとんどは否定的で、委員会に変更を加えるよう要求した。一方、COBOL-85への移行は将来の生産性を向上させると考えられ、したがって移行コストは正当化された。[177]
冗長な構文
コードを書いている人が、恐竜のようなメインフレームで退屈で無意味な作業を行うために使用する、脆弱で冗長で曖昧な言語。[...] その名前自体、嫌悪感や恐怖の儀式的な表現なしには発せられない。
専門用語ファイル4.4.8. [178]
COBOLの構文は冗長性が高いと批判されることが多い。支持者によると、これはコードを自己文書化してプログラムのメンテナンスを容易にすることが目的だったという。[179] COBOLはまた、プログラマーが簡単に学習して使用できるように設計されており、[180]管理者などの非技術者にも読みやすいものであった。[181] [182] [183] [184]
読みやすさへの欲求は、名詞、動詞、節、文、節、および区分などの英語のような構文と構造要素の使用につながりました。しかし、1984年までに、COBOLプログラムの保守者は「理解できない」コードに対処するのに苦労しており[183] 、COBOL-85の主な変更は保守を容易にするためのものでした。[93]
短期委員会メンバーの Jean Sammet は、「プロのプログラマーのニーズに応えるための試みはほとんど行われておらず、実際、プログラミングに主な関心を持つ人々は COBOL に非常に不満を抱いている傾向がある」と指摘し、その原因を COBOL の冗長な構文にあるとしている。[185]
コンピュータサイエンスコミュニティからの孤立
COBOL コミュニティは、常にコンピュータ サイエンス コミュニティから孤立していました。COBOL の設計には、学術的なコンピュータ サイエンティストは参加していません。委員会のメンバーは、すべて商業界または政府機関から来ていました。当時のコンピュータ サイエンティストは、COBOL 開発が取り組んだ商用ファイル処理の問題よりも、数値解析、物理学、システム プログラミングなどの分野に興味を持っていました。[186] Jean Sammet は、COBOL が不人気だったのは、その洗練されていないことによる当初の「スノッブな反応」、設計プロセスに参加した影響力のあるコンピュータ サイエンティストの不足、およびビジネス データ処理に対する軽蔑によるものだとしています。 [187] COBOL 仕様では、新しいBackus-Naur 形式ではなく、独自の「表記法」、つまりメタ言語を使用して構文を定義していましたが、この形式については委員会は知りませんでした。このため、「厳しい」批判が起こりました。[188] [189] [70]
学術界では COBOL は冗長で扱いにくく、洗練されていないとみなされ、無視されがちですが、おそらく COBOL プログラムとプログラマーは、FORTRAN、ALGOL、PL/I を合わせた数よりも多く存在します。ほとんどの場合、COBOL の指導は、直接的な職業上の目標を持つ学校だけが行っています。
リチャード・コンウェイとデイヴィッド・グリース、1973年[190]
その後、COBOL はそれを扱う資料の不足に悩まされ、入門書が登場したのは 1963 年になってからでした (リチャード・D・アーウィンが 1966 年に COBOL の大学教科書を出版しました)。[191] 1985 年までに、議会図書館には COBOL の 2 倍の FORTRAN の本、4 倍の BASIC の本が所蔵されていました。[129]大学教授は、COBOL は「職業学校」の性質を持つと言われていましたが、それよりも現代的で最先端の言語と技術を教えていました。[192] CODASYL COBOL 委員会の委員長であるドナルド・ネルソンは、1984 年に「学者は COBOL を嫌っている」と述べ、コンピュータ サイエンスの卒業生は「『COBOL を嫌う』ことを叩き込まれている」と述べました。[193]
1980年代半ばまでに、ビジネス界ではFORTRANやアセンブラなどの他の言語のユーザーからCOBOLに対してかなりの軽蔑の念が生まれ、COBOLはそれほど難しくない問題にしか使用できないと思われていました。[194]
2003年、COBOLは米国の情報システムカリキュラムの80%に採用されており、これはC++やJavaと同率である。[195] 10年後、マイクロフォーカス社による世論調査では、大学の教員の20%がCOBOLは時代遅れか死んだと考えており、55%が学生もCOBOLは時代遅れか死んだと考えていることがわかった。また、同じ世論調査では、教員の60%がCOBOLプログラミングを教えるべきだと考えているにもかかわらず、カリキュラムにCOBOLプログラミングを含めている教員はわずか25%であることもわかった。[196]
設計プロセスに関する懸念
標準委員会の能力については疑問が提起されている。短期委員のハワード・ブロムバーグは、開発プロセスに対する「管理がほとんどなく」、それは「人員の不連続性と才能の不足に悩まされていた」と述べた。[81]ジーン・サメットとジェローム・ガーファンクルも、標準委員会のメンバーの変更と客観的証拠のせいで、標準の1つの改訂版で導入された変更が次の改訂版で元に戻されることを指摘した。[197]
COBOL標準は繰り返し遅延に見舞われてきた。COBOL-85は期待より5年遅れて登場し、[198] COBOL 2002は5年遅れ、[3] COBOL 2014は6年遅れた。[101] [199]遅延に対処するため、標準委員会は、次の標準改訂を待つよりも早く機能を追加できるオプションの補遺の作成を許可した。しかし、一部の委員会メンバーは、実装間の非互換性や標準の頻繁な変更について懸念を表明した。[200]
他の言語への影響
COBOLのデータ構造はその後のプログラミング言語に影響を与えた。そのレコードとファイル構造はPL/IとPascalに影響を与え、句はPascalのバリアントレコードの前身となった。明示的なファイル構造の定義はデータベース管理システムREDEFINESの開発に先行し、集約データはFortranの配列よりも大きな進歩であった。[129]
PICTUREデータ宣言は、わずかな変更を加えて PL/I に組み込まれました。
COBOLのCOPY機能は「原始的」であると考えられていたものの、[201] includeディレクティブの開発に影響を与えました。[129]
移植性と標準化に重点を置いたことで、COBOLで書かれたプログラムは移植可能となり、さまざまなハードウェアプラットフォームやオペレーティングシステムへの言語の普及が促進されました。[202]さらに、明確に定義された部門構造により、環境部門への外部参照の定義が制限され、特にプラットフォームの変更が簡素化されます。[203]
参照
- プログラミング言語のアルファベット順リスト
- BLIS/COBOL
- コダシル
- プログラミング言語の比較
- プログラミング言語の世代別リスト § COBOLベース
- コンパイラの一覧 § COBOL コンパイラ
注記
- ^ 特にCOBOL 2002のオブジェクト指向機能に影響を与えた。[3] [4] [5]
- ^ 墓石は現在コンピュータ歴史博物館に所蔵されている。[64]
- ^ ab 1997年の ガートナーグループの調査は、有名な「2000億行のCOBOL」という引用文とともにあちこちで参照されているが、実際のレポートは見つけるのが難しいことに注意する必要がある。 [204]さらに、「ガートナーがこれらの数字に関与したのは、Y2Kバグの修正に1行あたり1ドル、合計3000億ドルかかると予測した1995年の調査[206]のみ」であると推測する人もいる[205]。これがレポートの誤解を引き起こした。
- ^ ベンダー固有の拡張により、多くの実装ではさらに多くのキーワードが認識されます。1つの実装では1,100を超えるキーワードが認識されます。[126]
参考文献
引用
- ^ ab Sammet, Jean E. (2000 年 3 月). 「Cobol の真のクリエーター」. IEEE Software . 17 (2): 30–32. doi :10.1109/52.841602. ISSN 1937-4194.
短期委員会は 1959 年 6 月から熱心に作業しましたが、かなり大規模な委員会でプログラミング言語の作成に取り組むには大きな困難がありました。11 月に、短期委員会の委員長は、検討のために仕様を開発する 6 名を任命しました。William Selden と Gertrude Tierney (IBM)、Howard Bromberg と Norman Discount (RCA)、Vernon Reeves と Jean E. Sammet (Sylvania Electric Products) です。私たちは 1959 年 11 月に丸 2 週間 (24 時間体制のセッションを含む) 作業し、提案された仕様を短期委員会全体に送り、ほぼすべての仕様が受け入れられました。同じ 6 名による編集を経て、12 月に最終報告書として仕様を執行委員会に提出し、1960 年 1 月に承認されました。さらに編集が進んだ後、政府印刷局は Cobol 60 を発行しました。[...] [Grace Hopper] は、直接の委員会メンバーであるスタッフに一般的な指導を行った以外は、その作業には参加しませんでした。したがって、彼女の間接的な影響は非常に重要でしたが、残念ながら、「Grace Hopper が Cobol を開発した」、「Grace Hopper は Cobol の共同開発者であった」、「Grace Hopper は Cobol の生みの親である」という頻繁に繰り返される発言は正しくありません。
- ^ 技術標準、COBOL 言語(PDF)。X/Open Company Ltd.、英国、1991 年 12 月。ISBN 1-872630-09-X。
- ^ abc Saade, Henry; Wallace, Ann (1995 年 10 月). 「COBOL '97: 現状報告」. Dr. Dobb's Journal . 2014 年 4 月 22 日時点のオリジナルよりアーカイブ。2014 年4 月 21 日閲覧。
- ^ ab Arranga, Edmund C.; Coyle, Frank P. (1998 年 2 月)。オブジェクト指向 COBOL。ケンブリッジ大学出版局。p. 15。ISBN 978-0132611404
オブジェクト指向 COBOL のスタイルは、Smalltalk と C++ の影響を反映しています
。 - ^ Arranga, Edmund C.; Coyle, Frank P. (1997 年 3 月). 「Cobol: 知覚と現実」.コンピュータ. 30 (3): 127. doi :10.1109/2.573683. ISSN 0018-9162.
- ^ 今城哲司、他 (2000 年 9 月)。COBOLスクリプト: ビジネス指向のスクリプト言語。エンタープライズ分散オブジェクト コンピューティング カンファレンス。幕張、日本: IEEE。doi : 10.1109 / EDOC.2000.882363。ISBN 0769508650。
- ^ Ho, Wing Hong (7 May 2007). "Introduction to EGL" (PDF). IBM Software Group. Archived from the original (PDF) on 13 January 2019. Retrieved 12 January 2019.
- ^ Radin, George (1978). Wexelblat, Richard L. (ed.). The early history and characteristics of PL/I. History of Programming Languages. Academic Press (published 1981). p. 572. doi:10.1145/800025.1198410. ISBN 0127450408.
- ^ "What is PL/B - The Programming Language for Business?". sysmaker.com. Infopro, Inc. Retrieved 22 April 2022.
... conversion to an alternate, extended COBOL or to ANSI COBOL is very difficult, if at all possible
- ^ a b c Mitchell, Robert L. (4 October 2006). "Cobol: Not Dead Yet". Computerworld. Retrieved 27 April 2014.
- ^ Mitchell, Robert L. (14 March 2012). "Brain drain: Where Cobol systems go from here". Computerworld. Retrieved 9 February 2015.
- ^ Ensmenger, Nathan L. (2009). The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise. MIT Press. p. 100. ISBN 978-0262050937. LCCN 2009052638.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023.
- ^ Ferguson, Andrew. "A History of Computer Programming Languages". cs.brown.edu. Retrieved 12 March 2018.
- ^ "Mainframe COBOL Programming".
- ^ Groenfeldt, Tom. "Covid Accelerates Banks' Mainframe Migration to Cloud". Forbes.
- ^ Beyer 2009, p. 282.
- ^ Gürer, Denise (1 June 2002). "Pioneering Women in Computer Science". SIGCSE Bull. 34 (2): 175–180. doi:10.1145/543812.543853. ISSN 0097-8418. S2CID 2577644.
- ^ Beyer 2009, pp. 281–282.
- ^ Sammet 1978a, p. 200.
- ^ Flahive, Paul (24 May 2019). "How COBOL Still Powers The Global Economy At 60 Years Old". Texas Public Radio. Archived from the original on 24 May 2019. Retrieved 19 July 2019.
(Grace Hopper) Nicknamed Grandma Cobol, the code was based on some of her earlier work. She said — after hearing the rumors — one of her collaborators went out and bought a granite tombstone. "He had the word COBOL cut in the front of it. Then he shipped it express collect to Mr. Phillips in the pentagon." The prank on Charles Phillips, a leader for the project at the defense department, got the attention of the powers that be and was a turning point she said. COBOL would go on to become the most widely used and longest lasting computer languages in history.
- ^ Beyer 2009, p. 283.
- ^ Beyer 2009, p. 284.
- ^ "Early Meetings of the Conference on Data Systems Languages". IEEE Annals of the History of Computing. 7 (4): 316–325. 1985. doi:10.1109/MAHC.1985.10047. S2CID 35625728.
- ^ a b c d e Sammet 2004, p. 104.
- ^ Beyer 2009, p. 286.
- ^ a b Conner 1984, p. ID/9.
- ^ Sammet 1978a, p. 201.
- ^ a b c d Bemer 1971, p. 132.
- ^ Beyer 2009, p. 288.
- ^ Sammet 1978a, p. 203.
- ^ CODASYL 1969, § I.2.1.1.
- ^ Sammet 1978a, p. 204.
- ^ CODASYL 1969, § I.1.2.
- ^ Beyer 2009, p. 290.
- ^ Sammet, Jean (1978). "The Early History of COBOL". ACM SIGPLAN Notices. 13 (8): 121–161. doi:10.1145/960118.808378. S2CID 10743643.
- ^ Sammet 1978a, p. 217.
- ^ Adams, Vicki Porter (5 October 1981). "Captain Grace M. Hopper: the Mother of COBOL". InfoWorld. Vol. 3, no. 20. p. 33. ISSN 0199-6649.
- ^ Betts, Mitch (6 January 1992). "Grace Hopper, mother of Cobol, dies". Computerworld. 26 (1): 14.
- ^ Lohr, Steve (2008). Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, and Iconoclasts—The Programmers Who Created the Software Revolution. Basic Books. p. 52. ISBN 978-0786730766.
- ^ "Pioneering software engineer and Cobol co-designer". The Irish Times.
- ^ a b Beyer 2009, p. 292.
- ^ Bemer 1971, p. 131.
- ^ Beyer 2009, p. 296.
- ^ Sammet 1978a, p. 221.
- ^ Beyer 2009, p. 291.
- ^ "Oral History of Captain Grace Hopper" (PDF). Computer History Museum. December 1980. p. 37. Archived from the original (PDF) on 25 December 2017. Retrieved 28 June 2014.
- ^ Sammet 1978a, p. 218.
- ^ Marcotty 1978a, p. 268.
- ^ Sammet 1978a, pp. 205–206.
- ^ a b Sammet 1978a, Figure 8.
- ^ Sammet 1978a, pp. 230–231.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001, p. 846.
- ^ Sammet 1978a, p. 220.
- ^ Sammet 1978a, p. 228.
- ^ Sammet 1978a, p. 210.
- ^ Bemer 1971, p. 132: We can't find a single individual who admits coining the acronym "COBOL".
- ^ Sammet 1978a, p. 210: The next day, the name COBOL was finally agreed to as an acronym for COmmon Business Oriented Language. Unfortunately, my notes do not show who made that suggestion.
- ^ Sullivan, Patricia (25 June 2004). "Computer Pioneer Bob Bemer, 84". The Washington Post. p. B06. Retrieved 28 June 2014.
- ^ "THE COBOL REPORT - Interview with Bob Bemer - the Father of COBOL". Archived from the original on 2 April 2018.
- ^ "THE COBOL REPORT - Interview with Bob Bemer - the Father of COBOL". Archived from the original on 23 December 2003.
- ^ Beyer 2009, p. 293.
- ^ Beyer 2009, p. 294.
- ^ COBOL Tombstone. Computer History Museum. 1960. Retrieved 29 June 2014.
- ^ "The Story of the COBOL Tombstone" (PDF). The Computer Museum Report. 13: 8–9. Summer 1985. Archived (PDF) from the original on 3 April 2014. Retrieved 29 June 2014.
- ^ Bemer 1971, p. 130.
- ^ Beyer 2009, p. 289.
- ^ CODASYL 1969, § I.1.1.
- ^ Brown 1976, p. 47.
- ^ a b c Bemer 1971, p. 133.
- ^ a b Beyer 2009, p. 297.
- ^ Williams, Kathleen Broome (10 November 2012). Grace Hopper: Admiral of the Cyber Sea. US Naval Institute Press. ISBN 978-1612512655. OCLC 818867202.
- ^ Compaq Computer Corporation: Compaq COBOL Reference Manual, Order Number: AA–Q2G0F–TK October 2000, Page xviii; Fujitsu Corporation: Net Cobol Language Reference, Version 15, January 2009; IBM Corporation: Enterprise COBOL for z/OS Language Reference, Version 4 Release 1, SC23-8528-00, December 2007
- ^ Garfunkel, Jerome (11 November 1984). "In defense of Cobol". Computerworld. 18 (24): ID/19.
- ^ Pratt, Terrence W. (1975). Programming Languages: Design and Implementation. Englewood Cliffs, New Jersey: Prentice Hall. pp. 361–362, 381–382. ISBN 0-13-730432-3.
- ^ a b Bemer 1971, p. 134.
- ^ Brown 1976, p. 48.
- ^ CODASYL 1969, § I.2.2.4.
- ^ CODASYL 1969, § I.2.3.
- ^ a b c d Follet, Robert H.; Sammet, Jean E. (2003). "Programming language standards". In Ralston, Anthony; Reilly, Edwin D.; Hemmendinger, David (eds.). Encyclopedia of Computer Science (4th ed.). Wiley. p. 1467. ISBN 978-0470864128.
- ^ a b Beyer 2009, p. 301.
- ^ a b Brown 1976, p. 49.
- ^ Brown 1976, p. 52.
- ^ Taylor, Alan (2 August 1972). "Few Realise Wasted Resources of Local DP Schools". Computerworld. 6 (31): 11.
- ^ Triance, J. M. (1974). Programming in COBOL: A Course of Twelve Television Lectures. Manchester University Press. p. 87. ISBN 978-0719005923.
- ^ Klein 2010, p. 16.
- ^ Baird, George N.; Oliver, Paul (May 1977). "1974 Standard (X3.23–1974)". Programming Language Standards—Who Needs Them? (PDF) (Report). Department of the Navy. pp. 19–21. Archived (PDF) from the original on 7 January 2014. Retrieved 7 January 2014.
- ^ Culleton, John R. Jr. (23 July 1975). "'Spotty' Availability A Problem..." Computerworld. 9 (30): 17.
- ^ Simmons, Williams B. (18 June 1975). "Does Cobol's Report Writer Really Miss the Mark?". Computerworld. 9 (25): 20.
- ^ Shoor, Rita (26 January 1981). "User Threatens Suit Over Ansi Cobol-80". Computerworld. 15 (4): 1, 8.
- ^ Shoor, Rita (26 October 1981). "DPMA Takes Stand Against Cobol Draft". Computerworld. 15 (43): 1–2.
- ^ abc Gallant, John (1985 年 9 月 16 日). 「改訂版 COBOL 標準は 1985 年後半に完成予定」. Computerworld . 19 (37): 1, 8.
- ^ ab 「 専門家が Cobol 85 標準について語る」。Computerworld . 19 (37): 41, 48. 1985 年 9 月 16 日。
- ^ Paul, Lois (1982 年 3 月 15 日)。「Cobol-80 に対する反応 は圧倒的に否定的」。Computerworld 16 ( 11): 1, 5。
- ^ Paul, Lois (1983 年 4 月 25 日)。「調査では、Cobol-8X への切り替えに問題 はほとんどないと判明」。Computerworld。17 ( 17 ): 1、6。
- ^ Gillin, Paul (1984 年 11 月 19 日). 「DEC ユーザーは Cobol-80 の実装で有利なスタートを切る」. Computerworld . 18 (47): 1, 6.
- ^ ClearPath Enterprise Servers (2015 年 4 月)。「COBOL ANSI- 85プログラミング リファレンス マニュアル」(PDF)。public.support.unisys.com。Unisys。2022年4 月 29日閲覧。
- ^ ガーファンクル 1987年、150ページ。
- ^ Roy, MK; Dastidar, D. Ghost (1989 年 6 月 1 日)。「COBOL-85 の機能」。COBOL プログラミング: 問題と解決策 (第 2 版)。McGraw-Hill Education。pp. 438–451。ISBN 978-0074603185。
- ^ Robinson, Brian (2009 年 7 月 9 日)。「Cobol は、時代遅れにもかかわらず、機関で古くから使用されている」。FCW。Public Sector Media Group。2014 年 4 月 27 日時点のオリジナルよりアーカイブ。2014 年4 月 26 日閲覧。
- ^ ab 「COBOL 標準」。Micro Focus。2004 年 3 月 31 日時点のオリジナルよりアーカイブ。2014 年9 月 2 日閲覧。
- ^ 「NetCOBOL for .Net」。netcobol.com。GTSoftware。2013年。2014年7月8日時点のオリジナルよりアーカイブ。 2014年1月29日閲覧。
- ^ 「Codasyl Cobol の機能一覧」。Computerworld . 18 ( 37): ID/28. 1984 年 9 月 10 日。2014年6 月 8 日閲覧。
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001、付録F。
- ^ クライン 2010、21ページ。
- ^ ab "JTC1/SC22/WG4 – COBOL". ISO. 2010年6月30日. 2014年2月14日時点のオリジナルよりアーカイブ。 2014年4月27日閲覧。
- ^ Billman, John; Klink, Huib (2008 年 2 月 27 日). 「COBOL 標準化の将来に関する考察」(PDF)。2009 年 7 月 11 日時点のオリジナル(PDF)からアーカイブ。2014 年8 月 14 日に閲覧。
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, Annex E.
- ^ Schricker, Don (2 December 1998). "J4: COBOL Standardization". Micro Focus. Archived from the original on 24 February 1999. Retrieved 12 July 2014.
- ^ a b c ISO/IEC JTC 1/SC 22/WG 4 2023, § E.3.1.
- ^ a b c d e ISO/IEC JTC 1/SC 22/WG 4 2023, § E.3.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023, § 12.4.4.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023, § 8.7.2.
- ^ Kizior, Ronald J.; Carr, Donald; Halpern, Paul. "Does COBOL Have a Future?" (PDF). The Proceedings of the Information Systems Education Conference 2000. 17 (126). Archived from the original (PDF) on 17 August 2016. Retrieved 30 September 2012.
- ^ White, Doug (12 July 1998). "Frequently Asked Questions (FAQ) About the Y2K Problem". homepages.wmich.edu. Archived from the original on 7 November 2021. Retrieved 29 April 2022.
Thus, the main problem of Y2K is the problem of incorrect results when date mathematics are conducted.
- ^ Kappelman, Leon A. (2000). "Some strategic Y2K blessings". IEEE Software. 17 (2): 42–46. doi:10.1109/52.841605.
- ^ Carr & Kizior 2003, p. 16.
- ^ Carr & Kizior 2003, p. 10.
- ^ "Cobol brain drain: Survey results". Computerworld. 14 March 2012. Retrieved 27 April 2014.
- ^ Powner, David A. (25 May 2016). "Federal Agencies Need to Address Aging Legacy Systems" (PDF). Government Accountability Office. p. 18. Archived from the original (PDF) on 15 June 2016. Retrieved 19 July 2019.
Several agencies, such as the Department of Agriculture (USDA), DHS, HHS, Justice, Treasury, and VA, reported using Common Business Oriented Language (COBOL)—a programming language developed in the late 1950s and early 1960s—to program their legacy systems. It is widely known that agencies need to move to more modern, maintainable languages, as appropriate and feasible.
- ^ "COBOL blues". Reuters. Retrieved 8 April 2020.
- ^ Teplitzky, Phil (25 October 2019). "Closing the COBOL Programming Skills Gap". IBM Systems Magazine, IBM Z. Archived from the original on 13 April 2020. Retrieved 11 June 2020.
- ^ Lee, Alicia (8 April 2020). "Wanted urgently: People who know a half century-old computer language so states can process unemployment claims". CNN. Retrieved 8 April 2020.
- ^ Long, Heather; Stein, Jeff; Rein, Lisa; Romm, Tony (17 April 2020). "Stimulus checks and other coronavirus relief hindered by dated technology and rocky government rollout". The Washington Post. Retrieved 19 April 2020.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.9.
- ^ "Reserved Words Table". Micro Focus Visual COBOL 2.2 COBOL Language Reference. Micro Focus. Retrieved 3 March 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.1.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.2.
- ^ a b c d Shneiderman 1985, p. 349.
- ^ McCracken 1976, pp. 2, 6–9.
- ^ a b ISO/IEC JTC 1/SC 22/WG 4 2001, § F.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.18.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.18.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, p. 108.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, p. 896.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.2.1.
- ^ "File Organizations". File Handling. Micro Focus. 1998. Archived from the original on 4 March 2016. Retrieved 27 June 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.5.1.2.
- ^ Cutler 2014, Appendix A.
- ^ Hubbell, Thane (1999). Sams Teach Yourself COBOL in 24 hours. SAMS Publishing. p. 40. ISBN 978-0672314537. LCCN 98087215.
- ^ McCracken & Golden 1988, § 19.9.
- ^ Cutler 2014, § 5.8.5.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.5.2.
- ^ a b ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.24.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.35.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 13.18.40.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 13.18.60.3.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, p. 855.
- ^ a b McCracken 1976, p. 338.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.4.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.6.3.
- ^ Field, John; Ramalingam, G. (September 1999). Identifying Procedural Structure in Cobol Programs (PDF). PASTE '99. doi:10.1145/381788.316163. ISBN 1581131372. Archived (PDF) from the original on 24 December 2010.
- ^ a b c Veerman, Niels; Verhoeven, Ernst-Jan (November 2006). "Cobol minefield detection" (PDF). Software: Practice and Experience. 36 (14). doi:10.1002/spe.v36:14. S2CID 18619757. Archived from the original (PDF) on 6 March 2007.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, §§ 14.9.4, 14.9.22.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § D.6.5.2.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 14.9.13.1.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, §14.9.35.1.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, p. 899.
- ^ a b McCracken & Golden 1988, § 8.4.
- ^ Examples of compiler support for
ALTERcan be seen in the following:- Tiffin, Brian (18 September 2013). "September 2013". GNU Cobol. Archived from the original on 5 May 2014. Retrieved 5 January 2014.
- "The ALTER Statement". Micro Focus Visual COBOL 2.2 for Visual Studio 2013 COBOL Language Reference. Micro Focus. Retrieved 5 January 2014.
- "ALTER Statement (Nucleus)" (PDF). COBOL85 Reference Manual. Fujitsu. November 1996. p. 555. Archived from the original (PDF) on 6 January 2014. Retrieved 5 January 2014.
- "ALTER Statement". Enterprise COBOL for z/OS Language Reference. IBM. June 2013. Retrieved 5 January 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001, § F.1.
- ^ a b McCracken 1976, p. 355.
- ^ Moseley, Jay (17 January 2015). "COBOL Compiler from MVT". Retrieved 19 July 2015.
- ^ Dijkstra, Edsger W. (18 June 1975). "How do we tell truths that might hurt?". University of Texas at Austin. EWD498. Archived from the original on 2 May 2017. Retrieved 29 August 2007.
- ^ Tompkins, H. E. (1983). "In defense of teaching structured COBOL as computer science". ACM SIGPLAN Notices. 18 (4): 86–94. doi:10.1145/948176.948186. S2CID 33803213.
- ^ a b Riehle 1992, p. 125.
- ^ Shneiderman 1985, pp. 349–350.
- ^ Coughlan, Michael (16 March 2014). Beginning COBOL for Programmers. Apress. p. 4. ISBN 978-1430262534. Retrieved 13 August 2014.
- ^ Sammet 1978b, p. 258.
- ^ Riehle 1992, p. 126.
- ^ Riehle 1992, p. 127.
- ^ "COBOL and Legacy Code as a Systemic Risk | naked capitalism". 19 July 2016. Retrieved 23 July 2016.
- ^ Lämmel, Ralf; Verhoef, Chris (November–December 2001). "Cracking the 500-language problem" (PDF). IEEE Software. 18 (6): 79. doi:10.1109/52.965809. hdl:1871/9853. Archived from the original (PDF) on 19 August 2014.
- ^ Howkins, T. J.; Harandi, M. T. (April 1979). "Towards more portable COBOL". The Computer Journal. 22 (4): 290. doi:10.1093/comjnl/22.4.290.
- ^ Garfunkel 1987, p. 11.
- ^ Garfunkel 1987, p. 15.
- ^ Raymond, Eric S. (1 October 2004). "COBOL". The Jargon File, version 4.4.8. Archived from the original on 30 August 2014. Retrieved 13 December 2014.
- ^ Brown 1976, p. 53.
- ^ CODASYL 1969, § II.1.1.
- ^ Shneiderman 1985, p. 350.
- ^ Sammet 1961, p. 381.
- ^ a b Conner 1984, p. ID/10.
- ^ Marcotty 1978a, p. 263.
- ^ Conner 1984, p. ID/14.
- ^ Sammet 1961, p. 380.
- ^ Marcotty 1978a, p. 266.
- ^ Sammet 1978b, p. 255.
- ^ Shneiderman 1985, pp. 348–349.
- ^ Conway, Richard; Gries, David (1973). An Introduction to Programming: A Structured Approach using PL/1 and PL/C. Cambridge, Massachusetts: Winthrop Publishers. p. 341. ISBN 0-87626-405-4.
- ^ "COBOL Logic and Programming, third edition 1974". Archived from the original on 5 March 2016. Retrieved 25 February 2016.
- ^ Shneiderman 1985, p. 351.
- ^ "An interview: Cobol defender". Computerworld. 18 (37): ID/29–ID/32. 10 September 1984. Retrieved 8 June 2014.
- ^ Pratt, Terrence W.; Zelkowitz, Marvin V. (1984). Programming Languages: Design and Implementation (2nd ed.). Englewood Cliffs, N.J. : Prentice Hall. ISBN 0136780121.
- ^ Carr & Kizior 2003, p. 13.
- ^ "Academia needs more support to tackle the IT skills gap" (Press release). Micro Focus. 7 March 2013. Retrieved 4 August 2014.
- ^ Sammet, Jean; Garfunkel, Jerome (October 1985). "Summary of Changes in COBOL, 1960–1985". Annals of the History of Computing. 7 (4): 342. doi:10.1109/MAHC.1985.10033. S2CID 17940092.
- ^ Cook, Margaret M. (June 1978). Ghosh, Sakti P.; Liu, Leonard Y. (eds.). Data Base Facility for COBOL 80 (PDF). 1978 National Computer Conference. Anaheim, California: AFIPS Press. pp. 1107–1112. doi:10.1109/AFIPS.1978.63. LCCN 55-44701. Retrieved 2 September 2014.
The earliest date that a new COBOL standard could be developed and approved is the year 1980 [...].
- ^ "Resolutions from WG4 meeting 24 – June 26–28, 2003 Las Vegas, Nevada, USA". 11 July 2003. p. 1. Archived from the original (doc) on 8 March 2016. Retrieved 29 June 2014.
a June 2008 revision of the COBOL standard
- ^ Babcock, Charles (14 July 1986). "Cobol standard add-ons flayed". Computerworld. 20 (28): 1, 12.
- ^ Marcotty 1978b, p. 274.
- ^ This can be seen in:
- "Visual COBOL". IBM PartnerWorld. IBM. 21 August 2013. Archived from the original on 12 July 2014. Retrieved 5 February 2014.
Micro Focus Visual COBOL delivers the next generation of COBOL development and deployment for Linux x86-64, Linux for System z, AIX, HP/UX, Solaris, and Windows.
- "IBM COBOL Compiler Family". IBM. Retrieved 11 September 2024.
- "GnuCOBOL - GNU Project". Retrieved 11 September 2024.
- "Visual COBOL". IBM PartnerWorld. IBM. 21 August 2013. Archived from the original on 12 July 2014. Retrieved 5 February 2014.
- ^ Coughlan, Michael (2002). "Introduction to COBOL". Archived from the original on 5 March 2023.
- ^ "Gartner Group Studies". 1997-2001.state.gov. Year 2000 Program Management Office. 2000. Retrieved 23 April 2022.
- ^ Engelmann, Viktor (8 April 2021). "COBOL Fact-Check". cobsolete.de. COBSOLETE. Retrieved 23 April 2022.
- ^ "What Will the Future Hold". CIO. International Data Group. 15 December 1995 – 1 January 1996. p. 82.
Sources
- Bemer, Bob (1971). "A View of the History of COBOL" (PDF). Honeywell Computer Journal. 5 (3). Archived from the original (PDF) on 22 January 2016. Retrieved 28 June 2014.
- Beyer, Kurt (2009). Grace Hopper and the Invention of the Information Age. MIT Press. ISBN 978-0262013109. LCCN 2008044229.
- Brown, William R. (1 December 1976). "COBOL". In Belzer, Jack; Holzman, Albert G.; Kent, Allen (eds.). Encyclopedia of Computer Science and Technology: Volume 5. CRC Press. ISBN 978-0824722555.
- Carr, Donald E.; Kizior, Ronald J. (31 December 2003). "Continued Relevance of COBOL in Business and Academia: Current Situation and Comparison to the Year 2000 Study" (PDF). Information Systems Education Journal. 1 (52). ISSN 1545-679X. S2CID 62485945. Archived (PDF) from the original on 5 March 2023. Retrieved 4 August 2014.
- CODASYL (July 1969). CODASYL COBOL Journal of Development 1968. National Bureau of Standards. ISSN 0591-0218. LCCN 73601243. OL 14204153M.
- Conner, Richard L. (14 May 1984). "Cobol, your age is showing". Computerworld. 18 (20): ID/7–ID/18. ISSN 0010-4841.
- Cutler, Gary (9 April 2014). GNU COBOL Programmer's Guide (PDF) (3rd ed.). Retrieved 25 February 2014.
- Garfunkel, Jerome (1987). The COBOL 85 Example Book. Wiley. ISBN 978-0471804611.
- ISO/IEC JTC 1/SC 22/WG 4 (4 December 2001). "ISO/IEC IS 1989:2001 – Programming language COBOL". ISO. Archived from the original (ZIP of PDF) on 24 January 2002. Retrieved 2 September 2014. (Link goes to draft N 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31 October 2014). INCITS/ISO/IEC 1989:2014 [2014] – Programming language COBOL. INCITS.
{{cite book}}: CS1 maint: numeric names: authors list (link) - ISO/IEC JTC 1/SC 22/WG 4 (January 2023). ISO/IEC 1989:2023 – Programming language COBOL. ISO.
{{cite book}}: CS1 maint: numeric names: authors list (link) - Klein, William M. (4 October 2010). "The History of COBOL" (PDF). Archived from the original (PDF) on 7 January 2014. Retrieved 7 January 2014.
- Marcotty, Michael (1978a). Wexelblat, Richard L. (ed.). Transcript of question and answer session. History of Programming Languages. Academic Press (published 1981). p. 263. doi:10.1145/800025.1198370. ISBN 0127450408.
- Marcotty, Michael (1978b). Wexelblat, Richard L. (ed.). Full text of all questions submitted. History of Programming Languages. Academic Press (published 1981). p. 274. doi:10.1145/800025.1198371. ISBN 0127450408.
- McCracken, Daniel D. (1976). A Simplified Guide to Structured COBOL Programming. Wiley. ISBN 0-471-58284-0. LCCN 75044399.
- McCracken, Daniel D.; Golden, Donald G. (1988). A Simplified Guide to Structured COBOL Programming (2nd ed.). Wiley. ISBN 978-0471610540. LCCN 87034608.
- Riehle, Richard L. (August 1992). "PERFORM considered harmful". Communications of the ACM. 35 (8): 125–128. doi:10.1145/135226.376106. S2CID 18845698.
- Sammet, Jean E. (May 1961). A method of combining ALGOL and COBOL. Papers presented at the 9–11 May 1961, western joint IRE–AIEE–ACM computer conference. ACM. pp. 379–387. doi:10.1145/1460690.1460734.
- Sammet, Jean E. (1978a). Wexelblat, Richard L. (ed.). The early history of COBOL. History of Programming Languages. Academic Press (published 1981). doi:10.1145/800025.1198367. ISBN 0127450408.
- Sammet, Jean E. (1978b). Wexelblat, Richard L. (ed.). Transcript of presentation. History of Programming Languages. Academic Press (published 1981). doi:10.1145/800025.1198368. ISBN 0127450408.
- Sammet, Jean E. (23 July 2004). "COBOL". In Reilly, Edwin D. (ed.). Concise Encyclopedia of Computer Science. Wiley. ISBN 978-0470090954. OCLC 249810423.
- Shneiderman, B. (October 1985). "The Relationship Between COBOL and Computer Science". Annals of the History of Computing. 7 (4): 348–352. doi:10.1109/MAHC.1985.10041. S2CID 1009406.
External links
- COBOLStandard.info at the Wayback Machine (archived 2017-01-10)
- ISO/IEC JTC1/SC22/WG4 - COBOL at the Wayback Machine (archived 2016-08-22)
- COBOL Language Standard (1991; COBOL-85 with Amendment 1), from The Open Group
