COBOL
![]() Das Cobol 60 Bericht an Codasyl (April 1960) | |
Paradigma | Prozedural, Imperativ, objektorientierter, generisch |
---|---|
Entworfen von | Howard Bromberg, Normaner Rabatt, Vernon Reeves, Jean E. Sammet, William Selden, Gertrude Tierneymit indirektem Einfluss von Grace Hopper[1] |
Entwickler | Codasyl, Ansi, ISO/IEC |
Erstmals erschienen | 1959 |
Stabile Version | ISO / IEC 1989: 2014 /2014 |
Disziplin tippen | Schwach, statisch |
Dateiname -Erweiterungen | .Cbl , .Cob , .Cpy |
Haupt Implementierungen | |
Gnucobol, IBM COBOL, Micro Focus Visual Cobol | |
Dialekte | |
COBOL/2, DEC COBOL-10, 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 ILLE 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) COBOL85, TANDEM (NONSTOP) SCOBOL, UNIVAC COBOL, UNISYS MCP COBOL74, UNISYS MCP COBOL85, UNIX COBOL X/Open, sehr iscobol, Wang gegen Cobol | |
Beeinflusst von | |
Initial: Aimaco, Comtran, TATSACHE, Fließen matisch COBOL 2002:[a] C ++, Eiffel, Smalltalk | |
Beeinflusst | |
Cobolscript,[5] Egl,[6] Pl/i,[7] Pl/b[8] | |
|
Cobol (/ˈkoʊbɒl, -bɔːl/; ein Akronym Für "gemeinsame geschäftorientierte Sprache" ist a zusammengestellt Englischartig Computerprogrammiersprache für den geschäftlichen Gebrauch entwickelt. Es ist ein Imperativ, prozedural und seit 2002, objektorientierter Sprache. COBOL wird hauptsächlich in Unternehmen, Finanzen und Verwaltungssystemen für Unternehmen und Regierungen eingesetzt. COBOL wird immer noch häufig in Anwendungen verwendet Mainframe -Computerwie groß an Charge und Transaktionsverarbeitung Arbeitsplätze. Aufgrund seiner rückläufigen Popularität und der Pensionierung erfahrener COBOL -Programmierer werden Programme jedoch auf neue Plattformen migriert, in modernen Sprachen umgeschrieben oder durch Softwarepakete ersetzt.[9] Die meisten Programme in COBOL sind nun nur die Aufrechterhaltung vorhandener Anwendungen. Viele große Finanzinstitute entwickelten jedoch noch 2006 neue Systeme in COBOL.[10]
Cobol wurde 1959 von entworfen Codasyl und basierte teilweise auf der Programmiersprache Fließen matisch entworfen von Grace Hopper. Es wurde als Teil von a geschaffen US -Verteidigungsministerium Bemühungen, a zu erstellen tragbar Programmiersprache für die Datenverarbeitung. Es wurde ursprünglich als Stoppgap angesehen, aber das Verteidigungsministerium zwang die Computerhersteller umgehend, es zur Verfügung zu stellen, was zu seiner weit verbreiteten Akzeptanz führte.[11] Es war standardisiert 1968 und wurde seitdem viermal überarbeitet. Erweiterungen beinhalten die Unterstützung für strukturiert und Objekt orientierte Programmierung. Der aktuelle Standard ist ISO/IEC 1989: 2014.[12]
COBOL-Aussagen haben eine englischähnliche Syntax, die selbstdokumentiert und hoch lesbar ist. Es ist jedoch ausführlich und verwendet über 300 reservierte Wörter. Im Gegensatz zu modernen, prägnanten Syntax wie y = x;
COBOL hat eine englischähnlichere Syntax (in diesem Fall, MOVE x TO y
). COBOL -Code ist in vier aufgeteilt Abteilungen (Identifizierung, Umgebung, Daten und Prozeduren) mit einer starre Hierarchie von Abschnitten, Absätzen und Sätzen. Ohne große Standardbibliothek, Der Standard gibt 43 Aussagen, 87 Funktionen und nur eine Klasse an.
Akademische Informatiker waren im Allgemeinen uninteressiert an Geschäftsanwendungen, als COBOL erstellt wurde und nicht an der Gestaltung beteiligt war. Es wurde (effektiv) von Grund auf eine Computersprache für Unternehmen entworfen, wobei der Schwerpunkt auf Eingaben und Ausgaben liegt, deren einzige Datentypen Zahlen und Textstränge waren.[13] COBOL war gewesen kritisiert Während seines gesamten Lebens für seine Ausführlichkeit, sein Designprozess und die schlechte Unterstützung für Strukturierte Programmierung. Diese Schwächen führen zu monolithischen, ausführlichen (für englischähnlichen) Programmen, die nicht leicht verständlich sind.
Seit Jahren wird COBOL als Programmiersprache für Geschäftsbetriebe in Mainframes angenommen.[14] Obwohl in den letzten Jahren ein zunehmendes Interesse an der Migration von COBOL -Operationen auf die Migration gestiegen ist Cloud Computing.[15]
Anamnese und Spezifikation
Hintergrund
In den späten 1950er Jahren waren Computerbenutzer und Hersteller besorgt über die steigenden Programmkosten. Eine Umfrage von 1959 hatte ergeben, dass in jeder Datenverarbeitungsinstallation die Programmierung durchschnittlich 800.000 US -Dollar kostet und dass die Übersetzungsprogramme für neue Hardware 600.000 US -Dollar kosten würden. Zu einer Zeit, in der neu Programmiersprachen proliferend Bei einer immer größeren Geschwindigkeit legte dieselbe Umfrage darauf hin, dass, wenn eine gemeinsame geschäftsorientierte Sprache verwendet würde, die Konvertierung weitaus billiger und schneller wäre.[16]
Am 8. April 1959, Mary K. Hawes, ein Informatiker bei Burroughs Corporation, ein Treffen von Vertretern aus Wissenschaft, Computerbenutzern und Herstellern bei der Universität von Pennsylvania organisieren ein formelles Treffen über gemeinsame Geschäftssprachen.[17] Vertreter eingeschlossen Grace Hopper (Erfinder der englischähnlichen Datenverarbeitungssprache Fließen matisch), Jean Sammet und Saul Gorn.[18][19]
Bei der April -Sitzung fragte die Gruppe die Verteidigungsministerium (DOD) Sponsor der Anstrengung, eine gemeinsame Geschäftssprache zu schaffen. Die Delegation beeindruckte Charles A. Phillips, Direktor des Data System Research -Mitarbeiter am DOD,[20] Wer dachte, dass sie die Probleme des DOD "gründlich verstanden" haben. Der DOD betrieb 225 Computer, hatte weitere 175 auf Bestellung und hatte über 200 Millionen US -Dollar für die Implementierung von Programmen ausgegeben, um sie zu betreiben. Tragbare Programme würden Zeit sparen, die Kosten senken und die Modernisierung erleichtern.[21]
Charles Phillips stimmte zu, das Treffen zu sponsern, und beauftragte die Delegation mit der Ausarbeitung der Tagesordnung.[22]
Cobol 60
Am 28. und 29. Mai 1959 (genau ein Jahr nach dem Zürich Algol 58 Treffen) fand im Pentagon ein Treffen statt, um die Schaffung einer gemeinsamen Programmiersprache für Unternehmen zu erörtern. Es wurde von 41 Personen besucht und wurde von Phillips geleitet.[23] Das Verteidigungsministerium war besorgt darüber, ob es auf verschiedenen Computern dieselben Datenverarbeitungsprogramme ausführen konnte. ForranDie einzige Mainstream -Sprache zu dieser Zeit fehlte die Funktionen, die zum Schreiben solcher Programme erforderlich waren.[24]
Vertreter beschrieben begeistert eine Sprache, die in einer Vielzahl von Umgebungen arbeiten könnte, von Bankwesen und Versicherung über Versorgungsunternehmen und Bestandskontrolle. Sie stimmten einstimmig zu, dass mehr Menschen programmieren können und dass die neue Sprache nicht durch die Grenzen der zeitgenössischen Technologie eingeschränkt werden sollte. Eine Mehrheit stimmte zu, dass die Sprache die maximale Verwendung von Englisch ausführen, sich ändern, maschinell unabhängig sein und selbst auf Kosten der Macht einfach zu bedienen sein sollte.[25]
Das Treffen führte zur Schaffung von a Lenkungsausschuss und kurze, mittlere und langfristige Komitees. Das Kurzstreckenkomitee erhielt September (drei Monate), um Spezifikationen für eine Zwischensprache zu erstellen, die dann von den anderen Ausschüssen verbessert werden würde.[26][27] Ihre offizielle Mission bestand jedoch darin, die Stärken und Schwächen bestehender Programmiersprachen zu identifizieren und sie nicht ausdrücklich zu einer neuen Sprache zu lenken.[24] Die Frist wurde vom Kurzstreckenkomitee ungläubig eingehalten.[28] Ein Mitglied, Betty Holbertonbeschrieb die dreimonatige Frist als "Bruttooptimismus" und bezweifelte, dass die Sprache wirklich ein Stopphap sein würde.[29]
Der Lenkungsausschuss traf sich am 4. Juni und stimmte zu, die gesamte Aktivität als die zu benennen Ausschuss für Datensystemsprachen, oder Codasylund um ein Exekutivkomitee zu bilden.[30]
Das Kurzstreckenkomitee bestand aus Mitgliedern, die sechs Computerhersteller und drei Regierungsbehörden vertreten. Die sechs Computerhersteller waren Burroughs Corporation, IBM, Minneapolis-honeywell (Honeywell Labs), RCA, Sperry Rand, und Sylvania Electric Products. Die drei Regierungsbehörden waren die US-Luftwaffe, die Marine David Taylor Model Basin, und die Nationales Büro für Standards (Jetzt das Nationale Institut für Standards und Technologie).[31] Das Komitee wurde von dem Vorsitz von Joseph Wegstein des US National Bureau of Standards. Die Arbeiten begannen mit der Untersuchung der Datenbeschreibung, Aussagen, vorhandenen Anwendungen und Benutzererfahrungen.[32]
Der Ausschuss untersuchte hauptsächlich die Fließen matisch, Aimaco und Comtran Programmiersprachen.[24][33] Die flow-matische Sprache war besonders einflussreich, weil sie umgesetzt worden war und weil Aimaco mit nur geringfügigen Veränderungen ein Derivat davon war.[34][35] Der Erfinder von Flow-Matic, Grace Hopper, war ebenfalls als technischer Berater des Ausschusses tätig.[28] Die Hauptbeiträge von Flow-Matic zu COBOL waren lange variable Namen, englische Wörter für Befehle und die Trennung von Datenbeschreibungen und -anweisungen.[36] Hopper wird manchmal als "Mutter von Cobol" oder "die Großmutter von Cobol" bezeichnet.[37][38][39] obwohl Jean SammetEin leitender Designer von Cobol erklärte, dass Hopper "nicht die Mutter, Schöpferin oder Entwickler von Cobol war".[40][1]
IBMs Comtran -Sprache, erfunden von Bob Bemer, wurde als Konkurrent für Fluss-Matic angesehen[41][42] durch ein kurzfristiges Komitee bestehend aus Kollegen von Grace Hopper.[43] Einige seiner Merkmale wurden nicht in COBOL aufgenommen, so dass es nicht so aussieht, als hätte IBM den Entwurfsprozess dominiert.[26] Und Jean Sammet sagte 1981, dass es von einigen Ausschussmitgliedern (selbst eingeschlossen) eine "starke Anti-IBM-Voreingenommenheit" gegeben habe.[44] In einem Fall besuchte Roy Goldfinger, Autor des Komitees des Comtran Manual und im Mittelstufe, an einem Unterausschuss, um seine Sprache zu unterstützen und die Verwendung von algebraischen Ausdrücken zu fördern Bemühungen, eine auf Englisch basierende Sprache zu schaffen.[45] 1980 kommentierte Grace Hopper, dass "COBOL 60 95% Flow-Matic" ist und dass Comtran einen "extrem kleinen" Einfluss hatte. Darüber hinaus sagte sie, dass sie behaupten würde, dass die Arbeit sowohl von Flow-Matic als auch Comtran beeinflusst wurde, nur um "andere Menschen glücklich zu halten [damit sie] nicht versuchen, uns auszuschalten".[46] Merkmale von Comtran Incorporated in COBOL enthaltene Formeln,[47] das PICTURE
Klausel,[48] ein verbesserter WENN
Aussage, die die Notwendigkeit vermieden hat Gehe zu Sund ein robusteres Dateiverwaltungssystem.[41]
Die Nützlichkeit der Arbeit des Komitees war unter großer Debatte. Während einige Mitglieder dachten, die Sprache habe zu viele Kompromisse und das Ergebnis von Entwurf durch KomiteeAndere hielten es besser als die drei untersuchten Sprachen. Einige fanden die Sprache zu komplex; andere, zu einfach.[49] Um kontroverse Funktionen waren für die Datenverarbeitungsbenutzer angesehen. Solche Funktionen enthalten boolesche Ausdrücke, Formeln und Tisch Einweis (Indizes).[50][51] Ein weiterer Kontroversen war, ob die Keywords kontextsensitiv werden und die Auswirkungen auf die Lesbarkeit haben würden.[50] Obwohl kontextsensitive Schlüsselwörter abgelehnt wurden, wurde der Ansatz später in verwendet Pl/i und teilweise in Cobol ab 2002.[52] Es wurde wenig Überlegungen zugegeben Interaktivität, interagieren mit Betriebssysteme (Nur wenige existierten zu dieser Zeit) und Funktionen (betrachtete als rein mathematisch und nicht in der Datenverarbeitung).[53][54]
Die Spezifikationen wurden dem Exekutivkomitee am 4. September vorgelegt. Sie haben die Erwartungen nicht erfüllt: Joseph Wegstein bemerkte, dass "es raue Flecken enthält und einige Ergänzungen erfordert", und Bob Bemer beschrieb sie später als "Hodgepodge". Der Unterausschuss wurde bis Dezember zur Verbesserung gegeben.[28]
Bei einer Sitzung Mitte September erörterte das Komitee den Namen der neuen Sprache. Zu den Vorschlägen gehörten "geschäftig" (Geschäftssystem), "Infosyl" (Informationssystemsprache) und "Cocosyl" (gemeinsame Computersystemsprache).[55] Es ist unklar, wer den Namen "COBOL" geprägt hat.[56][57] Obwohl Bob Bemer später behauptete, es sei sein Vorschlag gewesen.[58][59][60]
Im Oktober erhielt das Ausschuss der Zwischenstufe Kopien der TATSACHE Sprachspezifikation erstellt von durch Roy Nutt. Seine Merkmale beeindruckten das Komitee so sehr, dass sie eine Lösung verabschiedeten, um Cobol darauf zu stützen.[61] Dies war ein Schlag für das Kurzstreckenkomitee, der in der Spezifikation gute Fortschritte gemacht hatte. Obwohl Tatsache technisch überlegen war, war es nicht mit Berücksichtigung der Portabilität oder durch Hersteller und Benutzerkonsens erstellt worden. Es fehlte auch eine nachweisbare Implementierung,[28] Ermöglicht den Anhängern eines COBOL auf Flussmatik, um die Auflösung zu stürzen. Der RCA -Vertreter Howard Bromberg blockierte auch die Tatsache, so dass die Arbeit von RCA an einer COBOL -Implementierung nicht verschwendet würde.[62]
Es stellte sich bald heraus, dass das Komitee zu groß war, um weitere Fortschritte zu erzielen. Ein frustrierter Howard Bromberg kaufte einen Tombstone im Wert von 15 US -Dollar mit "Cobol" eingraviert und schickte ihn nach Charles Phillips, um sein Missfallen zu demonstrieren.[b][64][65] Ein Unterausschuss wurde gebildet, um bestehende Sprachen zu analysieren, und bestand aus sechs Personen:[24][66]
- William Selden und Gertrude Tierney von IBM,
- Howard Bromberg und Howard Rabatt von RCA,
- Vernon Reeves und Jean E. Sammet von Sylvania Electric Products.
Der Unterausschuss hat den größten Teil der Arbeit erledigt, die die Spezifikation erstellt hat, und das Kurzstreckenkomitee überprüfte und verändert ihre Arbeiten, bevor die fertige Spezifikation erstellt wurde.[24]
Die Spezifikationen wurden vom Exekutivkomitee am 8. Januar 1960 genehmigt und an das Regierungsprotokoll gesendet, das diese als druckte Cobol 60. Die angegebenen Ziele der Sprache bestand darin, effiziente, tragbare Programme leicht zu ermöglichen, damit Benutzer mit minimalem Aufwand und Kosten auf neue Systeme wechseln und für unerfahrene Programmierer geeignet sind.[67] Das Codasyl Executive Committee hat später das COBOL -Wartungsausschuss eingerichtet, um Fragen von Benutzern und Anbietern zu beantworten und die Spezifikationen zu verbessern und zu erweitern.[68]
Im Jahr 1960 wuchs die Liste der Hersteller, die den Bau von Cobol -Compilern planen. Bis September hatten sich fünf weitere Hersteller Codasyl angeschlossen (Bendix, Steuerungsdatengesellschaft, General Electric (GE), Nationale Registrierkasse und Philco) und alle vertretenen Hersteller hatten Cobol -Compiler angekündigt. GE und IBM planten, COBOL in ihre eigenen Sprachen Gecom bzw. Comtran zu integrieren. Im Gegensatz, Internationale Computer und Tabulatoren geplant, ihre Sprache, Codel, durch COBOL zu ersetzen.[69]
In der Zwischenzeit arbeiteten RCA und Sperry Rand an der Erstellung von Cobol -Compilern. Das erste COBOL -Programm lief am 17. August auf einem RCA 501.[70] Am 6. und 7. Dezember lief das gleiche COBOL-Programm (wenn auch mit geringfügigen Änderungen) auf einem RCA-Computer und einem Remington-Rand Univac Computer, der zeigt, dass Kompatibilität erreicht werden könnte.[71]
Die relativen Einflüsse, von denen Sprachen verwendet wurden, dauern bis heute in den empfohlenen Beratungsanbietern in allen COBOL -Referenzhandbüchern:
COBOL ist eine Branchensprache und keine Eigenschaft eines Unternehmens oder einer Gruppe von Unternehmen oder einer Organisation oder Organisationen.
Es wird keine Garantie, die ausgedrückt oder impliziert wird, von einem Mitwirkenden oder des Codasyl -Cobol -Ausschusses über die Genauigkeit und Funktionsweise des Programmiersystems und der Sprache erfolgt. Darüber hinaus wird von einem Mitwirkenden oder des Ausschusses im Zusammenhang mit dem Ausschuss keine Verantwortung übernommen. Die Autoren und Urheberrechte des hier verwendeten urheberrechtlich geschützten Materials sind wie folgt:
- Flow-Matic (Marke der Unisys Corporation), Programmierung für die Univac (R) I und II, Datenautomationssysteme, urheberrechtlich geschützt von 1958, 1959, von der Unisys Corporation; IBM Commercial Translator Form Nr. F28-8013, urheberrechtlich geschützt von 1959 von IBM; Fakt, DSI 27A5260-2760, urheberrechtlich geschützt von 1960 von Minneapolis-Honeywell.
Sie haben die Verwendung dieses Materials ausdrücklich in den COBOL -Spezifikationen ganz oder teilweise autorisiert. Diese Genehmigung erstreckt sich auf die Reproduktion und Verwendung von COBOL -Spezifikationen in Programmierhandbüchern oder ähnlichen Veröffentlichungen.[72]
COBOL-61 bis COBOL-65
Es ist ziemlich unwahrscheinlich, dass Cobol am Ende des Jahrzehnts da ist.
Anonymous, Juni 1960[73]
Viele logische Mängel wurden in gefunden Cobol 60, Führung von GE's Charles Katz zu warnen, dass es nicht eindeutig interpretiert werden konnte. Ein widerstrebender kurzfristiger Ausschuss erließ eine totale Aufräumarbeiten und bis März 1963 wurde berichtet, dass die Syntax von Cobol genauso definierbar war wie Algol'S, obwohl semantische Unklarheiten übrig blieben.[69]
Frühe Cobol -Compiler waren primitiv und langsam. Eine Bewertung der US Navy aus dem Jahr 1962 ergab Kompilierungsgeschwindigkeiten von 3–11 Aussagen pro Minute. Mitte 1964 waren sie auf 11–1000 Aussagen pro Minute erhöht. Es wurde beobachtet, dass die Erhöhung des Gedächtnisses die Geschwindigkeit drastisch erhöhen würde und dass die Kompilierungskosten sehr unterschiedlich waren: Die Kosten pro Aussage lagen zwischen 0,23 USD und 18,91 USD.[74]
Ende 1962 gab IBM bekannt, dass COBOL ihre primäre Entwicklungssprache sein würde und dass die Entwicklung von Comtran einstellen würde.[74]
Die COBOL -Spezifikation wurde in den fünf Jahren nach ihrer Veröffentlichung dreimal überarbeitet. COBOL-60 wurde 1961 durch COBOL-61 ersetzt. Dies wurde dann durch die Extended-Spezifikationen von COBOL-61 im Jahr 1963 ersetzt, in der die Sort- und Berichtsautoreinrichtungen eingeführt wurden.[75] Die zusätzlichen Einrichtungen korrigierten Fehler, die von Honeywell Ende 1959 in einem Brief an das Kurzstreckenkomitee identifiziert wurden.[70] Die COBOL Edition 1965 brachte weitere Klarstellungen für die Spezifikationen und führte Einrichtungen für die Handhabung ein Massenspeicher Dateien und Tische.[76]
COBOL-68
Es begannen, COBOL zu standardisieren, um Inkompatibilitäten zwischen den Versionen zu überwinden. Ende 1962 haben sowohl ISO als auch das United States of America Standards Institute (jetzt Ansi) gebildete Gruppen, um Standards zu erstellen. Ansi produziert USA Standard COBOL X3.23 Im August 1968 wurde der Eckpfeiler für spätere Versionen.[77] Diese Version wurde als American National Standard (ANS) COBOL bekannt und wurde 1972 von ISO übernommen.[78]
COBOL-74
Bis 1970 war COBOL die am häufigsten verwendete Programmiersprache der Welt geworden.[79]
Unabhängig vom ANSI -Komitee arbeitete das Codasyl -Programmiersprachkomitee an der Verbesserung der Sprache. Sie beschrieben in den Jahren 1968, 1969, 1970 und 1973 neue Versionen, einschließlich Änderungen wie der Kommunikation zwischen den Programmen, Debugging- und Dateiverführungsmöglichkeiten sowie verbesserter Stringhandling und Verbesserung Bibliothek Einschlussfunktionen.[80] Obwohl Codasyl unabhängig vom ANSI -Komitee war, war die Codasyl Journal of Development wurde von ANSI verwendet, um Funktionen zu identifizieren, die beliebt waren, um die Implementierung zu rechtfertigen.[81] Das Programmiersprachkomitee wurde ebenfalls in Verbindung gebracht ECMA und das japanische COBOL -Standardkomitee.[80]
Das Programm der Programmiersprache war jedoch nicht bekannt. Der Vizepräsident William Rinehuls beklagte sich darüber, dass zwei Drittel der COBOL-Gemeinschaft die Existenz des Komitees nicht wussten. Es war auch arm und fehlte die Mittel, um öffentliche Dokumente wie Minuten von Besprechungen zu machen und Vorschläge zu ändern, die frei verfügbar waren.[82]
1974 veröffentlichte ANSI eine überarbeitete Version von (ANS) COBOL mit neuen Funktionen wie z. Dateiorganisationen, das DELETE
Aussage[83] und die Segmentierung Modul.[84] Gelöschte Funktionen enthalten die NOTE
Aussage, die EXAMINE
Aussage (die durch ersetzt wurde durch INSPECT
) und das implementierer definierte Zufallszugriffsmodul (das durch die neuen sequentiellen und relativen E/A-Module abgelöst wurde). Diese machten 44 Änderungen aus, die vorhandene Aussagen mit dem neuen Standard nicht kompatibel machten.[85] Der Berichtsautor wurde voraussichtlich aus COBOL entfernt, wurde jedoch wieder eingestellt, bevor der Standard veröffentlicht wurde.[86][87] ISO übernahm später 1978 den aktualisierten Standard.[78]
COBOL-85
Im Juni 1978 begannen die Arbeiten zur Überarbeitung von Cobol-74. Der vorgeschlagene Standard (üblicherweise als COBOL-80 bezeichnet) unterschieden sich signifikant von der vorherigen und verursachte Bedenken hinsichtlich der Inkompatibilität und der Umwandlungskosten. Im Januar 1981 drohte Joseph T. Brophy, Senior Vice President der Travelers Insurance, den Standardausschuss zu verklagen, weil dies nicht der Fall war nach oben kompatibel mit COBOL-74. Herr Brophy beschrieb frühere Konvertierungen ihrer 40-Millionen-Codebasis als "nicht produktiv" und als "vollständige Verschwendung unserer Programmierressourcen".[88] Später in diesem Jahr die Datenverarbeitungsmanagementverband (DPMA) sagte, es sei "stark gegen den neuen Standard" und zitierte "unerschwingliche" Conversion -Kosten und -verbesserungen, die "dem Benutzer gezwungen" wurden.[89][90]
Während des ersten öffentlichen Überprüfungszeitraums erhielt der Ausschuss 2.200 Antworten, von denen 1.700 negative Formbuchstaben waren.[91] Andere Antworten waren detaillierte Analysen des Effekts COBOL-80 auf ihre Systeme; Die Umwandlungskosten wurden voraussichtlich mindestens 50 Cent pro Codezeile betragen. Weniger als ein Dutzend Antworten befanden sich für den vorgeschlagenen Standard.[92]
ISO TC97-SC5 installiert 1979 Die internationale COBOL-Expertengruppe auf Initiative von Wim Ebbinkhuijsen. Die Gruppe bestand aus COBOL -Experten aus vielen Ländern, einschließlich der Vereinigten Staaten. Ihr Ziel war es, gegenseitiges Verständnis und Respekt zwischen ANSI und dem Rest der Welt in Bezug auf die Notwendigkeit neuer Cobol -Merkmale zu erreichen. Nach drei Jahren änderte ISO den Status der Gruppe in eine formelle Arbeitsgruppe: WG 4 COBOL. Die Gruppe übernahm das primäre Eigentum und die Entwicklung des COBOL -Standards, wo ANSI die meisten Vorschläge machte.
1983 zitierte die DPMA ihren Widerstand gegen den Standard und führte die Reaktionsfähigkeit des Ausschusses auf öffentliche Bedenken an. Im selben Jahr kam eine Studie des nationalen Standards der Standards zu dem Schluss, dass der vorgeschlagene Standard nur wenige Probleme darstellen würde.[90][93] Ein Jahr später, Dez veröffentlicht a Vax/vms COBOL-80, der feststellte, dass die Umwandlung von COBOL-74-Programmen nur wenige Probleme darstellte. Das neue AUSWERTEN
Aussage und Inline AUSFÜHREN
wurden besonders gut aufgenommen und verbessert die Produktivität dank vereinfacht Steuerfluss und Debuggen.[94]
Die zweite öffentliche Überprüfung zog weitere 1.000 (hauptsächlich negative) Antworten, während der letzte erst 25 zog. Zu diesem Zeitpunkt waren viele Bedenken berücksichtigt worden.[90]
1985 akzeptierte die ISO-Arbeitsgruppe 4 die damalige Version des vorgeschlagenen ANSI-Standards, nahm mehrere Änderungen vor und setzte sie als neues ISO-Standard-COBOL 85 fest. Es wurde Ende 1985 veröffentlicht.
60 Merkmale wurden geändert oder veraltet und 115[95] wurden hinzugefügt, wie:[96][97]
- Zielfernrohr Terminatoren (
End-wenn
,Endleistung
,Endlese
, etc.) - Verschachtelte Unterprogramme
-
FORTSETZEN
, a Aussage ohne Operation -
AUSWERTEN
, a Schaltanweisung -
INITIALISIEREN
, eine Anweisung, die Datengruppen auf ihre Standardwerte festlegen kann - In der Reihe
AUSFÜHREN
Schleifenkörper - zuvor mussten Schleifenkörper in einem separaten Verfahren angegeben werden - Referenzänderung, die den Zugriff auf Substrings ermöglicht
- E/A -Statuscodes.
Der neue Standard wurde von allen nationalen Standardgremien, einschließlich ANSI, übernommen.[78]
Es folgten zwei Änderungen in den Jahren 1989 und 1993, wobei die ersten intrinsischen Funktionen und die anderen Korrekturen vorliegen.[78]
COBOL 2002 und objektorientiertes Cobol
In 1997, Gartner -Gruppe Schätzungen zufolge gab es insgesamt 200 Milliarden COBOL -Linien, die 80% aller Geschäftsprogramme ausführten.[c][98]
In den frühen neunziger Jahren begannen die Arbeiten zum Hinzufügen von Objektorientierung in der nächsten vollständigen Überarbeitung von COBOL. Objektorientierte Merkmale wurden von entnommen C ++ und Smalltalk.[2][3] Die erste Schätzung bestand darin, diese Revision bis 1997 abzuschließen, und bis 1997 war ein ISO -Ausschussentwurf (CD) verfügbar. Einige Anbieter (einschließlich Micro Focus, Fujitsu, und IBM) Einführte objektorientierte Syntax basierend auf Entwürfen der vollständigen Revision. Der endgültige zugelassene ISO -Standard wurde Ende 2002 genehmigt und veröffentlicht.[99]
Fujitsu/gtsoftware,[100] Micro Focus und Regencode haben objektorientierte Cobol-Compiler eingeführt, die auf das zielen .NET Framework.
Es gab viele andere neue Merkmale, von denen viele in der waren Codasyl Cobol Journal of Development Seit 1978 und hatte die Gelegenheit verpasst, in Cobol-85 aufgenommen zu werden.[101] Zu diesen anderen Funktionen gehörten:[102][103]
- Freiformcode
- Benutzerdefinierte Funktionen
- Rekursion
- Gebietsschema-basierte Verarbeitung
- Unterstützung für erweiterte Zeichensätze wie z. Unicode
- Schwimmpunkt und binär Datentypen (bis dahin wurden binäre Elemente basierend auf deren Deklaration abgeschnitten Basis-10 Spezifikation)
- Tragbare arithmetische Ergebnisse
- Bisschen und Boolesche Datentypen
- Zeiger und Syntax für den Speicher und freien Speicher
- Das
SCREEN SECTION
zum Textbasierte Benutzeroberflächen - Das
VALIDATE
Einrichtung - Verbesserte Interoperabilität mit anderen Programmiersprachen und Rahmenumgebungen wie .net und Java.
Drei Corrigenda wurden für den Standard veröffentlicht: zwei 2006 und eine 2009.[104]
COBOL 2014
Zwischen 2003 und 2009 wurden drei technische Berichte beschrieben Objektabschluss, Xml Verarbeitung und Sammelkurse für COBOL.[104]
COBOL 2002 litt unter schlechter Unterstützung: Keine Compiler unterstützten den Standard vollständig. Micro Focus stellte fest, dass dies auf einen Mangel an Benutzerbedarf für die neuen Funktionen und auf die Abschaffung des NIST Testsuite, die verwendet worden war, um die Konformität der Compiler zu testen. Es wurde auch festgestellt, dass der Standardisierungsprozess langsam und unterressernd ist.[105]
COBOL 2014 enthält die folgenden Änderungen:[106]
- Tragbare arithmetische Ergebnisse wurden durch ersetzt durch IEEE 754 Datentypen
- Hauptmerkmale wurden optional gemacht, wie die
BESTÄTIGEN
Einrichtung, der Berichtsautor und die Bildschirmbehandlungsanlage - Methodenüberlastung
- Dynamische Kapazitätstabellen (eine Funktion, die aus dem Entwurf von COBOL 2002 gesunken ist)[107]
Erbe
COBOL Z/OS, Z/VSE, Vme, Unix, OpenVMS und Fenster. Im Jahr 1997 die Gartner -Gruppe berichtete, dass 80% des weltweiten Geschäfts mit über 200 Milliarden Code -Zeilen auf COBOL lief[c] und 5 Milliarden Zeilen mehr, die jährlich geschrieben werden.[108]
Gegen Ende des 20. Jahrhunderts, die Jahr 2000 Problem (Y2K) stand im Mittelpunkt der signifikanten COBOL -Programmieraufwand, manchmal von denselben Programmierern, die die Systeme vor Jahrzehnten entworfen hatten. Der besondere Maß an Aufwand, der für die Korrektur von COBOL-Code erforderlich ist, wurde auf die große Menge an geschäftsorientiertem COBOL zurückgeführt, da Geschäftsanwendungen Daten stark und Datenfelder festgelegt werden.[109] Einige Studien führen bis zu "24% der Y2K -Software -Reparaturkosten für COBOL" zurück.[110] Nach den Aufräumarbeiten in diese Programme für Y2K ergab eine Umfrage aus dem Jahr 2003, dass viele gebrauchten.[111] Die Autoren sagten, dass die Umfragedaten "einen allmählichen Rückgang der Bedeutung von COBOL für die Anwendungsentwicklung in den folgenden 10 Jahren deuten, es sei denn, die Integration mit anderen Sprachen und Technologien kann übernommen werden".[112]
In den Jahren 2006 und 2012,, Computerwelt Umfragen (von 352 Lesern) ergaben, dass über 60% der Organisationen COBOL verwendeten (mehr als C ++ und Visual Basic .net) und dass für die Hälfte davon COBOL für den größten Teil ihrer internen Software verwendet wurde.[10][113] 36% der Manager gaben an, von COBOL aus zu wandern, und 25% sagten, sie würden gerne, wenn es billiger wäre. Stattdessen haben einige Unternehmen ihre Systeme von teuren Mainframes auf billigere und modernere Systeme migriert und gleichzeitig ihre COBOL -Programme beibehalten.[10]
Zeugnis vor dem Repräsentantenhaus Im Jahr 2016 gab Cobol noch von vielen Bundesbehörden in Gebrauch.[114] Reuters berichtete 2017, dass 43% der Bankensysteme immer noch COBOL mit über 220 Milliarden COBOL -Code -Zeilen verwendeten.[115]
Bis 2019 schrumpfte die Anzahl der COBOL-Programmierer aufgrund von Pensionierungen schnell, was zu einer bevorstehenden Qualifikationslücke in Unternehmens- und Regierungsorganisationen führte, die immer noch Mainframe-Systeme für die Verarbeitung von Transaktionsverarbeitung mit hoher Volumen verwenden. Die Bemühungen, Systeme in neueren Sprachen neu zu schreiben, haben sich als teuer und problematisch erwiesen, ebenso wie das Auslagern der Code -Wartung.[116]
Während der Covid-19 Pandemie und die folgende Arbeitslosenschwemmung meldeten mehrere US -Bundesstaaten über einen Mangel an qualifizierten COBOL -Programmierern, um die Legacy -Systeme zu unterstützen, die für das Management von Arbeitslosengeld verwendet werden. Viele dieser Systeme waren vor der Pandemie im Umwandlungsprozess in modernere Programmiersprachen gewesen, aber der Prozess musste auf Eis gelegt werden.[117] Ebenso die USA Internal Revenue Service eilte, um seinen COBOL-basierten zu patchen Einzelmeisterdatei Um die zehn Millionen von Zahlungen, die von der vorgeschrieben sind Coronavirus -Hilfe, Hilfs- und Wirtschaftssicherheitsgesetz.[118]
Merkmale
Syntax
COBOL hat eine englischähnliche Syntax, mit der fast alles in einem Programm beschrieben wird. Zum Beispiel kann eine Bedingung ausgedrückt werden alsx IS GREATER THAN y
oder genauer wiex GREATER y
oderx > y
. Komplexere Bedingungen können durch Entfernen wiederholter Bedingungen und Variablen "abgekürzt" werden. Zum Beispiel,a > b AND a > c OR a = d
kann verkürzt werden auf a > b AND c OR = d
. Um diese englischähnliche Syntax zu unterstützen, hat COBOL über 300 Schlüsselwörter.[119][d] Einige der Schlüsselwörter sind einfache alternative oder pluralisierte Schreibweisen desselben Wortes, die für englischähnlichere Aussagen und Klauseln enthält. z. B. die IN
und OF
Schlüsselwörter können austauschbar wie möglich verwendet werden TIME
und TIMES
, und VALUE
und VALUES
.
Jedes COBOL -Programm besteht aus vier Basic lexikalische Gegenstände: Wörter, Literale, Bildcharakterstringe (siehe § Bildklausel) und Separatoren. Wörter enthalten reservierte Wörter und benutzerdefinierte Kennungen. Sie sind bis zu 31 Zeichen lang und können Buchstaben, Ziffern, Bindestriche und Unterstriche enthalten. Literale umfassen Ziffern (z. 12
) und Strings (z. 'Hello!'
).[121] Zu den Trennzeichen gehören der Raumschiff, Kommas und Halbkolonen, gefolgt von einem Raum.[122]
Ein COBOL -Programm wird in vier Abteilungen unterteilt: die Abteilung für Identifikationen, die Umweltabteilung, die Datenabteilung und die Verfahrensabteilung. Die Identifikationsabteilung gibt den Namen und die Art des Quellelements an und ist dort, wo Klassen und Schnittstellen angegeben werden. Die Umgebungsabteilung gibt alle Programmfunktionen an, die vom System abhängen, wie es ausführt, z. Dateien und Zeichensätze. Die Datenabteilung wird verwendet, um zu deklarieren Variablen und Parameter. Die Verfahrensabteilung enthält das Programm des Programms Aussagen. Jede Division ist in Abschnitte unterteilt, die aus Absätzen bestehen.
Metallanguage
Cobols Syntax wird normalerweise mit einem einzigartigen beschrieben Metallanguage Verwenden von Zahnspangen, Klammern, Balken und Unterstreichung. Die Metallgruppe wurde für die ursprünglichen COBOL -Spezifikationen entwickelt. Obwohl Backus -Naur -Form Damals hatte das Komitee noch nichts davon gehört.[123]
Element | Aussehen | Funktion |
---|---|---|
Alle Hauptstädte | BEISPIEL | Reserviertes Wort |
Unterstreichen | BEISPIEL | Das reservierte Wort ist obligatorisch |
Zahnspange | {} | Es kann nur eine Option ausgewählt werden |
Klammern | [] | Null oder eine Option kann ausgewählt werden |
Ellipse | ... | Das vorhergehende Element kann wiederholt werden |
Riegel | {| |} | Eine oder mehrere Optionen können ausgewählt werden. Jede Option darf nur einmal ausgewählt werden. |
[| |] | Null oder mehr Optionen können ausgewählt werden. Jede Option darf nur einmal ausgewählt werden. |
Betrachten Sie als Beispiel die folgende Beschreibung eines HINZUFÜGEN
Aussage:
Diese Beschreibung ermöglicht die folgenden Varianten:
HINZUFÜGEN 1 ZU x HINZUFÜGEN 1, a, b ZU x GERUNDET, y, z GERUNDET HINZUFÜGEN a, b ZU c AN GRÖSSE ERROR ANZEIGE "Fehler" Ende HINZUFÜGEN a ZU b NICHT GRÖSSE ERROR ANZEIGE "Kein Fehler" AN GRÖSSE ERROR ANZEIGE "Fehler"
Codeformat
COBOL kann in zwei Formaten geschrieben werden: fest (der Standard) oder kostenlos. In festem Format muss der Code so ausgerichtet sein, dass er in bestimmte Bereiche eingebaut werden kann (ein Überblick über die Verwendung von Stanzkarten). Bis Cobol 2002 waren diese:
Name | Säulen) | Verwendungszweck |
---|---|---|
Sequenznummernbereich | 1–6 | Dieser Bereich wird ursprünglich für Karten-/Zeilennummern (Erleichterung der mechanischen Stanzkartensortierungen zur Sicherstellung der beabsichtigten Programmcodesequenz nach manueller Bearbeitung/Handhabung) verwendet. Dieser Bereich wird vom Compiler ignoriert |
Indikatorbereich | 7 | Die folgenden Zeichen sind hier erlaubt:
|
Bereich a | 8–11 | Das beinhaltet: AUFTEILUNG , SEKTION und Verfahrensüberschriften; 01 und 77 Level -Nummern und Datei-/Berichtdeskriptoren |
Bereich b | 12–72 | Jeder andere Code, der in Bereich a nicht erlaubt ist |
Programmname Bereich | 73– | Historisch gesehen wird bis zu Spalte 80 für Stanzkarten verwendet, um das Programm oder die Sequenz zu identifizieren, zu der die Karte gehört |
In COBOL 2002 wurden die Bereiche A und B zu dem Programm-Text-Bereich zusammengeführt, der jetzt in einer implementierenden Spalte endet.[124]
COBOL 2002 führte auch den freien Formatcode ein. Der freie Formatcode kann wie in neueren Programmiersprachen in jeder Spalte der Datei platziert werden. Kommentare werden verwendet *>
, die überall platziert werden können und auch im Quellcode mit festem Format verwendet werden können. Fortsetzungslinien sind nicht vorhanden und die >> Seite
Richtlinie ersetzt die /
Indikator.[124]
Identifikationsabteilung
Die Identifikationsabteilung identifiziert die folgende Codentität und enthält die Definition einer Klasse oder Schnittstelle.
Objekt orientierte Programmierung
Klassen und Schnittstellen Seit 2002 in COBOL. Die Klassen haben Fabrikobjekte, die Klasse enthalten Methoden und Variablen und Instanzobjekte, die Instanzmethoden und Variablen enthalten.[125] Vererbung und Schnittstellen liefern Polymorphismus. Unterstützung für generische Programmierung wird durch parametrisierte Klassen bereitgestellt, die so instanziiert werden können, dass sie eine beliebige Klasse oder Schnittstelle verwenden. Objekte werden als Referenzen gespeichert, die auf einen bestimmten Typ beschränkt werden können. Es gibt zwei Möglichkeiten, eine Methode anzurufen: die INVOKE
Aussage, die ähnlich wie CALL
, oder durch Inline -Methode -Aufruf, die analog zur Verwendung von Funktionen ist.[126]
*> Diese sind gleichwertig. AUFRUFEN meine Klasse "Foo" Rückkehr var BEWEGUNG meine Klasse::"Foo" ZU var *> Inline -Methode Aufruf
Cobol bietet keinen Weg dazu ausblenden Methoden. Klassendaten können jedoch versteckt werden, indem sie sie ohne a deklarieren PROPERTY
Klausel, in der der Benutzer keine Möglichkeit hat, darauf zuzugreifen.[127] Methodenüberlastung wurde in Cobol 2014 hinzugefügt.[128]
Umweltabteilung
Der Umgebungsbereich enthält den Konfigurationsabschnitt und den Abschnitt "Input-Output". Der Konfigurationsabschnitt wird verwendet, um variable Merkmale wie Währungszeichen, Lokale und Zeichensätze anzugeben. Der Abschnitt "Input-Output" enthält Dateibezogene Informationen.
Dateien
COBOL unterstützt drei Dateiformate oder Organisationen: sequentiell, indiziert und relativ. In sequentiellen Dateien sind Datensätze zusammenhängend und müssen durchquert werden der Reihe nachähnlich wie a verlinkte Liste. Indexierte Dateien haben einen oder mehrere Indizes, die Datensätze ermöglichen zufällig zugegriffen und was auf sie sortiert werden kann. Jeder Datensatz muss eine haben einzigartiger Schlüssel, aber andere, wechseln, Rekordschlüssel müssen nicht einzigartig sein. Implementierungen indexierten Dateien variieren zwischen Anbietern, obwohl gemeinsame Implementierungen, wie z. C-ISAM und Vsam, basieren auf IBMs Isam. Relative Dateien wie indizierte Dateien haben einen eindeutigen Datensatzschlüssel, aber keine alternativen Schlüssel. Der Schlüssel eines relativen Aufzeichnungen ist seine ordinale Position; Beispielsweise hat der 10. Datensatz einen Schlüssel von 10. Dies bedeutet, dass das Erstellen eines Datensatzes mit einem Taste von 5 die Erstellung von (leeren) vorangegangenen Datensätzen erfordert. Relative Dateien ermöglichen auch sowohl sequentiellen als auch zufälligen Zugriff.[129]
Eine häufige nicht standardmäßige Erweiterung ist die Zeilen sequentiell Organisation, verwendet, um Textdateien zu verarbeiten. Datensätze in einer Datei werden von a beendet Neue Zeile und kann von unterschiedlicher Länge sein.[130]
Datenabteilung
Der Datenbereich wird in sechs Abschnitte aufgeteilt, die verschiedene Elemente deklarieren: den Abschnitt Datei für Dateiunterlagen; der Abschnitt "Arbeitsspeicher", für Statische Variablen; der Abschnitt lokaler Storage, für Automatische Variablen; im Abschnitt Verknüpfung, für Parameter und den Rückgabewert; Der Berichtsabschnitt und den Bildschirmabschnitt für Textbasierte Benutzeroberflächen.
Aggregierte Daten
Datenelemente in COBOL werden durch die Verwendung von Level-Zahlen hierarchisch deklariert, die darauf hinweisen, ob ein Datenelement Teil eines anderen ist. Ein Artikel mit einer höheren Nummer ist einem Gegenstand mit einem niedrigeren untergeordnet. Top-Level-Datenelemente mit einer Ebene von 1 werden genannt Aufzeichnungen. Elemente mit untergeordneten Aggregatdaten werden aufgerufen Gruppenartikel; Diejenigen, die nicht genannt werden Elementarelemente. Level-Zahlen zur Beschreibung der Standarddatenelemente liegen zwischen 1 und 49.[131][132]
01 Ein Rekord. *> Aggregiertes Gruppenaufzeichnungselement 05 num Bild 9 (10). *> Elementarelement 05 das Datum. *> Aggregat (Sub) Gruppenaufzeichnungselement 10 das Jahr Bild 9 (4). *> Elementarelement 10 der Monat Bild 99. *> Elementarelement 10 der Tag Bild 99. *> Elementarelement
Im obigen Beispiel Elementarelement num
und Gruppenartikel the-date
sind der Aufzeichnung untergeordnet some-record
, während Grundstücke the-year
, the-month
, und the-day
sind Teil des Gruppengegenstands the-date
.
Untergeordnete Gegenstände können mit dem austauschendiert werden IN
(oder OF
) Stichwort. Betrachten Sie beispielsweise den Beispielcode oben zusammen mit dem folgenden Beispiel:
01 Verkaufsdatum. 05 das Jahr Bild 9 (4). 05 der Monat Bild 99. 05 der Tag Bild 99.
Die Namen the-year
, the-month
, und the-day
sind für sich selbst mehrdeutig, da mehr als ein Datenelement mit diesen Namen definiert ist. So geben Sie ein bestimmtes Datenelement an, beispielsweise eines der in der enthaltenen Elemente sale-date
Gruppe, der Programmierer würde verwenden the-year IN sale-date
(oder das Äquivalent the-year OF sale-date
). (Diese Syntax ähnelt der "Punktnotation", die von den meisten zeitgenössischen Sprachen unterstützt wird.)
Andere Datenniveaus
Eine Numbernummer von 66 wird verwendet, um eine Neugruppe zuvor definierter Elemente zu deklarieren, unabhängig davon, wie diese Elemente strukturiert sind. Diese Datenniveau, auf die auch die zugehörigen bezeichnet wird RENAMES
Klausel, wird selten verwendet[133] und, um 1988, wurde normalerweise in alten Programmen gefunden. Seine Fähigkeit, die hierarchischen und logischen Strukturdaten zu ignorieren, bedeutete, dass ihre Verwendung nicht empfohlen wurde und viele Installationen ihre Verwendung verboten haben.[134]
01 Kundenrekord. 05 Cust-Key Bild x (10). 05 Hustername. 10 Cust-First-Name Bild X (30). 10 Hustername Bild X (30). 05 Cust-Dob Bild 9 (8). 05 Customance Bild 9 (7) V99. 66 Cust-personal-Details Umbenannt Hustername DURCH Cust-Dob. 66 Cust-All-Details Umbenannt Hustername DURCH Customance.
Eine 77-Nummer-Number gibt an, dass der Artikel eigenständig ist, und in solchen Situationen entspricht die Ebene der Nummer 01. Der folgende Code erklärt beispielsweise zwei Datenelemente mit 77 Ebenen. property-name
und sales-region
, bei denen es sich nicht um Datenelemente, die unabhängig von anderen Datenelementen sind (nicht untergeordnet):
77 Name des Anwesens Bild X (80). 77 Verkaufsregion Bild 9 (5).
Eine 88-Level-Nummer erklärt a Zustandsname (ein sogenannter 88-Stufe), was zutreffend ist, wenn sein übergeordneter Datenelement einen der in seiner angegebenen Werte enthält VALUE
Klausel.[135] Beispielsweise definiert der folgende Code zwei 88-Level wage-type
Datenelement. Wenn das Datenelement einen Wert von enthält 'H'
, die Bedingungsname wage-is-hourly
ist wahr, während es, wenn es einen Wert von enthält 'S'
oder 'Y'
, die Bedingungsname wage-is-yearly
ist wahr. Wenn das Datenelement einen anderen Wert enthält, sind beide Bedingungsnamen falsch.
01 Lohntyp Bild x. 88 Lohn-is-staatsurly WERT "H". 88 Lohn-is-jährlich WERT "S", "Y".
Datentypen
Standard COBOL bietet die folgenden Datentypen:[136]
Datentyp | Stichprobenerklärung | Anmerkungen |
---|---|---|
Alphabetisch | PIC A(30) | Kann nur Buchstaben oder Leerzeichen enthalten. |
Alphanumerisch | PIC X(30) | Kann Zeichen enthalten. |
Boolesche | PIC 1 USAGE BIT | Daten, die in Form von 0 und 1 als Binärzahl gespeichert sind. |
Index | USAGE INDEX | Wird verwendet, um Tabellenelemente zu referenzieren. |
National | PIC N(30) | Ähnlich wie alphanumerisch, aber unter Verwendung eines erweiterten Zeichensatzes, z. UTF-8. |
Numerisch | PIC 9(5)V9(2) | Enthält genau 7 Ziffern (7 = 5+2). 'V' lokalisiert die implizite Dezimalzahl in einer festen Punktzahl. |
Objekt | USAGE OBJECT REFERENCE | Kann entweder auf ein Objekt oder ein Objekt verweisen oder NULL . |
Zeiger | USAGE POINTER |
Type Sicherheit ist in COBOL variabel. Numerische Daten werden still zwischen verschiedenen Darstellungen und Größen konvertiert, und alphanumerische Daten können in jedem Datenelement platziert werden, das als Zeichenfolge gespeichert werden kann, einschließlich numerischer und Gruppendaten.[137] Im Gegensatz dazu dürfen Objektreferenzen und Zeiger nur aus Elementen desselben Typs zugewiesen werden, und ihre Werte können auf einen bestimmten Typ beschränkt werden.[138]
Bildklausel
A PICTURE
(oder PIC
) Klausel ist eine Zeichenfolge, die jeweils einen Teil des Datenelements darstellt und was sie enthalten kann. Einige Bildzeichen geben den Typ des Elements an und wie viele Zeichen oder Ziffern es im Speicher einnimmt. Zum Beispiel a 9
zeigt eine Dezimalstellen und eine S
zeigt an, dass der Artikel ist unterzeichnet. Andere Bildzeichen (genannt Einfügen und Bearbeitung Zeichen) Geben Sie an, wie ein Element formatiert werden soll. Zum Beispiel eine Reihe von +
Charaktere definieren Charakterpositionen sowie wie ein führendes Zeichencharakter innerhalb der endgültigen Zeichendaten positioniert werden soll. Das nicht numerische Zeichen recht rechts enthält das Zeichen des Elements, während andere Zeichenpositionen a entsprechen +
Links von dieser Position enthält ein Raum. Wiederholte Zeichen können besser angegeben werden, indem eine Zahl in Klammern nach einem Bildcharakter angegeben wird. zum Beispiel, 9(7)
ist äquivalent zu 9999999
. Bildspezifikationen, die nur Ziffer enthalten (9
) und Zeichen (S
) Zeichen definieren rein numerisch Datenelemente, während Bildspezifikationen mit alphabetischen (A
) oder alphanumerisch (X
) Zeichen definieren alphanumerisch Datenelemente. Das Vorhandensein anderer Formatierungszeichen definieren bearbeitet numerisch oder Bearbeitetes Alphanumerikum Datenelemente.[139]
PICTURE Klausel | Wert in | Wert aus |
---|---|---|
PIC 9(5) | 100 | 00100 |
"Hello" | "Hello" (Dies ist legal, führt aber dazu undefiniertes Verhalten)[137] | |
PIC +++++ | -10 | "-10" (Hinweis Leading Spaces) |
PIC 99/99/9(4) | 31042003 | "31/04/2003" |
PIC *(4)9.99 | 100.50 | "**100.50" |
0 | "****0.00" | |
PIC X(3)BX(3)BX(3) | "ABCDEFGHI" | "ABC DEF GHI" |
Nutzungsklausel
Das USAGE
Klausel deklariert, dass die Formatdaten gespeichert sind. Abhängig vom Datentyp kann sie entweder ergänzen oder anstelle von verwendet werden. PICTURE
Klausel. Während es verwendet werden kann, um Zeiger und Objektreferenzen zu deklarieren, ist es hauptsächlich auf die Angabe numerischer Typen ausgerichtet. Diese numerischen Formate sind:[140]
- Binär, wobei eine Mindestgröße entweder durch die angegeben wird
BILD
Klausel oder durch aVERWENDUNGSZWECK
Klausel wieBinärdauer
. -
USAGE COMPUTATIONAL
, wo Daten in welchem Format die Implementierung enthalten können; oft äquivalent zuUSAGE BINARY
-
USAGE DISPLAY
, das Standardformat, bei dem Daten als Zeichenfolge gespeichert werden - Schwimmpunkt in einem implementierungsabhängigen Format oder nach IEEE 754.
-
USAGE NATIONAL
, wobei Daten als Zeichenfolge unter Verwendung eines erweiterten Zeichensatzes gespeichert werden -
USAGE PACKED-DECIMAL
, wo Daten im kleinstmöglichen Dezimalformat gespeichert werden (normalerweise gepackte binär codierte Dezimalzahl)
Berichtsschreiber
Der Berichtsschreiber ist ein deklarative Einrichtung zum Erstellen von Berichten. Der Programmierer muss nur das Berichtslayout und die Daten angeben, die zum Erstellen erforderlich sind, und befreit sie von Code, um Dinge wie Seitenpausen, Datenformatierung sowie Überschriften und Fundamente zu verarbeiten.[141]
Berichte sind mit Berichtsdateien zugeordnet, die Dateien sind, die möglicherweise nur über Berichtsschreiberanweisungen geschrieben werden.
FD Bericht BERICHT Verkaufsbericht.
Jeder Bericht ist im Berichtsabschnitt der Datenabteilung definiert. Ein Bericht wird in Berichtsgruppen aufgeteilt, die die Überschriften, Fundamente und Details des Berichts definieren. Berichte arbeiten hierarchisch Kontrollbrüche. Kontrollpausen treten auf, wenn eine Schlüsselvariable den Wert ändert. Wenn beispielsweise ein Bericht erstellt wird, in dem die Bestellungen der Kunden beschrieben werden, kann eine Kontrollpause auftreten, wenn das Programm die Bestellungen eines anderen Kunden erreicht. Hier ist eine Beispiel -Berichtsbeschreibung für einen Bericht, der den Verkauf eines Verkäufers enthält und die vor ungültigen Aufzeichnungen warnt:
Rd Verkaufsbericht SEITE Grenzen 60 LINIEN ERSTE DETAIL 3 Kontrollen Name des Verkäufers. 01 TYP SEITE ÜBERSCHRIFT. 03 Col 1 WERT "Verkaufsbericht". 03 Col 74 WERT "Buchseite". 03 Col 79 Bild Z9 QUELLE Seitenbezüge. 01 Vertriebsanwalt TYP DETAIL, LINIE + 1. 03 Col 3 WERT "Verkäufe auf". 03 Col 12 Bild 99/99/9999 QUELLE Verkaufsdatum. 03 Col 21 WERT "war". 03 Col 26 Bild $$$$ 9,99 QUELLE Verkaufsmenge. 01 Ungültige Verkäufe TYP DETAIL, LINIE + 1. 03 Col 3 WERT "Ungültiger Datensatz:". 03 Col 19 Bild X (34) QUELLE Verkaufsrekord. 01 TYP KONTROLLE ÜBERSCHRIFT Name des Verkäufers, LINIE + 2. 03 Col 1 WERT "Verkäufer:". 03 Col 9 Bild X (30) QUELLE Name des Verkäufers.
Die obige Berichtsbeschreibung beschreibt das folgende Layout:
Verkaufsbericht Seite 1 Verkäufer: Der Verkauf von Howard Bromberg am 12.10.2008 betrug 1000,00 USD am 12.12.2008 den Verkauf von 0,00 USD am 13.01.2008. Seite 12 Verkäufe am 08.05.2014 betrugen 543,98 USD Ungültiger Rekord: William Selden 12o52014Foofoo Umsatz am 30.05.2014 betrugen 0,00 USD.
Vier Aussagen kontrollieren den Berichtsschreiber: INITIATE
, der den Berichtsschreiber auf den Druck vorbereitet; GENERATE
, die eine Berichtsgruppe druckt; SUPPRESS
, der den Druck einer Berichtsgruppe unterdrückt; und TERMINATE
, was die Berichtsverarbeitung endet. Für das obige Beispiel für Verkaufsbericht könnte die Verfahrensabteilung so aussehen:
OFFEN EINGANG Verkauf, AUSGANG Bericht EINLEITEN Verkaufsbericht AUSFÜHREN BIS UM 1 <> 1 LESEN Verkauf BEI ENDE AUSFAHRT AUSFÜHREN Endlese BESTÄTIGEN Verkaufsrekord WENN gültiges Rekord GENERIEREN Vertriebsanwalt ANDERS GENERIEREN Ungültige Verkäufe End-wenn Endleistung KÜNDIGEN Verkaufsbericht NAH DRAN Verkauf, Bericht .
Die Nutzung der Einrichtung des Berichtsschreibers variierte tendenziell erheblich; Einige Organisationen benutzten es ausgiebig und andere überhaupt nicht.[142] Darüber hinaus reichten die Implementierungen des Berichtsschreibers an Qualität, wobei diejenigen am unteren Ende manchmal zur Laufzeit übermäßige Mengen an Speicher verwendet wurden.[142]
Verfahrensabteilung
Verfahren
Die Abschnitte und Absätze in der Verfahrensabteilung (gemeinsam als Verfahren bezeichnet) können als verwendet werden Etiketten und so einfach Unterroutinen. Im Gegensatz zu anderen Abteilungen müssen Absätze nicht in Abschnitten sein.[143] Die Ausführung fällt durch die Verfahren eines Programms, bis es beendet wird.[144] Um Verfahren als Unterprogramme zu verwenden, die PERFORM
Verb wird verwendet.
A PERFORM
Die Aussage ähnelt etwas einem Verfahrensaufruf in einer modernen Sprache in dem Sinne, dass die Ausführung dem Code nach dem der dem nachgegebenen Code zurückkehrt PERFORM
Anweisung am Ende des genannten Code; Es bietet jedoch keinen Mechanismus für Parameterübergang oder für die Rückgabe eines Ergebniswerts. Wenn eine Unterprogramme unter Verwendung einer einfachen Anweisung wie aufgerufen wird PERFORM subroutine
und dann kehrt die Steuerung am Ende des aufgerufenen Verfahrens zurück. Jedoch, PERFORM
ist insofern ungewöhnlich, als es verwendet werden kann, um einen Bereich über eine Sequenz mehrerer benachbarter Verfahren aufzurufen. Dies geschieht mit dem PERFORM sub-1 THRU sub-n
konstruieren:
VERFAHREN so und so. AUSFÜHREN ALPHA AUSFÜHREN ALPHA DURCH GAMMA PAUSE LAUF. ALPHA. ANZEIGE 'EIN'. BETA. ANZEIGE 'B'. GAMMA. ANZEIGE 'C'.
Die Ausgabe dieses Programms wird: "a a b c" sein.
PERFORM
Unterscheidet sich auch von herkömmlichen Verfahrensaufrufen, da es zumindest traditionell keine Vorstellung eines Anrufstacks gibt. Infolgedessen sind verschachtelte Aufrufe möglich (eine Abfolge von Code -Sein PERFORM
'Ed kann a ausführen PERFORM
Anweisung selbst), aber zusätzliche Sorgfalt erfordern, wenn Teile desselben Codes von beiden Aufrufe ausgeführt werden. Das Problem tritt auf, wenn der Code im inneren Aufruf den Ausgangspunkt der äußeren Aufruf erreicht. Formell formell, wenn die Kontrolle durch den Ausgangspunkt von a verläuft PERFORM
Der COBOL 2002 -Standard wurde früher genannt, der früher genannt wurde, aber offiziell vorliegt, dass das Verhalten ist, dass das Verhalten ist nicht definiert.
Der Grund dafür ist, dass COBOL und nicht eine "Rückgabeadresse" mit einer sogenannten Fortsetzung der Adresse arbeitet. Wenn der Kontrollfluss das Ende eines Verfahrens erreicht, wird die Fortsetzungsadresse nachgeschlagen und die Steuerung in diese Adresse übertragen. Bevor das Programm ausführt PERFORM
Aussagen ereignen sich, die Steuerung fließt von oben nach unten durch das Programm. Aber wenn a PERFORM
Die Anweisung wird ausgeführt, sie ändert die Fortsetzung der angefertigten Prozedur (oder die letzte Prozedur des aufgerufenen Bereichs, wenn PERFORM THRU
wurde verwendet), so dass die Kontrolle am Ende zur Anrufstelle zurückkehrt. Der ursprüngliche Wert wird gespeichert und danach wiederhergestellt, aber es gibt nur eine Speicherposition. Wenn zwei verschachtelte Aufrufe auf überlappenden Code arbeiten, können sie die Verwaltung der Fortsetzung der Fortsetzung auf verschiedene Weise einmischen.[145][146]
Das folgende Beispiel (genommen von Veerman & Verhoeven 2006) illustriert das Problem:
Label1. ANZEIGE '1' AUSFÜHREN Label2 DURCH Label3 PAUSE LAUF. Label2. ANZEIGE '2' AUSFÜHREN Label3 DURCH Label4. Label3. ANZEIGE '3'. Label4. ANZEIGE '4'.
Man könnte erwarten, dass die Ausgabe dieses Programms "1 2 3 4 3" lautet: Nach der Anzeige "2", die zweite PERFORM
verursacht "3" und "4", und dann wird der erste Aufruf mit "3" fortgesetzt. In traditionellen COBOL -Implementierungen ist dies nicht der Fall. Vielmehr die erste PERFORM
Die Anweisung legt die Fortsetzung der Adresse am Ende von fest LABEL3
so dass es zurück zum Anrufe in Innenseite springt LABEL1
. Der Zweite PERFORM
Die Anweisung legt die Rückgabe am Ende von fest LABEL4
ändert jedoch nicht die Fortsetzung der Adresse von LABEL3
erwarten, dass es die Standard -Fortsetzung ist. Wenn der innere Aufruf am Ende von ankommt LABEL3
, es springt zurück zum Außenbereich PERFORM
Aussage, und das Programm hört auf, nur "1 2 3" gedruckt zu haben. Andererseits in einigen COBOL-Implementierungen wie dem Open-Source-Tinycobol-Compiler die beiden PERFORM
Aussagen stören sich nicht miteinander und die Ausgabe ist in der Tat "1 2 3 4 3". Daher ist das Verhalten in solchen Fällen nicht nur (vielleicht) überraschend, sondern auch nicht tragbar.[146]
Eine besondere Folge dieser Einschränkung ist das PERFORM
Kann nicht verwendet werden, um rekursive Code zu schreiben. Ein weiteres einfaches Beispiel, um dies zu veranschaulichen (leicht vereinfacht von Veerman & Verhoeven 2006):
BEWEGUNG 1 ZU A AUSFÜHREN ETIKETT PAUSE LAUF. ETIKETT. ANZEIGE A WENN A < 3 HINZUFÜGEN 1 ZU A AUSFÜHREN ETIKETT End-wenn ANZEIGE 'ENDE'.
Man könnte erwarten, dass die Ausgabe "1 2 3 End End" ist, und dies ist das, was einige Cobol -Compiler produzieren. Aber einige Compiler, wie IBM COBOL, produzieren Code, der "1 2 3 End End End ..." und so weiter druckt, das "Ende" immer wieder in einer endlosen Schleife druckt. Da es nur begrenzte Platz gibt, um Backup -Fortsetzungsadressen zu speichern, werden die Backups im Verlauf der rekursiven Aufrufe überschrieben, und alles, was wiederhergestellt werden kann DISPLAY 'END'
.[146]
Aussagen
COBOL 2014 hat 47 Aussagen (auch genannt Verben),[147] Dies kann in die folgenden breiten Kategorien eingeteilt werden: Kontrollfluss, E/O, Datenmanipulation und der Berichtsschreiber. Die Aussagen der Berichtsschreiber sind in der behandelt Berichtsschreiber Abschnitt.
Steuerfluss
Cobols Bedingte Aussagen sind IF
und EVALUATE
. EVALUATE
ist ein Schaltartige Anweisung mit der zusätzlichen Fähigkeit zur Bewertung mehrerer Werte und Bedingungen. Dies kann zur Implementierung verwendet werden Entscheidungstabellen. Zum Beispiel könnte Folgendes verwendet werden, um a zu steuern CNC Drehmaschine:
AUSWERTEN STIMMT AUCH Wünschendgeschwindigkeit AUCH momentane Geschwindigkeit WENN Deckel geschlossen AUCH Minspeed DURCH Höchstgeschwindigkeit AUCH WENIGER ALS Wünschendgeschwindigkeit AUSFÜHREN Geschwindigkeitsmaschine WENN Deckel geschlossen AUCH Minspeed DURCH Höchstgeschwindigkeit AUCH Größer ALS Wünschendgeschwindigkeit AUSFÜHREN Verlangsamung WENN Deckel AUCH IRGENDEIN AUCH NICHT NULL AUSFÜHREN Not-Halt WENN SONSTIGES FORTSETZEN Endbewertung
Das PERFORM
Die Anweisung wird verwendet, um Schleifen zu definieren, die ausgeführt werden bis um Eine Bedingung ist wahr (nicht während wahr, was in anderen Sprachen häufiger vorkommt). Es wird auch verwendet, um Verfahren oder Verfahrensbereiche aufzurufen (siehe die Verfahren Abschnitt für mehr Details). CALL
und INVOKE
Rufen Sie Unterprogramme bzw. Methoden auf. Der Name des Subprogramms/der Methode ist in einer Zeichenfolge enthalten, die ein wörtlicher oder ein Datenelement sein kann.[148] Parameter können übergeben werden durch Bezugnahme, durch Inhalt (wo eine Kopie durch Referenz übergeben wird) oder nach Wert (aber nur wenn a Prototyp ist verfügbar).[149] CANCEL
Entladen Unterprogramme aus dem Speicher. GO TO
führt dazu, dass das Programm zu einem bestimmten Verfahren springt.
Das GOBACK
Aussage ist a Rückgabeerklärung und die STOP
Die Erklärung stoppt das Programm. Das EXIT
Die Anweisung hat sechs verschiedene Formate: Es kann als Rückgabeanweisung verwendet werden, a Break -Erklärung, a Fortsetzung der Aussage, ein Endmarker oder um ein Verfahren zu hinterlassen.[150]
Ausnahmen werden von a angehoben RAISE
Aussage und mit einem Handler gefangen, oder deklarativ, definiert in der DECLARATIVES
Teil der Verfahrensabteilung. Deklarative sind Abschnitte, die mit a beginnen USE
Anweisung, die die zu behandelnden Fehler angeben. Ausnahmen können Namen oder Objekte sein. RESUME
wird in einer Deklarativ verwendet, um zur Aussage nach derjenigen zu springen, die die Ausnahme oder zu einem Verfahren außerhalb des DECLARATIVES
. Im Gegensatz zu anderen Sprachen kann das Programm nicht beendet werden, und das Programm kann nicht betroffen sein.
I/o
Die Datei-E/A wird durch die Selbstbeschreibung behandelt OPEN
, CLOSE
, READ
, und WRITE
Aussagen zusammen mit weiteren drei: REWRITE
, was einen Datensatz aktualisiert; START
, die nachfolgende Datensätze auswählt, die zugreifen können, indem ein Datensatz mit einem bestimmten Schlüssel ermittelt wird; und UNLOCK
, was a freigibt a sperren auf den letzten Datensatz zugegriffen.
Benutzerinteraktion erfolgt mit Verwendung ACCEPT
und DISPLAY
.
Datenmanipulation
Die folgenden Verben manipulieren Daten:
-
INITIALIZE
, der Datenelemente auf ihre Standardwerte festlegt. -
MOVE
, die zuweist Werte für Datenelemente; Entsprechend bewegen weist entsprechende gleichbezeichnete zu Felder. -
SET
, mit 15 Formaten: Es kann Indizes ändern, Objektreferenzen zuweisen und Tabellenkapazitäten unter anderem verändern.[151] -
ADD
,SUBTRACT
,MULTIPLY
,DIVIDE
, undCOMPUTE
, die mit Arithmetik umgehen (mitCOMPUTE
Zuweisen des Ergebniss einer Formel einer Variablen). -
ALLOCATE
undFREE
, welcher Handle Dynamischer Speicher. -
VALIDATE
, der Daten validiert und verteilt, wie in der Beschreibung eines Elements im Datenbereich angegeben. -
STRING
undUNSTRING
, die verketten und geteilt Saiten, beziehungsweise. -
INSPECT
, was übergeordnete Fälle übergeht oder ersetzt Substrings Innerhalb einer Zeichenfolge. -
SEARCH
, die eine Tabelle nach dem ersten Eintrag durchsucht, der eine Bedingung erfüllt.
Dateien und Tabellen werden sortiert mithilfe SORT
und die MERGE
Verb verschmiert und sortiert Dateien. Das RELEASE
Verb liefert Datensätze zur Sortierung und RETURN
Ruft die sortierten Datensätze in der Reihenfolge ab.
Umfangsabschluss
Einige Aussagen wie z. IF
und READ
, kann selbst Aussagen enthalten. Solche Aussagen können auf zwei Arten beendet werden: nach einem Zeitraum (implizite Beendigung), was endet alle Unterminierte Aussagen enthielten oder durch einen Zielfernrohr -Terminator, der die nächstgelegene übereinstimmende Erklärung beendet.
*> Terminatorperiode ("implizite Terminierung") WENN Ungültiges Rekord WENN No-More-Records NÄCHSTE SATZ ANDERS LESEN Rekorddatei BEI ENDE EINSTELLEN No-More-Records ZU STIMMT. *> Umfang Terminatoren ("explizite Kündigung") WENN Ungültiges Rekord WENN No-More-Records FORTSETZEN ANDERS LESEN Rekorddatei BEI ENDE EINSTELLEN No-More-Records ZU STIMMT Endlese End-wenn End-wenn
Mit einem Zeitraum beendete verschachtelte Aussagen sind eine häufige Quelle für Fehler.[152][153] Untersuchen Sie beispielsweise den folgenden Code:
WENN x ANZEIGE y. ANZEIGE z.
Hier ist die Absicht zu zeigen y
und z
Wenn Bedingung x
ist wahr. Jedoch, z
wird angezeigt, was auch immer der Wert von x
weil die WENN
Die Aussage wird nach einem fehlerhaften Zeitraum danach beendet DISPLAY y
.
Ein weiterer Fehler ist ein Ergebnis der sonst ein Problem baumeln, wenn zwei WENN
Aussagen können mit einem assoziieren ANDERS
.
WENN x WENN y ANZEIGE a ANDERS ANZEIGE b.
Im obigen Fragment die ANDERS
Mitarbeiter mit demIF y
Aussage statt derIF x
Anweisung, einen Fehler verursacht. Vor der Einführung explizite Umfangsanschlüsse würde die Verhinderung der Verhinderung erfordernELSE NEXT SENTENCE
nach dem inneren platzieren WENN
.[153]
Selbstmodifizierender Code
Die ursprüngliche (1959) COBOL -Spezifikation unterstützte die berüchtigteALTER X TO PROCEED TO Y
Aussage, für die viele Compiler generierten selbstmodifizierender Code. X
und Y
sind Verfahrensbezeichnungen und die SingleGO TO
Anweisung in Verfahren X
nach solchen ausgeführt ALTER
Aussage bedeutetGO TO Y
stattdessen. Viele Compiler unterstützen es immer noch,[154] Aber es wurde als angesehen obsolet im COBOL 1985 Standard und 2002 gelöscht.[155]
Das ALTER
Die Aussage wurde schlecht angesehen, weil sie "Kontextort" untergrub und die Gesamtlogik eines Programms schwer zu verstehen machte.[156] Als Lehrbuchautor Daniel D. McCracken schrieb 1976, als "jemand, der das Programm noch nie gesehen hat Signalübertragung wie die Existenz einer unbekannten Anzahl von Altersaussagen an unbekannten Orten während des gesamten Programms schlägt Angst im Herzen des mutigsten Programmierers. "[156]
Hallo Welt
EIN "Hallo Welt"Programm in COBOL:
IDENTIFIKATION AUFTEILUNG. Programm-ID. Hallo Welt. VERFAHREN AUFTEILUNG. ANZEIGE "Hallo Welt!" .
Wenn die - jetzt berühmt - "Hallo Welt!" Programm Beispiel in Die C -Programmiersprache wurde erstmals 1978 veröffentlicht. Eine ähnliche Mainframe -COBOL -Programmprobe wäre durch eingereicht worden JCl, sehr wahrscheinlich mit einem Punschkartenleser und 80 Säulenpunschkarten. Die Auflistung unten, mit einer leeren Datenteilung, wurde mit Linux und dem System/370 getestet Hercules Emulator laufend MVS 3.8J. Die im Juli 2015 geschriebene JCL stammt aus den Hercules -Tutorials und Proben, die von Jay Moseley veranstaltet werden.[157] In Übereinstimmung mit der COBOL -Programmierung dieser Zeit wird die Welt in allen Großbuchstaben angezeigt.
//Kobuklg ARBEIT (001),'COBOL -Basistest', 00010000 // KLASSE=A,MSGCLASS=A,Msglevel=(1,1) 00020000 //Basisste Geschäftsführer Kobuklg 00030000 //COB.SYSIN Dd * 00040000 00000* VALIDIERUNG VON BASE Cobol INSTALLIEREN 00050000 01000 IDENTIFIKATION AUFTEILUNG. 00060000 01100 Programm-ID. 'HALLO'. 00070000 02000 UMGEBUNG AUFTEILUNG. 00080000 02100 AUFBAU SEKTION. 00090000 02110 Quellkomputer. Gnulinux. 00100000 02120 Objektkomputer. HERKULES. 00110000 02200 Spezialnamen. 00120000 02210 KONSOLE IST Consl. 00130000 03000 DATEN AUFTEILUNG. 00140000 04000 VERFAHREN AUFTEILUNG. 00150000 04100 00-HAUPTSÄCHLICH. 00160000 04110 ANZEIGE 'HALLO WELT' AUF Consl. 00170000 04900 PAUSE LAUF. 00180000 //Lked.Syslib Dd Dsname=Sys1.Coblib,Disp=Shr 00190000 // Dd Dsname=Sys1.Linklib,Disp=Shr 00200000 //GEHEN.SYSPRINT Dd System=A 00210000 // 00220000
Nach dem Einreichen der JCL wurde die MVS -Konsole angezeigt:
19.52.48 Job 3 $ HaSP100 COBUCLG auf Reader1 COBOL -Basistest 19.52.48 Job 3 IEF677I Warnmeldung (en) für Job COBUCLG Ausgestellt 19.52.48 Job 3 $ HASP373 COBUCLG GESEHEN - INIT 1 - Klasse A - SYS BSP1 19.52.48 Job 3 IEC130I SYSPUNCH DD AUSGABE MISSIERT 19.52.48 Job 3 IEC130i SYSLIB DD Aussage fehlen 19.52.48 Job 3 IEC130i SYSPUNK DD AUSGABE MISSIERT 19.52.48 Job 3 IEFACTRT - STEPNAME PROGRECT RETCODE 19.52.48 JOB 3 COBUCLG BACKTEST COBSET COB IKFCBL00 RC = 0000 0000 19.52 .48 Job 3 COBUCLG BASTEST LKED IEWL RC = 0000 19.52.48 Job 3 +Hallo, Welt 19.52.48 Job 3 COBUCLG BASTEST GO PGM =*. DD RC = 0000 19.52.48 HOB 3 $ HASP395 COBUCLG ENDET
Zeile 10 der obigen Konsolenliste wird für die Wirkung hervorgehoben. Das Hervorheben ist nicht Teil der tatsächlichen Konsolenausgabe.
Die zugehörige Compiler -Auflistung wurde auf vier Seiten technischer Detail- und Jobläufen für die einzelnen Ausgabezeile aus den 14 Zeilen von COBOL generiert.
Rezeption
Mangel an Struktur
In den 1970er Jahren die Annahme der Strukturierte Programmierung Das Paradigma wurde immer weit verbreitet. Edsger Dijkstra, ein herausragender Informatiker, schrieb a Leserbrief von Kommunikation der ACM, veröffentlicht 1975 mit dem Titel "Wie sagen wir Wahrheiten, die schaden könnten?" Bemerkung, dass "die Verwendung von Cobol den Geist verkrüppelt".[158] In einem veröffentlichten Dissens zu Dijkstra's Bemerkungen behauptete der Informatiker Howard E. Tompkins, dass dies das unstrukturiert COBOL wurde in der Regel "von Programmierern geschrieben, die noch nie den Vorteil eines strukturierten Cobols gut gelehrt hatten", und argumentierten, dass das Problem in erster Linie eine Ausbildung sei.[159]
Eine Ursache von Spaghetti -Code war das GO TO
Aussage. Versuche zu entfernen GO TO
S aus dem COBOL -Code führte jedoch zu verschlungenen Programmen und reduzierter Codequalität.[160] GO TO
s wurden größtenteils durch die ersetzt PERFORM
Aussage und Verfahren, die gefördert wurden Modulare Programmierung[160] und gab einen einfachen Zugang zu leistungsstarken Schleifeneinrichtungen. Jedoch, PERFORM
Könnte nur mit Verfahren verwendet werden, sodass Schleifenkörper nicht dort lokalisiert waren, wo sie verwendet wurden, wodurch Programme schwerer zu verstehen waren.[161]
COBOL -Programme waren berüchtigt, um monolithisch zu sein und die Modularisation zu fehlen.[162] Der COBOL -Code konnte nur durch Verfahren modularisiert werden, die für große Systeme unzureichend sind. Es war unmöglich, den Zugriff auf Daten einzuschränken, was bedeutet, dass ein Verfahren zugreifen und ändern konnte irgendein Datenelement. Darüber hinaus gab es keine Möglichkeit zu bestehen Parameter Zu einem Verfahren, ein ausgelassener Jean Sammet, der als größter Fehler des Ausschusses angesehen wird.[163] Eine andere Komplikation ergab sich aus der Fähigkeit zu PERFORM THRU
Eine bestimmte Abfolge von Verfahren. Dies bedeutete, dass die Kontrolle zu jedem Verfahren springen und zurückkehren konnte, um einen verworrenen Steuerfluss zu erzeugen und einem Programmierer das Brechen der Brechen zu ermöglichen Single-Entry-Single-Exit Regel.[164]
Diese Situation verbesserte sich, als COBOL mehr Funktionen einnahm. COBOL-74 fügte Unterprogramme hinzu, wodurch Programmierer die Möglichkeit geben, die Daten zu steuern, die jeder Teil des Programms zugreifen könnte. COBOL-85 fügte dann verschachtelte Unterprogramme hinzu, sodass Programmierer Unterprogramme verbergen konnten.[165] Eine weitere Kontrolle über Daten und Code erfolgte 2002, als objektorientierte Programmierung, benutzerdefinierte Funktionen und benutzerdefinierte Datentypen einbezogen wurden.
Dennoch verwendet viel wichtige Legacy -COBOL -Software unstrukturierte Code, was nicht wachbar ist. Es kann zu riskant und kostspielig sein, selbst einen einfachen Codeabschnitt zu ändern, da es auf unbekannte Weise von unbekannten Orten verwendet werden kann.[166]
Kompatibilitätsprobleme
COBOL sollte eine hoch tragbare "gemeinsame" Sprache sein. Bis 2001 wurden jedoch rund 300 Dialekte erstellt.[167] Eine Dialektquelle war der Standard selbst: Der Standard von 1974 bestand aus einem obligatorischen Kern und elf funktionellen Modulen, die jeweils zwei oder drei Stützniveaus enthielten. Dies erlaubte 104.976 offizielle Varianten.[168]
COBOL-85 war nicht vollständig mit früheren Versionen kompatibel und seine Entwicklung war umstritten. Joseph T. Brophy, die CIO von Reisende Versicherung, leitete sich bemüht, COBOL -Benutzer über die starken Reprogrammierungskosten für die Implementierung des neuen Standards zu informieren.[169] Infolgedessen erhielt das ANSI -COBOL -Komitee mehr als 2.200 Briefe von der Öffentlichkeit, meist negativ, und forderte das Komitee, Änderungen vorzunehmen. Auf der anderen Seite wurde angenommen, dass die Umwandlung auf COBOL-85 in den zukünftigen Jahren die Produktivität steigern und so die Umwandlungskosten rechtfertigt.[170]
Ausführliche Syntax
Eine schwache, ausführliche und schlechte Sprache, die von Code -Schleifern verwendet wird, um langlebige Dinge auf Dinosaurier -Mainframes zu erledigen. [...] Sein Name wird selten ohne rituelle Ausdrücke von Ekel oder Horror ausgesprochen.
Die Jargon -Datei 4.4.8.[171]
Die COBOL -Syntax wurde oft wegen ihrer Ausführlichkeit kritisiert. Befürworter sagen, dass dies den Code erstellen sollte Selbstdokumentation, Lockerungsprogrammwartung.[172] COBOL sollte auch für Programmierer leicht lernen und verwenden.[173] während sie dennoch nicht technisch-personal wie Manager lesbar sind.[174][175][176][177] Der Wunsch nach Lesbarkeit führte zur Verwendung von englischähnlichen Syntax- und Strukturelementen wie Substantiven, Verben, Klauseln, Sätzen, Abschnitten und Abteilungen. Bis 1984 kämpften die Inhaber von COBOL -Programmen, sich mit dem "unverständlichen" Code zu befassen[176] Und die Hauptänderungen in COBOL-85 waren da, um die Wartung zu erleichtern.[91]
Jean Sammet, ein Mitglied des Kurzstreckenkomitees, stellte fest, dass "nur wenig Versuch unternommen wurde, dem professionellen Programmierer gerecht zu werden, in der Tat Menschen, deren Hauptinteresse das Programmieren ist, in der Regel sehr unzufrieden mit COBOL", was sie auf Cobols ausführliche Syntax zurückführte.[178]
Isolation aus der Informatikgemeinschaft
Die COBOL -Community wurde immer von der Informatikgemeinschaft isoliert. Keine akademischen Informatiker nahmen an der Gestaltung von COBOL teil: Alle im Ausschuss stammten aus dem Handel oder der Regierung. Computerwissenschaftler waren zu dieser Zeit mehr an Bereichen wie numerischen Analysen, Physik und Systemprogrammierung als an den kaufmännischen Dateiverarbeitungsproblemen interessiert, die COBOL-Entwicklung angegangen ist.[179] Jean Sammet führte die Unbeliebtheit von COBOL auf eine anfängliche "Snob -Reaktion" zurück, da der Mangel an einflussreichen Informatikern, die am Entwurfsprozess beteiligt waren, und einer Verachtung für die Verarbeitung von Geschäftsdaten.[180] Die COBOL -Spezifikation verwendete eine einzigartige "Notation" oder Metallanguage, um seine Syntax und nicht die Neue zu definieren Backus -Naur -Form was das Komitee nicht wusste. Dies führte zu einer "schweren" Kritik.[181][182][69]
Später litt Cobol unter einem Mangel an Material, das es bedeckte; Es dauerte bis 1963, bis Einführungsbücher erschienen waren (mit Richard D. Irwin veröffentlichte 1966 ein College -Lehrbuch über COBOL).[183] Bis 1985 gab es doppelt so viele Bücher auf Forran und viermal so viele auf Basic wie auf COBOL in der Kongressbibliothek.[123] Universitätsprofessoren unterrichteten modernere, hochmoderne Sprachen und Techniken anstelle von COBOL, die eine "Handelsschule" -Fature haben sollen.[184] Donald Nelson, Vorsitzender des Codasyl -Cobol -Komitees, sagte 1984, dass "Akademiker ... Hass Cobol" und dass Absolventen der Informatik "Cobol" in sie gebohrt hätten.[185]
Mitte der 1980er Jahre gab es beispielsweise auch eine erhebliche Herablassung gegenüber COBOL in der Geschäftswelt von Nutzern anderer Sprachen Forran oder Assembler, was impliziert, dass COBOL nur für Nicht-Challenging-Probleme verwendet werden kann.[186]
Im Jahr 2003 war COBOL in 80% von vorgestellt Informationssysteme Lehrpläne in den Vereinigten Staaten, der gleiche Verhältnis wie C ++ und Java.[187] Zehn Jahre später eine Umfrage von Micro Focus stellte fest, dass 20% der Universitätsakademiker dachten, COBOL sei veraltet oder tot und 55% glaubten, dass ihre Schüler der Meinung waren, dass Cobol veraltet oder tot sei. Dieselbe Umfrage ergab auch, dass nur 25% der Akademiker COBOL -Programmierung in ihrem Lehrplan hatten, obwohl 60% der Ansicht waren, dass sie sie unterrichten sollten.[188]
Bedenken hinsichtlich des Designprozesses
Zweifel an der Kompetenz des Standardausschusses. Howard Bromberg, Mitglied des kurzfristigen Komitees, sagte, dass es "wenig Kontrolle" über den Entwicklungsprozess gebe und dass es "von der Diskontinuität des Personals und ... einem Mangel an Talent" geplagt wurde.[79] Jean Sammet und Jerome Garfunkel stellten außerdem fest, dass in einer Überarbeitung des Standards in der nächsten Änderungen in der nächsten Überarbeitung ebenso zurückgekehrt würden, um Änderungen im Standardausschuss in Bezug auf objektive Beweise zu tun.[189]
COBOL-Standards haben wiederholt unter Verzögerungen gelitten: COBOL-85 kam fünf Jahre später als erhofft an,[190] COBOL 2002 war fünf Jahre zu spät,[2] Und Cobol 2014 war sechs Jahre zu spät.[99][191] Um Verzögerungen zu bekämpfen, erlaubte das Standardkomitee die Erstellung optionaler Addenda, das Funktionen schneller hinzufügen würde als durch das Warten auf die nächste Standardrevision. Einige Mitglieder des Ausschusses äußerten jedoch Bedenken hinsichtlich der Inkompatibilität zwischen Implementierungen und häufigen Änderungen des Standards.[192]
Einflüsse auf andere Sprachen
Die Datenstrukturen von COBOL beeinflussten nachfolgende Programmiersprachen. Seine Datensatz- und Dateistruktur beeinflusst Pl/i und Pascal, und die Neu definiert
Klausel war ein Vorgänger von Pascals Variantenaufzeichnungen. Explizite Dateistrukturdefinitionen gingen der Entwicklung von voraus Datenbankmanagementsystem und aggregierte Daten waren ein signifikanter Fortschritt gegenüber den Arrays von Forran.[123] BILD
Datenerklärungen wurden in PL/I mit geringfügigen Änderungen einbezogen.
Cobols COPY
Einrichtung, obwohl als "primitiv", obwohl[193] beeinflusste die Entwicklung von Richtlinien einbeziehen.[123]
Der Fokus auf Portabilität und Standardisierung führte dazu, dass Programme, die in COBOL geschrieben wurden, tragbar und die Ausbreitung der Sprache auf eine Vielzahl von Hardwareplattformen und Betriebssystemen erleichtert werden könnten.[194] Darüber hinaus schränkt die genau definierte Teilungsstruktur die Definition externer Verweise auf die Umweltabteilung ein, was insbesondere die Plattformänderungen vereinfacht.[195]
Siehe auch
- Alphabetische Liste der Programmiersprachen
- Blis/COBOL
- COBOL -Ressource
- Codasyl
- Vergleich der Programmiersprachen
- Generationsliste von Programmiersprachen § COBOL basiert
- Liste der Compiler § COBOL -Compiler
Anmerkungen
- ^ Insgesamt beeinflusste die objektorientierten Merkmale von Cobol 2002.[2][3][4]
- ^ Der Grabstein ist derzeit bei der Computergeschichte Museum.[63]
- ^ a b Der Leser sollte gewarnt werden, dass obwohl der 1997 Gartner -Gruppe Die Studie wird allgegenwärtig mit einem berühmten Zitat "200 Milliarden Zeilen COBOL" bezeichnet. Der tatsächliche Bericht ist schwer zu finden.[196] Darüber hinaus spekulieren einige[197] Das "die einzige Beteiligung von Gartner an diesen Zahlen" war die Studie von 1995[198] Was "prognostizierte, dass die Behebung des Y2K -Fehlers 1 US -Dollar pro Zeile oder insgesamt 300 Milliarden US -Dollar kosten würde", was die Fehlinterpretation des Berichts verursachte.
- ^ Herstellerspezifische Erweiterungen bewirken viele Implementierungen weit mehr: Eine Implementierung erkennt über 1.100 Schlüsselwörter an.[120]
Verweise
Zitate
- ^ a b Sammet, Jean E. (März 2000). "Die echten Schöpfer von Cobol". IEEE -Software. 17 (2): 30–32. doi:10.1109/52.841602. ISSN 1937-4194.
Das Kurzstreckenkomitee arbeitete ab Juni 1959 fleißig, aber es gab große Schwierigkeiten, ein ziemlich großes Komitee zu haben, um eine Programmiersprache zu schaffen. Im November ernannte der Vorsitzende des Kurzstreckenkomitees sechs Personen, um Spezifikationen für die Prüfung zu entwickeln: William Selden und Gertrude Tierney (IBM), Howard Bromberg und Norman Rabatt (RCA) sowie Vernon Reeves und Jean E. Sammet (Sylvania Electric Products). Wir haben im November 1959 für zwei volle Wochen (einschließlich einiger rund um die Uhr Sitzungen) gearbeitet und die vorgeschlagenen Spezifikationen an das vollständige Kurzstreckenkomitee gesendet, das fast alle von ihnen akzeptierte. Nach einigen Bearbeitungen (von denselben sechs Personen) haben wir die Spezifikationen als Abschlussbericht im Dezember dem Exekutivkomitee ausgegeben, das sie im Januar 1960 akzeptierte. Nach weiteren Bearbeitung gab das Regierungsprotokoll COBOL 60 heraus. [. .] [Grace Hopper] nahm nicht an seiner Arbeit teil, außer durch die allgemeine Anleitung, die sie ihren Mitarbeitern gab, die direkte Ausschussmitglieder waren. Während ihr indirekter Einfluss sehr wichtig war, sind die häufigen wiederholten Aussagen, dass "Grace Hopper Cobol entwickelt" oder "Grace Hopper war ein Codeentwickler von Cobol" oder "Grace Hopper ist die Mutter von Cobol" nicht korrekt.
- ^ a b c Saade, Henry; Wallace, Ann (Oktober 1995). "COBOL '97: Ein Statusbericht". Dr. Dobbs Journal. Archiviert von das Original am 22. April 2014. Abgerufen 21. April 2014.
- ^ a b Arranga, Edmund C.; Coyle, Frank P. (Februar 1998). Objektorientierter Cobol. Cambridge University Press. p. fünfzehn. ISBN 978-0132611404.
Objektorientierter Cobols Stil spiegelt den Einfluss von SmallTalk und C ++ wider.
- ^ Arranga, Edmund C.; Coyle, Frank P. (März 1997). "COBOL: Wahrnehmung und Realität". Computer. 30 (3): 127. doi:10.1109/2.573683. ISSN 0018-9162.
- ^ Imajo, Tetsuji; et al. (September 2000). COBOL-Skript: Eine geschäftsorientierte Skriptsprache. Enterprise Distributed Object Computing Conference. Makuhari, Japan: IEEE. doi:10.1109/edoc.2000.882363. ISBN 0769508650.
- ^ Ho, Wing Hong (7. Mai 2007). "Einführung in EGL" (PDF). IBM -Softwaregruppe.
- ^ Radin, George (1978). Wexelblat, Richard L. (Hrsg.). Die frühe Geschichte und Eigenschaften von PL/i. Geschichte der Programmiersprachen. Akademische Presse (veröffentlicht 1981). p. 572. doi:10.1145/800025.1198410. ISBN 0127450408.
- ^ "Was ist PL/B - die Programmiersprache für Unternehmen?". sysmaker.com. Infopro, Inc. Abgerufen 22. April 2022.
... Umwandlung in ein alternatives, erweitertes Cobol oder zu Ansi COBOL ist sehr schwierig, wenn überhaupt möglich
- ^ Mitchell, Robert L. (14. März 2012). "Brain Drain: Wo von hier aus gehen Cobol -Systeme". Computerwelt. Abgerufen 9. Februar 2015.
- ^ a b c Mitchell, Robert L. (4. Oktober 2006). "COBOL: Noch nicht tot". Computerwelt. Abgerufen 27. April 2014.
- ^ Enserger, Nathan L. (2009). Die Computerjungen übernehmen: Computer, Programmierer und die Politik des technischen Fachwissens. MIT Press. p. 100. ISBN 978-0262050937. Lccn 2009052638.
- ^ "ISO/IEC 1989: 2014". ISO. 26. Mai 2014. Abgerufen 7. Juni 2014.
- ^ Ferguson, Andrew. "Eine Geschichte von Computerprogrammiersprachen". cs.brown.edu.
- ^ "Gemeinsame geschäftsorientierte Sprache".
- ^ Groenfeldt, Tom. Forbes https://www.forbes.com/sites/tomgroenfeldt/202/05/18/covid-accelerates-banks-mainframe-migration-to-to-t-cloud/.
{{}}
: Fehlen oder leer|title=
(Hilfe) - ^ Beyer 2009, p. 282.
- ^ Gürer, Denise (1. Juni 2002). "Pionierinnen in Informatik". Sigcse Bull. 34 (2): 175–180. doi:10.1145/543812.543853. ISSN 0097-8418. S2CID 2577644.
- ^ Beyer 2009, S. 281–282.
- ^ Sammet 1978a, p. 200.
- ^ Flahive, Paul (24. Mai 2019). "Wie COBOL die Weltwirtschaft mit 60 Jahren immer noch macht". Texas Public Radio. Archiviert von das Original am 24. Mai 2019. Abgerufen 19. Juli 2019.
(Grace Hopper) Spitzname Oma Cobol, der Code basierte auf einigen ihrer früheren Arbeiten. Sie sagte - nachdem sie die Gerüchte gehört hatte -, ging einer ihrer Mitarbeiter aus und kaufte einen Granit -Grabstein. "Er ließ das Wort Cobol vorne geschnitten. Dann schickte er es aus Express -Sammlung an Mr. Phillips im Pentagon." Der Streich von Charles Phillips, einem Leiter des Projekts im Verteidigungsministerium, erregte die Aufmerksamkeit der Befugnisse, die ein Wendepunkt waren und war, sagte sie. Cobol würde die am weitesten verbreitete und am längsten dauerhafte Computersprachen der Geschichte werden.
- ^ Beyer 2009, p. 283.
- ^ Beyer 2009, p. 284.
- ^ "Frühe Besprechungen der Konferenz zu Datensystemen Sprachen". 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). "Die frühe Geschichte von Cobol". ACM Sigplan nennt. 13 (8): 121–161. doi:10.1145/960118.808378. S2CID 10743643.
- ^ Sammet 1978a, p. 217.
- ^ Adams, Vicki Porter (5. Oktober 1981). "Captain Grace M. Hopper: Die Mutter von Cobol". InfoWorld. Vol. 3, nein. 20. p. 33. ISSN 0199-6649.
- ^ Betts, Mitch (6. Januar 1992). "Grace Hopper, Mutter von Cobol, stirbt". Computerwelt. 26 (1): 14.
- ^ Lohr, Steve (2008). Gehen Sie zu: Die Geschichte der Mathematik -Majors, Brückenspieler, Ingenieure, Schachzauberer, Maverick -Wissenschaftler und Ikonoklasten - die Programmierer, die die Software -Revolution erstellt haben. Grundbücher. p. 52. ISBN 978-0786730766.
- ^ "Pionier-Software-Ingenieur und Co-Designer COBOL".
- ^ a b Beyer 2009, p. 292.
- ^ Bemer 1971, p. 131.
- ^ Beyer 2009, p. 296.
- ^ Sammet 1978a, p. 221.
- ^ Beyer 2009, p. 291.
- ^ "Orale Geschichte von Captain Grace Hopper" (PDF). Computergeschichte Museum. Dezember 1980. p. 37. archiviert von das Original (PDF) am 25. Dezember 2017. Abgerufen 28. Juni 2014.
- ^ Sammet 1978a, p. 218.
- ^ Marcotty 1978a, p. 268.
- ^ Sammet 1978a, S. 205–206.
- ^ a b Sammet 1978a, Abbildung 8.
- ^ Sammet 1978a, S. 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: Wir können keine einzige Person finden, die zugibt, das Akronym "COBOL" zu präsentieren,.
- ^ Sammet 1978a, p. 210: Am nächsten Tag wurde der Name Cobol schließlich als Akronym für gemeinsame geschäftorientierte Sprache vereinbart. Leider zeigen meine Notizen nicht, wer diesen Vorschlag gemacht hat.
- ^ Sullivan, Patricia (25. Juni 2004). "Computerpionier Bob Bemer, 84". Die Washington Post. p. B06. Abgerufen 28. Juni 2014.
- ^ "Der COBOL -Bericht - Interview mit Bob Bemer - dem Vater von Cobol". Archiviert von das Original am 2. April 2018.
- ^ "Der COBOL -Bericht - Interview mit Bob Bemer - dem Vater von Cobol". Archiviert von das Original am 23. Dezember 2003.
- ^ Beyer 2009, p. 293.
- ^ Beyer 2009, p. 294.
- ^ COBOL Tombstone. Computergeschichte Museum. 1960. Abgerufen 29. Juni 2014.
- ^ "Die Geschichte des Cobol -Grabsteins" (PDF). Der Bericht des Computermuseums. 13: 8–9. Sommer 1985. Archiviert (PDF) Aus dem Original am 3. April 2014. Abgerufen 29. Juni 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 Referenzhandbuch, Bestellnummer: AA - Q2G0F - TK Oktober 2000, Seite XVIII; Fujitsu Corporation: NET COBOL -Sprachreferenz, Version 15, Januar 2009; IBM Corporation: Enterprise COBOL für Z/OS -Sprachreferenz, Version 4 Release 1, SC23-8528-00, Dezember 2007
- ^ Garfunkel, Jerome (11. November 1984). "Zur Verteidigung von Cobol". Computerwelt. 18 (24): ID/19.
- ^ 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). "Programmiersprachenstandards". In Ralston, Anthony; Reilly, Edwin D.; Hemmendier, David (Hrsg.). Enzyklopädie der Informatik (4. Aufl.). 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). "Nur wenige erkennen verschwendete Ressourcen lokaler DP -Schulen". Computerwelt. 6 (31): 11.
- ^ Triance, J. M. (1974). Programmierung in COBOL: Ein Kurs von zwölf Fernsehvorlesungen. Manchester University Press. p. 87. ISBN 978-0719005923.
- ^ Klein 2010, p. 16.
- ^ Baird, George N.; Oliver, Paul (Mai 1977). "1974 Standard (x3.23–1974)". Programmiersprache Standards - Wer braucht sie? (PDF) (Bericht). Abteilung der Marine. S. 19–21. Archiviert (PDF) Aus dem Original am 7. Januar 2014. Abgerufen 7. Januar 2014.
- ^ Culleton, John R., Jr. (23. Juli 1975). ""Fleckige" Verfügbarkeit ein Problem ... " Computerwelt. 9 (30): 17.
- ^ Simmons, Williams B. (18. Juni 1975). "Vermissen Sie Cobols Berichtsautor wirklich die Marke?". Computerwelt. 9 (25): 20.
- ^ Shoor, Rita (26. Januar 1981). "Der Benutzer droht einen Anzug gegenüber ANSI COBOL-80". Computerwelt. 15 (4): 1, 8.
- ^ Shoor, Rita (26. Oktober 1981). "DPMA stellt sich gegen Cobol Draft". Computerwelt. 15 (43): 1–2.
- ^ a b c Gallant, John (16. September 1985). "Der überarbeitete COBOL -Standard kann Ende '85 fertig sein". Computerwelt. 19 (37): 1, 8.
- ^ a b "Experten adressiert Cobol 85 Standard". Computerwelt. 19 (37): 41, 48. 16. September 1985.
- ^ Paul, Lois (15. März 1982). "Reaktionen auf COBOL-80 überwiegend negativ". Computerwelt. 16 (11): 1, 5.
- ^ Paul, Lois (25. April 1983). "Studie sieht nur wenige Probleme auf, auf COBOL-8x zu wechseln". Computerwelt. 17 (17): 1, 6.
- ^ Gillin, Paul (19. November 1984). "Dec-Benutzer erhalten Vorsprung bei der Implementierung von COBOL-80". Computerwelt. 18 (47): 1, 6.
- ^ ClearPath Enterprise Server (April 2015). "COBOL ANSI-85 Programmierreferenzhandbuch" (PDF). public.support.unisys.com. Unisys. Abgerufen 29. April 2022.
- ^ Garfunkel 1987, p. 150.
- ^ Roy, M. K.; Dastidar, D. Ghost (1. Juni 1989). "Merkmale von COBOL-85". COBOL -Programmierung: Probleme und Lösungen (2. Aufl.). McGraw-Hill-Ausbildung. S. 438–451. ISBN 978-0074603185.
- ^ Robinson, Brian (9. Juli 2009). "COBOL bleibt alter Standby in Agenturen, obwohl er sein Alter zeigt". FCW. Mediengruppe des öffentlichen Sektors. Abgerufen 26. April 2014.
- ^ a b "COBOL -Standards". Mikrofokus. Archiviert von das Original am 31. März 2004. Abgerufen 2. September 2014.
- ^ "Netcobol für .net". netcobol.com. Gtsoftware. 2013. archiviert von das Original am 8. Juli 2014. Abgerufen 29. Januar 2014.
- ^ "Eine Liste von Codasyl -Cobol -Funktionen". Computerwelt. 18 (37): ID/28. 10. September 1984. Abgerufen 8. Juni 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001, Anhang F.
- ^ Klein 2010, p. 21.
- ^ a b "JTC1/SC22/WG4 - COBOL". ISO. 30. Juni 2010. archiviert von das Original am 14. Februar 2014. Abgerufen 27. April 2014.
- ^ Billman, John; Klink, Huib (27. Februar 2008). "Gedanken zur Zukunft der COBOL -Standardisierung" (PDF). Archiviert von das Original (PDF) am 11. Juli 2009. Abgerufen 14. August 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014, Anhang E.
- ^ Schricker, Don (2. Dezember 1998). "J4: COBOL -Standardisierung". Mikrofokus. Archiviert von das Original am 24. Februar 1999. Abgerufen 12. Juli 2014.
- ^ Kizior, Ronald J.; Carr, Donald; Halpern, Paul. "Hat Cobol eine Zukunft?" (PDF). Das Verfahren der Informationssysteme Bildungskonferenz 2000. 17 (126). Archiviert von das Original (PDF) am 17. August 2016. Abgerufen 30. September 2012.
- ^ White, Doug (12. Juli 1998). "Häufig gestellte Fragen (FAQ) zum Y2K -Problem". homepages.wmich.edu. Abgerufen 29. April 2022.
Daher ist das Hauptproblem von Y2K das Problem der falschen Ergebnisse, wenn die Datumsmathematik durchgeführt wird.
- ^ Kappelman, Leon A. (2000). "Einige strategische Y2K -Segen". IEEE -Software. 17 (2): 42–46. doi:10.1109/52.841605.
- ^ Carr & Kizior 2003, p. 16.
- ^ Carr & Kizior 2003, p. 10.
- ^ "COBOL Brain Drain: Umfrageergebnisse". Computerwelt. 14. März 2012. Abgerufen 27. April 2014.
- ^ POWER, David A. (25. Mai 2016). "Bundesbehörden müssen alternde Legacy -Systeme angehen" (PDF). Regierungsverantwortungsbüro. p. 18. archiviert von das Original (PDF) am 15. Juni 2016. Abgerufen 19. Juli 2019.
Mehrere Agenturen, wie das Ministerium für Landwirtschaft (USDA), DHS, HHS, Gerechtigkeit, Finanzministerium und VA, berichteten über die Verwendung von gemeinsamen geschäftsorientierten Sprachen (COBOL) - eine Programmiersprache, die Ende der 1950er und frühen 1960er Jahre entwickelt wurde -, um ihr Legacy zu programmieren Systeme. Es ist allgemein bekannt, dass Agenturen, gegebenenfalls in modernere, wartbare und machbare und machbare Sprachen, wechseln müssen.
- ^ "Cobol Blues". Reuters. Abgerufen 8. April 2020.
- ^ Teplitzky, Phil (25. Oktober 2019). "Schließen der COBOL -Programmierkenntnisse". IBM Systems Magazine, IBM Z.. Abgerufen 11. Juni 2020.
- ^ Lee, Alicia (8. April 2020). "Wollte dringend: Menschen, die eine halbe jahrhundertealte Computersprache kennen, damit Staaten Arbeitslosenansprüche verarbeiten können". CNN. Abgerufen 8. April 2020.
- ^ Lang, heather; Stein, Jeff; Rein, Lisa; Romm, Tony (17. April 2020). "Stimulusprüfungen und andere Coronavirus -Reliefs, die durch datierte Technologie und Rollout der felsigen Regierung behindert werden.". Die Washington Post. Abgerufen 19. April 2020.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014§ 8.9.
- ^ "Reservierte Wörter Tabelle". Micro Focus Visual COBOL 2.2 COBOL -Sprachreferenz. Micro Focus. Abgerufen 3. März 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.
- ^ 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.
- ^ "Dateiorganisationen". Dateihandhabung. Mikrofokus. 1998. archiviert von das Original am 4. März 2016. Abgerufen 27. Juni 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014§ 8.5.1.2.
- ^ Cutler 2014, Anhang A.
- ^ Hubbell, Thane (1999). Sams lehrt sich Cobol in 24 Stunden. 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.
- ^ Feld, John; Ramalingam, G. (September 1999). Identifizierung der prozeduralen Struktur in COBOL -Programmen (PDF). Paste '99. doi:10.1145/381788.316163. ISBN 1581131372.
- ^ a b c Veerman, Niels; Verhoeven, Ernst-Jan (November 2006). "COBOL Minefield Detection" (PDF). Software: Übung und Erfahrung. 36 (14). doi:10.1002/spe.v36: 14. Archiviert von das Original (PDF) am 6. März 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.
- ^ Beispiele für den Compiler -Unterstützung für
ALTER
kann in Folgendes gesehen werden:- Tiffin, Brian (18. September 2013). "September 2013". Gnu Cobol. Archiviert von das Original am 5. Mai 2014. Abgerufen 5. Januar 2014.
- "Die Alterserklärung". Micro Focus Visual Cobol 2.2 für Visual Studio 2013 COBOL Language Referenz. Mikrofokus. Abgerufen 5. Januar 2014.
- "Alter Statement (Nucleus)" (PDF). COBOL85 Referenzhandbuch. Fujitsu. November 1996. p. 555. archiviert von das Original (PDF) am 6. Januar 2014. Abgerufen 5. Januar 2014.
- "ALTER ERSICHTUNG". Enterprise COBOL für Z/OS -Sprachreferenz. IBM. Juni 2013. Abgerufen 5. Januar 2014.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001§ F.1.
- ^ a b McCracken 1976, p. 355.
- ^ Moseley, Jay (17. Januar 2015). "COBOL -Compiler von MVT". Abgerufen 19. Juli 2015.
- ^ Dijkstra, Edsger W. (18. Juni 1975). "Wie sagen wir Wahrheiten, die weh tun könnten?". Universität von Texas in Austin. EWD498. Archiviert von das Original am 2. Mai 2017. Abgerufen 29. August 2007.
- ^ Tompkins, H. E. (1983). "Zur Verteidigung des Unterrichts strukturierter Cobol als Informatik". ACM Sigplan nennt. 18 (4): 86–94. doi:10.1145/948176.948186. S2CID 33803213.
- ^ a b Riehle 1992, p. 125.
- ^ SHNEIDERMAN 1985, S. 349–350.
- ^ Coughlan, Michael (16. März 2014). COBOL für Programmierer beginnen. Apress. p. 4. ISBN 978-1430262534. Abgerufen 13. August 2014.
- ^ Sammet 1978b, p. 258.
- ^ Riehle 1992, p. 126.
- ^ Riehle 1992, p. 127.
- ^ "COBOL und Legacy Code als systemisches Risiko | Nackter Kapitalismus". 19. Juli 2016. Abgerufen 23. Juli 2016.
- ^ Lämel, Ralf; Verhoef, Chris (November bis Dezember 2001). "Das 500sprachige Problem knacken" (PDF). IEEE -Software. 18 (6): 79. doi:10.1109/52.965809. HDL:1871/9853. Archiviert von das Original (PDF) am 19. August 2014.
- ^ Howkins, T. J.; Harandi, M. T. (April 1979). "In Richtung tragbarer Cobol". Das Computerjournal. 22 (4): 290. doi:10.1093/comjnl/22.4.290.
- ^ Garfunkel 1987, p. 11.
- ^ Garfunkel 1987, p. fünfzehn.
- ^ Raymond, Eric S. (1. Oktober 2004). "COBOL". Die Jargon -Datei, Version 4.4.8. Archiviert vom Original am 30. August 2014. Abgerufen 13. Dezember 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, S. 348–349.
- ^ "COBOL -Logik und Programmierung, dritte Ausgabe 1974". Archiviert von das Original am 5. März 2016. Abgerufen 25. Februar 2016.
- ^ SHNEIDERMAN 1985, p. 351.
- ^ "Ein Interview: Cobol Defender". Computerwelt. 18 (37): ID/29 - ID/32. 10. September 1984. Abgerufen 8. Juni 2014.
- ^ Pratt, Terrence W.; Zelkowitz, Marvin V. (1984). Programmiersprachen: Design und Implementierung (2. Aufl.). Englewood Cliffs, N.J .: Prentice Hall. ISBN 0136780121.
- ^ Carr & Kizior 2003, p. 13.
- ^ "Akademie braucht mehr Unterstützung, um die IT -Skills -Lücke zu bekämpfen." (Pressemitteilung). Mikrofokus. 7. März 2013. Abgerufen 4. August 2014.
- ^ Sammet, Jean; Garfunkel, Jerome (Oktober 1985). "Zusammenfassung der Veränderungen in Cobol, 1960–1985". Annalen der Geschichte des Computers. 7 (4): 342. doi:10.1109/mahc.1985.10033. S2CID 17940092.
- ^ Cook, Margaret M. (Juni 1978). Ghosh, Sakti P.; Liu, Leonard Y. (Hrsg.). Datenbankanlage für COBOL 80 (PDF). 1978 Nationale Computerkonferenz. Anaheim, Kalifornien: Afips Press. S. 1107–1112. doi:10.1109/afips.1978.63. Lccn 55-44701. Abgerufen 2. September 2014.
Das früheste Datum, an dem ein neuer COBOL -Standard entwickelt und genehmigt werden könnte, ist das Jahr 1980 [...].
- ^ "Resolutionen aus WG4 Meeting 24. - 26. bis 28. Juni 2003 Las Vegas, Nevada, USA". 11. Juli 2003. p. 1. archiviert von das Original (doc) am 8. März 2016. Abgerufen 29. Juni 2014.
Eine Überarbeitung des COBOL -Standards im Juni 2008
- ^ Babcock, Charles (14. Juli 1986). "COBOL Standard Add-Ons Geblayed". Computerwelt. 20 (28): 1, 12.
- ^ Marcotty 1978b, p. 274.
- ^ Dies ist in:
- "Visual Cobol". IBM Partnerworld. IBM. 21. August 2013. Archiviert Aus dem Original am 12. Juli 2014. Abgerufen 5. Februar 2014.
Micro Focus Visual COBOL liefert die nächste Generation der COBOL-Entwicklung und -Tevergabe für Linux X86-64, Linux für System Z, AIX, HP/UX, Solaris und Windows.
- "COBOL Compilers Familie". ibm.com. IBM. Archiviert Aus dem Original am 23. Februar 2014. Abgerufen 5. Februar 2014.
- Tiffin, Brian (4. Januar 2014). "Welche Plattformen werden von GNU COBOL unterstützt?". Archiviert von das Original am 14. Dezember 2013. Abgerufen 5. Februar 2014.
- "Visual Cobol". IBM Partnerworld. IBM. 21. August 2013. Archiviert Aus dem Original am 12. Juli 2014. Abgerufen 5. Februar 2014.
- ^ Coughlan, Michael (2002). "Einführung in Cobol". Abgerufen 3. Februar 2014.
- ^ "Gartner Group Studies". 1997-2001.state.gov. Jahr 2000 Programmverwaltungsbüro. 2000. Abgerufen 23. April 2022.
- ^ Engelmann, Viktor (8. April 2021). "COBOL FACT-CHECK". cobsolete.de. Cobsolete. Abgerufen 23. April 2022.
- ^ "Was wird die Zukunft halten". CIO. Internationale Datengruppe. 15. Dezember 1995 - 1. Januar 1996. p. 82.
Quellen
- Bemer, Bob (1971). "Ein Blick auf die Geschichte von Cobol" (PDF). Honeywell Computer Journal. 5 (3). Archiviert von das Original (PDF) am 22. Januar 2016. Abgerufen 28. Juni 2014.
- Beyer, Kurt (2009). Grace Hopper und die Erfindung des Informationszeitalters. MIT Press. ISBN 978-0262013109. Lccn 2008044229.
- Brown, William R. (1. Dezember 1976). "COBOL". In Belzer, Jack; Holzman, Albert G.; Kent, Allen (Hrsg.). Enzyklopädie der Informatik und Technologie: Band 5. CRC Press. ISBN 978-0824722555.
- Carr, Donald E.; Kizior, Ronald J. (31. Dezember 2003). "Fortsetzung der Relevanz von COBOL in Wirtschaft und Wissenschaft: Aktuelle Situation und Vergleich mit der Studie des Jahres 2000" (PDF). Bildungsjournal für Informationssysteme. 1 (52). ISSN 1545-679X. Abgerufen 4. August 2014.
- Codasyl (Juli 1969). "Codasyl Cobol Journal of Development 1968". Codasyl Cobal Journal of Development. Nationales Büro für Standards. ISSN 0591-0218. Lccn 73601243.
- Conner, Richard L. (14. Mai 1984). "Cobol, dein Alter zeigt". Computerwelt. 18 (20): ID/7 - ID/18. ISSN 0010-4841.
- Cutler, Gary (9. April 2014). "GNU COBOL Programmer's Guide" (PDF) (3. Aufl.). Abgerufen 25. Februar 2014.
- Garfunkel, Jerome (1987). Das Cobol 85 -Beispielbuch. Wiley. ISBN 978-0471804611.
- ISO/IEC JTC 1/SC 22/WG 4 (4. Dezember 2001). "ISO/IEC ist 1989: 2001 - Programmiersprache COBOL". ISO. Archiviert von das Original (ZIP von PDF) am 24. Januar 2002. Abgerufen 2. September 2014. (Link geht an den Entwurf N 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31. Oktober 2014). Incits/ISO/IEC 1989: 2014 [2014] - Programmiersprache COBOL. Einschnitte.
- Klein, William M. (4. Oktober 2010). "Die Geschichte von Cobol" (PDF). Archiviert von das Original (PDF) am 7. Januar 2014. Abgerufen 7. Januar 2014.
- Marcotty, Michael (1978a). Wexelblat, Richard L. (Hrsg.). Transkript von Frage- und Beantwortungssitzung. Geschichte der Programmiersprachen. Academic Press (veröffentlicht 1981). p.263. doi:10.1145/800025.1198370. ISBN 0127450408.
- Marcotty, Michael (1978b). Wexelblat, Richard L. (Hrsg.). Volltext aller eingereichten Fragen. Geschichte der Programmiersprachen. Academic Press (veröffentlicht 1981). p.274. doi:10.1145/800025.1198371. ISBN 0127450408.
- McCracken, Daniel D. (1976). Eine vereinfachte Anleitung zur strukturierten COBOL -Programmierung. Wiley. ISBN 0-471-58284-0.
- McCracken, Daniel D.; Golden, Donald G. (1988). Eine vereinfachte Anleitung zur strukturierten COBOL -Programmierung (2. Aufl.). Wiley. ISBN 978-0471610540. Lccn 87034608.
- Riehle, Richard L. (August 1992). "Perform als schädlich". Kommunikation der ACM. 35 (8): 125–128. doi:10.1145/135226.376106. S2CID 18845698.
- Sammet, Jean E. (Mai 1961). Eine Methode zur Kombination von Algol und Cobol. Die auf dem 9. bis 11. Mai 1961 vorgestellten Papiere, Western Joint Ire -Aiee -ACM -Computerkonferenz. ACM. S. 379–387. doi:10.1145/1460690.1460734.
- Sammet, Jean E. (1978a). Wexelblat, Richard L. (Hrsg.). Die frühe Geschichte von Cobol. Geschichte der Programmiersprachen. Academic Press (veröffentlicht 1981). doi:10.1145/800025.1198367. ISBN 0127450408.
- Sammet, Jean E. (1978b). Wexelblat, Richard L. (Hrsg.). Transkript der Präsentation. Geschichte der Programmiersprachen. Academic Press (veröffentlicht 1981). doi:10.1145/800025.1198368. ISBN 0127450408.
- Sammet, Jean E. (23. Juli 2004). "COBOL". In Reilly, Edwin D. (Hrsg.). Präzise Enzyklopädie der Informatik. Wiley. ISBN 978-0470090954. OCLC 249810423.
- SHNEIDERMAN, B. (Oktober 1985). "Die Beziehung zwischen Cobol und Informatik". Annalen der Geschichte des Computers. 7 (4): 348–352. doi:10.1109/mahc.1985.10041. S2CID 1009406.
Externe Links
- Cobol bei Curlie
- COBOL -Sprachstandard (1991; COBOL-85 mit Änderung 1), aus Die offene Gruppe