[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki25\/2021\/10\/28\/cobol-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki25\/2021\/10\/28\/cobol-wikipedia\/","headline":"COBOL \u2013 Wikipedia","name":"COBOL \u2013 Wikipedia","description":"before-content-x4 Nicht zu verwechseln mit Kobol, einem fiktiven Planeten in Battlestar Galactica. Programmiersprache mit englisch\u00e4hnlicher Syntax COBOL Das Cover der","datePublished":"2021-10-28","dateModified":"2021-10-28","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki25\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki25\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/2\/27\/COBOL_Report_Apr60.djvu\/page1-220px-COBOL_Report_Apr60.djvu.jpg","url":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/2\/27\/COBOL_Report_Apr60.djvu\/page1-220px-COBOL_Report_Apr60.djvu.jpg","height":"289","width":"220"},"url":"https:\/\/wiki.edu.vn\/wiki25\/2021\/10\/28\/cobol-wikipedia\/","wordCount":35190,"articleBody":" (adsbygoogle = window.adsbygoogle || []).push({});before-content-x4Nicht zu verwechseln mit Kobol, einem fiktiven Planeten in Battlestar Galactica.Programmiersprache mit englisch\u00e4hnlicher SyntaxCOBOLDas Cover der COBOL 60 Bericht an CODASYL (April 1960)ParadigmaProzedural, Imperativ, ObjektorientiertEntworfen vonHoward Bromberg, Norman-Rabatt, Vernon Reeves, Jean E. Sammet, William Selden, Gertrude Tierney, mit indirektem Einfluss von Grace Hopper[1]EntwicklerCODASYL, ANSI, ISOErstmals erschienen1959; Vor 62 Jahren (1959)Stabile Version ISO\/IEC 1989: 2014 \/ 2014SchreibdisziplinSchwach, statischDateinamenerweiterungen.cbl, .cob, .cpyGnuCOBOL, IBM COBOL, Micro Focus Visual COBOLCOBOL\/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 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, Veryant isCOBOL, Wang VS COBOLInitial: AIMACO, COMTRAN, FACT, FLOW-MATICCOBOL 2002[a]: C++, Eiffel, SmalltalkCobolScript,[5]EGL,[6]PL\/I,[7]PL\/B[citation needed]COBOL (; ein Akronym f\u00fcr “Common Business-Oriented Language”) ist eine kompilierte englisch\u00e4hnliche Computerprogrammiersprache, die f\u00fcr den gesch\u00e4ftlichen Gebrauch entwickelt wurde. Sie ist eine zwingende, prozedurale und seit 2002 objektorientierte Sprache. COBOL wird haupts\u00e4chlich in Gesch\u00e4fts-, Finanz- und Verwaltungssystemen f\u00fcr Unternehmen und Regierungen verwendet. COBOL wird immer noch h\u00e4ufig in Anwendungen verwendet, die auf Mainframe-Computern bereitgestellt werden, beispielsweise bei umfangreichen Batch- und Transaktionsverarbeitungsauftr\u00e4gen. Aufgrund der sinkenden Popularit\u00e4t und des Ausscheidens erfahrener COBOL-Programmierer werden Programme jedoch auf neue Plattformen migriert, in modernen Sprachen umgeschrieben oder durch Softwarepakete ersetzt.[8] Die meisten Programmierungen in COBOL dienen heute ausschlie\u00dflich der Wartung bestehender Anwendungen; Viele gro\u00dfe Finanzinstitute entwickelten jedoch noch 2006 neue COBOL-Systeme.[9] COBOL wurde 1959 von CODASYL entworfen und basierte teilweise auf der Programmiersprache FLOW-MATIC von Grace Hopper. Es wurde als Teil der Bem\u00fchungen des US-Verteidigungsministeriums entwickelt, eine tragbare Programmiersprache f\u00fcr die Datenverarbeitung zu entwickeln. Es wurde urspr\u00fcnglich als Notl\u00f6sung angesehen, aber das Verteidigungsministerium zwang Computerhersteller umgehend dazu, es bereitzustellen, was zu seiner weit verbreiteten Akzeptanz f\u00fchrte.[10] Es wurde 1968 standardisiert und seitdem viermal \u00fcberarbeitet. Erweiterungen umfassen die Unterst\u00fctzung f\u00fcr strukturierte und objektorientierte Programmierung. Der aktuelle Standard ist ISO\/IEC 1989: 2014.[11]COBOL-Anweisungen haben eine englisch\u00e4hnliche Syntax, die selbstdokumentierend und gut lesbar ist. Es ist jedoch ausf\u00fchrlich und verwendet \u00fcber 300 reservierte W\u00f6rter. Im Gegensatz zu moderner, pr\u00e4gnanter Syntax wie y = x;, COBOL hat eine eher englisch\u00e4hnliche Syntax (in diesem Fall MOVE x TO y). COBOL-Code ist in vier unterteilt Divisionen (Identifikation, Umgebung, Daten und Verfahren) mit einer starren Hierarchie von Abschnitten, Abs\u00e4tzen und S\u00e4tzen. In Ermangelung einer gro\u00dfen Standardbibliothek spezifiziert der Standard 43 Anweisungen, 87 Funktionen und nur eine Klasse.Akademische Informatiker waren bei der Entwicklung von COBOL im Allgemeinen desinteressiert an Gesch\u00e4ftsanwendungen und waren nicht an dessen Design beteiligt; es wurde (effektiv) von Grund auf als Computersprache f\u00fcr Unternehmen entwickelt, mit einem Schwerpunkt auf Ein- und Ausgaben, deren einzige Datentypen Zahlen und Textketten waren.[12]COBOL wurde w\u00e4hrend seiner gesamten Lebensdauer f\u00fcr seine Ausf\u00fchrlichkeit, seinen Designprozess und seine schlechte Unterst\u00fctzung f\u00fcr strukturierte Programmierung kritisiert. Diese Schw\u00e4chen f\u00fchren zu monolithischen, ausf\u00fchrlichen (als Englisch angedachten) Programmen, die nicht leicht verst\u00e4ndlich sind.Table of Contents Geschichte und Spezifikation[edit]Hintergrund[edit]COBOL 60[edit]COBOL-61 bis COBOL-65[edit]COBOL-68[edit]COBOL-74[edit]COBOL-85[edit]COBOL 2002 und objektorientiertes COBOL[edit]COBOL 2014[edit]Erbe[edit]Merkmale[edit]Syntax[edit]Metasprache[edit]Codeformat[edit]Identifikationsabteilung[edit]Objekt orientierte Programmierung[edit]Abteilung Umwelt[edit]Dateien[edit]Datenteilung[edit]Aggregierte Daten[edit]Andere Datenebenen[edit]Datentypen[edit]PICTURE-Klausel[edit]USAGE-Klausel[edit]Berichtschreiber[edit]Verfahrensteilung[edit]Verfahren[edit]Aussagen[edit]Kontrollfluss[edit]E\/A[edit]Datenmanipulation[edit]Scope-Beendigung[edit]Selbstmodifizierender Code[edit]Hallo Welt[edit]Rezeption[edit]Fehlende Struktur[edit]Kompatibilit\u00e4tsprobleme[edit]Ausf\u00fchrliche Syntax[edit][edit]Bedenken bez\u00fcglich des Designprozesses[edit]Einfl\u00fcsse auf andere Sprachen[edit]Siehe auch[edit]Verweise[edit]Zitate[edit]Quellen[edit]Externe Links[edit]Geschichte und Spezifikation[edit]Hintergrund[edit]In den sp\u00e4ten 1950er Jahren machten sich Computerbenutzer und Hersteller Sorgen \u00fcber die steigenden Programmierkosten. Eine Umfrage aus dem Jahr 1959 hatte ergeben, dass die Programmierung in jeder Datenverarbeitungsanlage durchschnittlich 800.000 US-Dollar kostete und dass die \u00dcbersetzung von Programmen f\u00fcr die Ausf\u00fchrung auf neuer Hardware 600.000 US-Dollar kosten w\u00fcrde. In einer Zeit, in der sich immer mehr neue Programmiersprachen ausbreiteten, ergab dieselbe Umfrage, dass die Konvertierung bei Verwendung einer gemeinsamen gesch\u00e4ftsorientierten Sprache viel billiger und schneller w\u00e4re.Am 8. April 1959 berief Mary K. Hawes, Informatikerin bei Burroughs Corporation, ein Treffen von Vertretern aus Wissenschaft, Computeranwendern und Herstellern an der University of Pennsylvania ein, um ein formelles Treffen \u00fcber g\u00e4ngige Gesch\u00e4ftssprachen zu organisieren.[14] Zu den Vertretern geh\u00f6rten Grace Hopper (Erfinder der englisch\u00e4hnlichen Datenverarbeitungssprache FLOW-MATIC), Jean Sammet und Saul Gorn.Bei der Sitzung im April bat die Gruppe das Verteidigungsministerium (DoD), die Bem\u00fchungen zur Schaffung einer gemeinsamen Gesch\u00e4ftssprache zu unterst\u00fctzen. Die Delegation beeindruckte Charles A. Phillips, Direktor des Data System Research Staff am DoD,[17] die dachten, dass sie die Probleme des DoD “ganz und gar verstanden” h\u00e4tten. Das DoD betrieb 225 Computer, hatte weitere 175 bestellt und \u00fcber 200 Millionen US-Dollar f\u00fcr die Implementierung von Programmen ausgegeben, die darauf ausgef\u00fchrt wurden. Portable Programme w\u00fcrden Zeit sparen, Kosten senken und die Modernisierung erleichtern.Charles Phillips erkl\u00e4rte sich bereit, das Treffen zu sponsern und beauftragte die Delegation mit der Ausarbeitung der Tagesordnung.COBOL 60[edit]Am 28. und 29. Mai 1959 (genau ein Jahr nach dem Z\u00fcrcher ALGOL 58-Treffen) fand ein Treffen im Pentagon statt, um die Schaffung einer gemeinsamen Programmiersprache f\u00fcr die Wirtschaft zu diskutieren. Es wurde von 41 Personen besucht und wurde von Phillips geleitet.[20] Das Verteidigungsministerium war besorgt dar\u00fcber, ob es die gleichen Datenverarbeitungsprogramme auf verschiedenen Computern ausf\u00fchren k\u00f6nnte. FORTRAN, die damals einzige Mainstream-Sprache, hatte nicht die n\u00f6tigen Funktionen, um solche Programme zu schreiben.Die Vertreter beschrieben begeistert eine Sprache, die in einer Vielzahl von Umgebungen funktionieren k\u00f6nnte, von Banken und Versicherungen bis hin zu Versorgungsunternehmen und Bestandskontrolle. Einstimmig waren sie sich einig, dass mehr Menschen programmieren k\u00f6nnen sollten und dass die neue Sprache nicht durch die Grenzen der heutigen Technologie eingeschr\u00e4nkt werden sollte. Eine Mehrheit stimmte darin \u00fcberein, dass die Sprache das Englische maximal nutzen, ver\u00e4nderbar, maschinenunabh\u00e4ngig und einfach zu bedienen sein sollte, auch auf Kosten der Macht.Das Treffen f\u00fchrte zur Bildung eines Lenkungsausschusses sowie kurzer, mittlerer und langfristiger Aussch\u00fcsse. Der Kurzstreckenausschuss wurde bis September (drei Monate) Zeit gegeben, um Spezifikationen f\u00fcr eine \u00dcbergangssprache zu erstellen, die dann von den anderen Aussch\u00fcssen verbessert werden sollte. Ihre offizielle Mission bestand jedoch darin, die St\u00e4rken und Schw\u00e4chen bestehender Programmiersprachen zu identifizieren und sie nicht explizit anzuweisen, eine neue Sprache zu entwickeln. Die Frist wurde vom Kurzstreckenausschuss mit Unglauben erf\u00fcllt. Ein Mitglied, Betty Holberton, bezeichnete die dreimonatige Frist als “groben Optimismus” und bezweifelte, dass die Sprache wirklich eine Notl\u00f6sung sein w\u00fcrde.Der Lenkungsausschuss tagte am 4. Juni und vereinbarte, die gesamte Aktivit\u00e4t als Ausschuss f\u00fcr Datensystemsprachen, oder CODASYL, und einen Exekutivausschuss zu bilden.Der Kurzstreckenausschuss setzte sich aus Mitgliedern von sechs Computerherstellern und drei Regierungsbeh\u00f6rden zusammen. Die sechs Computerhersteller waren Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand und Sylvania Electric Products. Die drei Regierungsbeh\u00f6rden waren die US Air Force, das David Taylor Model Basin der Navy und das National Bureau of Standards (jetzt das National Institute of Standards and Technology). Vorsitzender des Ausschusses war Joseph Wegstein vom US National Bureau of Standards. Die Arbeit begann mit der Untersuchung von Datenbeschreibungen, Aussagen, bestehenden Anwendungen und Benutzererfahrungen.Der Ausschuss befasste sich haupts\u00e4chlich mit den Programmiersprachen FLOW-MATIC, AIMACO und COMTRAN. Die Sprache FLOW-MATIC war besonders einflussreich, weil sie implementiert wurde und AIMACO mit nur geringen \u00c4nderungen davon abgeleitet war.[32]Die Erfinderin von FLOW-MATIC, Grace Hopper, diente dem Komitee auch als technische Beraterin. Die wichtigsten Beitr\u00e4ge von FLOW-MATIC zu COBOL waren lange Variablennamen, englische W\u00f6rter f\u00fcr Befehle und die Trennung von Datenbeschreibungen und Anweisungen. Hopper wird manchmal als “die Mutter von COBOL” oder “die Gro\u00dfmutter von COBOL” bezeichnet.[34][35][36] obwohl Jean Sammet, ein leitender Designer von COBOL, erkl\u00e4rte, dass Hopper “nicht die Mutter, der Sch\u00f6pfer oder Entwickler von Cobol war”.[37][1]IBMs COMTRAN-Sprache, erfunden von Bob Bemer, wurde von einem aus Kollegen von Grace Hopper bestehenden Kurzstreckenkomitee als Konkurrent von FLOW-MATIC angesehen. Einige seiner Funktionen wurden nicht in COBOL integriert, damit es nicht so aussah, als h\u00e4tte IBM den Designprozess dominiert, und Jean Sammet sagte 1981, dass es von einigen Ausschussmitgliedern (sie selbst eingeschlossen) eine “starke Anti-IBM-Voreingenommenheit” gegeben habe. In einem Fall schickte Grace Hopper, nachdem Roy Goldfinger, Autor des COMTRAN-Handbuchs und Mitglied des Mittelstreckenausschusses, an einer Sitzung des Unterausschusses teilgenommen hatte, um seine Sprache zu unterst\u00fctzen und die Verwendung algebraischer Ausdr\u00fccke zu f\u00f6rdern, ein Memo an das Kurzstreckenkomitee, in dem sie Sperry Rands Bem\u00fchungen, eine auf Englisch basierende Sprache zu schaffen. 1980 kommentierte Grace Hopper, dass \u201eCOBOL 60 zu 95% FLOW-MATIC ist\u201c und dass COMTRAN einen \u201eextrem geringen\u201c Einfluss gehabt habe. Dar\u00fcber hinaus sagte sie, dass sie behaupten w\u00fcrde, dass die Arbeit sowohl von FLOW-MATIC als auch von COMTRAN beeinflusst wurde, nur um “andere Menschen gl\u00fccklich zu machen”. [so they] w\u00fcrde nicht versuchen, uns auszuschalten”.[43]Funktionen von COMTRAN, die in COBOL enthaltene Formeln integriert sind, die PICTURE Klausel, eine verbesserte IF -Anweisung, die GO TOs \u00fcberfl\u00fcssig machte, und ein robusteres Dateiverwaltungssystem.Die N\u00fctzlichkeit der Arbeit des Ausschusses war Gegenstand gro\u00dfer Debatten. W\u00e4hrend einige Mitglieder der Meinung waren, dass die Sprache zu viele Kompromisse aufwies und das Ergebnis eines Entwurfs des Ausschusses war, hielten andere sie f\u00fcr besser als die drei untersuchten Sprachen. Einige hielten die Sprache f\u00fcr zu komplex; andere, zu einfach. Zu den kontroversen Funktionen geh\u00f6rten diejenigen, die f\u00fcr Datenverarbeitungsbenutzer als nutzlos oder zu fortschrittlich angesehen wurden. Zu diesen Funktionen geh\u00f6rten boolesche Ausdr\u00fccke, Formeln und Tabellen tiefgestellte (Indizes). Ein weiterer kontroverser Punkt war die Frage, ob Schl\u00fcsselw\u00f6rter kontextsensitiv gemacht werden sollten und welche Auswirkungen dies auf die Lesbarkeit haben w\u00fcrde. Obwohl kontextsensitive Schl\u00fcsselw\u00f6rter abgelehnt wurden, wurde der Ansatz sp\u00e4ter in PL\/I und teilweise in COBOL ab 2002 verwendet. Interaktivit\u00e4t, Interaktion mit Betriebssystemen (damals gab es nur wenige) und Funktionen (als rein mathematisch gedacht) wurde wenig ber\u00fccksichtigt und ohne Verwendung f\u00fcr die Datenverarbeitung).Die Spezifikationen wurden dem Exekutivausschuss am 4. September vorgelegt. Sie blieben hinter den Erwartungen zur\u00fcck: Joseph Wegstein bemerkte, dass “es raue Stellen enth\u00e4lt und einige Erg\u00e4nzungen erfordert”, und Bob Bemer bezeichnete sie sp\u00e4ter als “Durcheinander”. Dem Unterausschuss wurde bis Dezember Zeit gegeben, um es zu verbessern.Auf einer Sitzung Mitte September diskutierte der Ausschuss den Namen der neuen Sprache. Zu den Vorschl\u00e4gen geh\u00f6rten “BUSY” (Business System), “INFOSYL” (Information System Language) und “COCOSYL” (Common Computer Systems Language). Es ist unklar, wer den Namen “COBOL” gepr\u00e4gt hat, obwohl Bob Bemer sp\u00e4ter behauptete, es sei sein Vorschlag gewesen.[55][56][57]Im Oktober erhielt das Mittelklasse-Komitee Kopien der von Roy Nutt erstellten FACT-Sprachspezifikation. Seine Eigenschaften beeindruckten das Komitee so sehr, dass sie eine Resolution verabschiedeten, um COBOL darauf aufzubauen. Dies war ein Schlag f\u00fcr das Kurzstreckenkomitee, das bei der Spezifikation gute Fortschritte gemacht hatte. Obwohl FACT technisch \u00fcberlegen ist, wurde es nicht im Hinblick auf Portabilit\u00e4t oder im Konsens zwischen Herstellern und Benutzern entwickelt. Es fehlte auch eine nachweisbare Implementierung, die es Anh\u00e4ngern eines FLOW-MATIC-basierten COBOL erm\u00f6glichte, die Resolution zu kippen. RCA-Vertreter Howard Bromberg blockierte auch FACT, damit die Arbeit von RCA an einer COBOL-Implementierung nicht umsonst war.‘Und welchen Namen m\u00f6chten Sie eingeschrieben haben?’Ich sagte: ‘Ich werde es f\u00fcr dich schreiben.’ Ich schrieb den Namen auf: COBOL.‘Was ist das f\u00fcr ein Name?’\u00bbNun, es ist ein polnischer Name. Wir haben es gek\u00fcrzt und viele unn\u00f6tige Notationen losgeworden.’Howard Bromberg \u00fcber den Kauf des COBOL-Grabsteins[60]Es stellte sich bald heraus, dass der Ausschuss zu gro\u00df war, um schnell weitere Fortschritte zu erzielen. Ein frustrierter Howard Bromberg kaufte einen 15-Dollar-Grabstein mit der Gravur “COBOL” und schickte ihn an Charles Phillips, um seinen Unmut zu demonstrieren.[b][60]Zur Analyse bestehender Sprachen wurde ein Unterausschuss gebildet, der sich aus sechs Personen zusammensetzte:William Selden und Gertrude Tierney von IBM,Howard Bromberg und Howard Discount von RCA,Vernon Reeves und Jean E. Sammet von Sylvania Electric Products.Der Unterausschuss erledigte die meiste Arbeit bei der Erstellung der Spezifikation, w\u00e4hrend der Kurzstreckenausschuss seine Arbeit \u00fcberpr\u00fcfen und \u00e4ndern konnte, bevor er die fertige Spezifikation erstellte.Die Spezifikationen wurden am 8. Januar 1960 vom Exekutivkomitee genehmigt und an die Regierungsdruckerei \u00fcbermittelt, die diese als COBOL 60. Die erkl\u00e4rten Ziele der Sprache bestanden darin, effiziente, portable Programme einfach zu schreiben, Benutzern den Umstieg auf neue Systeme mit minimalem Aufwand und Kosten zu erm\u00f6glichen und f\u00fcr unerfahrene Programmierer geeignet zu sein. Das CODASYL Executive Committee gr\u00fcndete sp\u00e4ter das COBOL Maintenance Committee, um Fragen von Benutzern und Anbietern zu beantworten und die Spezifikationen zu verbessern und zu erweitern.Im Laufe des Jahres 1960 wuchs die Liste der Hersteller, die COBOL-Compiler bauen wollten. Bis September hatten sich f\u00fcnf weitere Hersteller CODASYL angeschlossen (Bendix, Control Data Corporation, General Electric (GE), National Cash Register und Philco), und alle vertretenen Hersteller hatten COBOL-Compiler angek\u00fcndigt. GE und IBM planten, COBOL in ihre eigenen Sprachen GECOM bzw. COMTRAN zu integrieren. Im Gegensatz dazu planten International Computers and Tabulators, ihre Sprache CODEL durch COBOL zu ersetzen.W\u00e4hrenddessen arbeiteten RCA und Sperry Rand an der Entwicklung von COBOL-Compilern. Das erste COBOL-Programm lief am 17. August auf einem RCA 501. Am 6. und 7. Dezember lief dasselbe COBOL-Programm (wenn auch mit geringf\u00fcgigen \u00c4nderungen) auf einem RCA-Computer und einem Remington-Rand-Univac-Computer, was die Erzielung der Kompatibilit\u00e4t demonstrierte.[68]Die relativen Einfl\u00fcsse der verwendeten Sprachen setzen sich bis heute in den empfohlenen Hinweisen fort, die in allen COBOL-Referenzhandb\u00fcchern abgedruckt sind:COBOL ist eine Branchensprache und nicht Eigentum eines Unternehmens oder einer Unternehmensgruppe oder einer Organisation oder Unternehmensgruppe.Keiner der Mitwirkenden oder das CODASYL COBOL-Komitee geben eine ausdr\u00fcckliche oder stillschweigende Garantie f\u00fcr die Genauigkeit und Funktion des Programmiersystems und der Programmiersprache. Dar\u00fcber hinaus wird keine Verantwortung von den Mitwirkenden oder dem Ausschuss in diesem Zusammenhang \u00fcbernommen. Die Autoren und Urheberrechtsinhaber des hier verwendeten urheberrechtlich gesch\u00fctzten Materials sind wie folgt:FLOW-MATIC (Warenzeichen der Unisys Corporation), Programming for the UNIVAC (R) I und II, Data Automation Systems, urheberrechtlich gesch\u00fctzt 1958, 1959, von Unisys Corporation; IBM Commercial Translator Formular Nr. F28-8013, urheberrechtlich gesch\u00fctzt 1959 von IBM; FAKT, DSI 27A5260-2760, urheberrechtlich gesch\u00fctzt 1960 von Minneapolis-Honeywell.Sie haben die Verwendung dieses Materials ganz oder teilweise in den COBOL-Spezifikationen ausdr\u00fccklich genehmigt. Diese Berechtigung erstreckt sich auf die Vervielf\u00e4ltigung und Verwendung von COBOL-Spezifikationen in Programmierhandb\u00fcchern oder \u00e4hnlichen Ver\u00f6ffentlichungen.[69]COBOL-61 bis COBOL-65[edit]Es ist eher unwahrscheinlich, dass Cobol am Ende des Jahrzehnts auf dem Markt sein wird.Anonym, Juni 1960[70]Viele logische Fehler wurden gefunden in COBOL 60, was Charles Katz von GE dazu veranlasste, zu warnen, dass es nicht eindeutig interpretiert werden k\u00f6nne. Ein widerstrebendes kurzfristiges Komitee f\u00fchrte eine totale S\u00e4uberung durch, und im M\u00e4rz 1963 wurde berichtet, dass die Syntax von COBOL genauso definierbar war wie die von ALGOL, obwohl semantische Mehrdeutigkeiten bestehen blieben.Fr\u00fche COBOL-Compiler waren primitiv und langsam. Eine Auswertung der US-Marine aus dem Jahr 1962 ergab Kompilationsgeschwindigkeiten von 3\u201311 Statements pro Minute. Bis Mitte 1964 waren sie auf 11 bis 1000 Kontoausz\u00fcge pro Minute angestiegen. Es wurde beobachtet, dass eine Erh\u00f6hung des Speichers die Geschwindigkeit drastisch erh\u00f6hen w\u00fcrde und dass die Kompilierungskosten stark schwankten: Die Kosten pro Anweisung lagen zwischen 0,23 und 18,91 US-Dollar.Ende 1962 k\u00fcndigte IBM an, dass COBOL ihre prim\u00e4re Entwicklungssprache sein w\u00fcrde und dass die Entwicklung von COMTRAN eingestellt w\u00fcrde.Die COBOL-Spezifikation wurde in den f\u00fcnf Jahren nach ihrer Ver\u00f6ffentlichung dreimal \u00fcberarbeitet. COBOL-60 wurde 1961 durch COBOL-61 ersetzt. Dies wurde dann 1963 durch die erweiterten COBOL-61-Spezifikationen ersetzt, die die Sortier- und Berichtschreiberfunktionen einf\u00fchrten. Die hinzugef\u00fcgten Einrichtungen korrigierten M\u00e4ngel, die Honeywell Ende 1959 in einem Brief an das Kurzstreckenkomitee identifizierte. COBOL Edition 1965 brachte weitere Klarstellungen zu den Spezifikationen und f\u00fchrte M\u00f6glichkeiten zur Handhabung von Massenspeicherdateien und -tabellen ein.COBOL-68[edit]Es wurden Anstrengungen unternommen, COBOL zu standardisieren, um Inkompatibilit\u00e4ten zwischen den Versionen zu \u00fcberwinden. Ende 1962 bildeten sowohl die ISO als auch das United States of America Standards Institute (jetzt ANSI) Gruppen, um Standards zu erstellen. ANSI produziert USA-Standard COBOL X3.23 im August 1968, der zum Grundstein f\u00fcr sp\u00e4tere Versionen wurde. Diese Version war als American National Standard (ANS) COBOL bekannt und wurde 1972 von der ISO \u00fcbernommen.[75]COBOL-74[edit]1970 war COBOL die am weitesten verbreitete Programmiersprache der Welt.Unabh\u00e4ngig vom ANSI-Komitee arbeitete das CODASYL Programming Language Committee an der Verbesserung der Sprache. Sie beschrieben neue Versionen in den Jahren 1968, 1969, 1970 und 1973, einschlie\u00dflich \u00c4nderungen wie neuer Kommunikation zwischen Programmen, Debugging- und Dateizusammenf\u00fchrungsfunktionen sowie verbesserter String-Handling- und Bibliotheksintegrationsfunktionen. Obwohl CODASYL vom ANSI-Komitee unabh\u00e4ngig war, CODASYL Zeitschrift f\u00fcr Entwicklung wurde von ANSI verwendet, um Funktionen zu identifizieren, die beliebt genug waren, um eine Implementierung zu rechtfertigen. Das Programming Language Committee stand auch in Kontakt mit ECMA und dem japanischen COBOL Standard Committee.Das Programming Language Committee war jedoch nicht bekannt. Der Vizepr\u00e4sident William Rinehuls beklagte, dass zwei Drittel der COBOL-Gemeinschaft nichts von der Existenz des Komitees wussten. Es war auch schlecht, es fehlten die Mittel, um \u00f6ffentliche Dokumente wie Sitzungsprotokolle und \u00c4nderungsvorschl\u00e4ge frei zug\u00e4nglich zu machen.[79]1974 ver\u00f6ffentlichte ANSI eine \u00fcberarbeitete Version von (ANS) COBOL, die neue Funktionen wie Dateiorganisationen, die DELETE Stellungnahme[80] und das Segmentierungsmodul. Gel\u00f6schte Funktionen enthalten die NOTE Aussage, die EXAMINE Aussage (die ersetzt wurde durch INSPECT) und das vom Implementierer definierte Direktzugriffsmodul (das durch die neuen sequentiellen und relativen E\/A-Module ersetzt wurde). Dabei handelte es sich um 44 \u00c4nderungen, die bestehende Aussagen mit dem neuen Standard unvereinbar machten.[82]Der Verfasser des Berichts sollte aus COBOL entfernt werden, wurde jedoch vor der Ver\u00f6ffentlichung des Standards wieder eingestellt.[83][84] Die ISO \u00fcbernahm den aktualisierten Standard sp\u00e4ter im Jahr 1978.[75]COBOL-85[edit]Im Juni 1978 begannen die Arbeiten zur \u00dcberarbeitung von COBOL-74. Der vorgeschlagene Standard (allgemein als COBOL-80 bezeichnet) unterschied sich erheblich vom vorherigen, was zu Bedenken hinsichtlich Inkompatibilit\u00e4t und Konvertierungskosten f\u00fchrte. Im Januar 1981 drohte Joseph T. Brophy, Senior Vice-President der Travellers Insurance, das Standardkomitee zu verklagen, weil es nicht aufw\u00e4rtskompatibel mit COBOL-74 sei. Herr Brophy beschrieb fr\u00fchere Konvertierungen ihrer 40 Millionen Zeilen umfassenden Codebasis als “nicht produktiv” und als “v\u00f6llige Verschwendung unserer Programmierressourcen”.[85]Sp\u00e4ter in diesem Jahr sagte die Data Processing Management Association (DPMA), sie sei \u201estark gegen den neuen Standard\u201c und verwies auf \u201eunerlaubte\u201c Konvertierungskosten und Verbesserungen, die \u201edem Benutzer aufgezwungen\u201c wurden.[86][87]W\u00e4hrend der ersten \u00f6ffentlichen Begutachtungsperiode erhielt der Ausschuss 2.200 Antworten, davon 1.700 negative Serienbriefe.[88]Andere Antworten waren detaillierte Analysen der Auswirkungen von COBOL-80 auf ihre Systeme; Konvertierungskosten wurden mit mindestens 50 Cent pro Codezeile prognostiziert. Weniger als ein Dutzend der Antworten bef\u00fcrworteten den vorgeschlagenen Standard.[89]ISO TC97-SC5 installierte 1979 auf Initiative von Wim Ebbinkhuijsen die internationale COBOL-Expertengruppe. Die Gruppe bestand aus COBOL-Experten aus vielen L\u00e4ndern, einschlie\u00dflich der Vereinigten Staaten. Ihr Ziel war es, gegenseitiges Verst\u00e4ndnis und Respekt zwischen ANSI und dem Rest der Welt im Hinblick auf die Notwendigkeit neuer COBOL-Funktionen zu erreichen. Nach drei Jahren \u00e4nderte ISO den Status der Gruppe in eine formelle Arbeitsgruppe: WG 4 COBOL. Die Gruppe \u00fcbernahm die Hauptverantwortung und die Entwicklung des COBOL-Standards, wobei ANSI die meisten Vorschl\u00e4ge machte.1983 zog das DPMA seinen Widerspruch gegen den Standard zur\u00fcck und verwies auf die Bereitschaft des Ausschusses f\u00fcr \u00f6ffentliche Anliegen. Im selben Jahr kam eine Studie des National Bureau of Standards zu dem Schluss, dass der vorgeschlagene Standard wenig Probleme bereiten w\u00fcrde.[87][90] Ein Jahr sp\u00e4ter wurde ein COBOL-80-Compiler f\u00fcr DEC VAX-Benutzer freigegeben, die feststellten, dass die Konvertierung von COBOL-74-Programmen nur wenige Probleme bereitete. Das neue EVALUATE Anweisung und Inline PERFORM wurden besonders gut angenommen und die Produktivit\u00e4t dank vereinfachtem Kontrollfluss und Debugging verbessert.[91]Die zweite \u00f6ffentliche \u00dcberpr\u00fcfung f\u00fchrte zu weiteren 1.000 (haupts\u00e4chlich negativen) Antworten, w\u00e4hrend die letzte nur 25 erhielt, und zu diesem Zeitpunkt waren viele Bedenken ausger\u00e4umt.[87]1985 akzeptierte die ISO-Arbeitsgruppe 4 die damalige Version des von ANSI vorgeschlagenen Standards, nahm mehrere \u00c4nderungen vor und legte sie als neuen ISO-Standard COBOL 85 fest. Er wurde Ende 1985 ver\u00f6ffentlicht.Sechzig Funktionen wurden ge\u00e4ndert oder veraltet und viele[quantify] wurden hinzugef\u00fcgt, wie zum Beispiel:[93]Scope-Terminatoren (END-IF, END-PERFORM, END-READ, etc.)Verschachtelte UnterprogrammeCONTINUE, eine Nicht-Operation-AnweisungEVALUATE, eine switch-AnweisungINITIALIZE, eine Anweisung, die Datengruppen auf ihre Standardwerte setzen kannIm Einklang PERFORM Schleifenk\u00f6rper \u2013 bisher mussten Schleifenk\u00f6rper in einem separaten Verfahren angegeben werdenReferenz\u00e4nderung, die den Zugriff auf Teilzeichenfolgen erm\u00f6glichtE\/A-Statuscodes.Die neue Norm wurde von allen nationalen Normungsgremien, einschlie\u00dflich ANSI, \u00fcbernommen.[75]1989 und 1993 folgten zwei \u00c4nderungen, wobei die erste intrinsische Funktionen einf\u00fchrte und die andere Korrekturen vorsah.[75]COBOL 2002 und objektorientiertes COBOL[edit]1997 sch\u00e4tzte die Gartner Group, dass es insgesamt 200 Milliarden COBOL-Leitungen gab, die 80 % aller Gesch\u00e4ftsprogramme liefen.[94][better\u00a0source\u00a0needed]In den fr\u00fchen 1990er Jahren wurde damit begonnen, die Objektorientierung in der n\u00e4chsten vollst\u00e4ndigen \u00dcberarbeitung von COBOL hinzuzuf\u00fcgen. Objektorientierte Funktionen wurden aus C++ und Smalltalk \u00fcbernommen.[2][3]Die anf\u00e4ngliche Sch\u00e4tzung war, dass diese \u00dcberarbeitung bis 1997 abgeschlossen sein sollte, und bis 1997 lag ein ISO Committee Draft (CD) vor. Einige Hersteller (einschlie\u00dflich Micro Focus, Fujitsu und IBM) f\u00fchrten objektorientierte Syntax basierend auf Entw\u00fcrfen der vollst\u00e4ndigen \u00dcberarbeitung ein. Die endg\u00fcltige genehmigte ISO-Norm wurde Ende 2002 genehmigt und ver\u00f6ffentlicht.[95]Fujitsu\/GTSoftware,[96] Micro Focus und RainCode f\u00fchrten objektorientierte COBOL-Compiler ein, die auf das .NET Framework abzielen.Es gab viele andere neue Funktionen, von denen viele in der CODASYL COBOL Zeitschrift f\u00fcr Entwicklung seit 1978 und hatte die Chance verpasst, in COBOL-85 aufgenommen zu werden.[97] Zu diesen weiteren Funktionen geh\u00f6rten:F\u00fcr den Standard wurden drei Berichtigungen ver\u00f6ffentlicht: zwei im Jahr 2006 und eine im Jahr 2009.[100]COBOL 2014[edit]Zwischen 2003 und 2009 wurden drei technische Berichte erstellt, die die Objekt-Finalisierung, XML-Verarbeitung und Sammlungsklassen f\u00fcr COBOL beschreiben.[100]COBOL 2002 litt unter schlechter Unterst\u00fctzung: Kein Compiler unterst\u00fctzte den Standard vollst\u00e4ndig. Micro Focus stellte fest, dass dies auf mangelnde Benutzernachfrage nach den neuen Funktionen und auf die Abschaffung der NIST-Testsuite zur\u00fcckzuf\u00fchren war, die zum Testen der Compiler-Konformit\u00e4t verwendet wurde. Der Standardisierungsprozess erwies sich auch als langsam und mit unzureichenden Mitteln ausgestattet.[101]COBOL 2014 enth\u00e4lt die folgenden \u00c4nderungen:Portable arithmetische Ergebnisse wurden durch IEEE 754-Datentypen ersetztWichtige Funktionen wurden optional gemacht, wie z VALIDATE Einrichtung, der Berichtschreiber und die BildschirmbearbeitungsfunktionMethoden\u00fcberladungDynamische Kapazit\u00e4tstabellen (eine Funktion, die aus dem Entwurf von COBOL 2002 entfernt wurde)[103]Erbe[edit]COBOL-Programme werden weltweit in Regierungen und Unternehmen eingesetzt und laufen auf verschiedenen Betriebssystemen wie z\/OS, z\/VSE, VME, Unix, OpenVMS und Windows. 1997 berichtete die Gartner Group, dass 80 % des weltweiten Gesch\u00e4fts auf COBOL liefen, wobei \u00fcber 200 Milliarden Codezeilen und 5 Milliarden weitere Zeilen j\u00e4hrlich geschrieben werden.[104]Gegen Ende des 20. Jahrhunderts stand das Jahr-2000-Problem (Y2K) im Mittelpunkt erheblicher COBOL-Programmierarbeiten, manchmal von denselben Programmierern, die die Systeme Jahrzehnte zuvor entworfen hatten. Der besondere Aufwand f\u00fcr die Korrektur des COBOL-Codes wurde zugeschrieben[by whom?] auf die gro\u00dfe Menge an gesch\u00e4ftsorientiertem COBOL, da Gesch\u00e4ftsanwendungen stark Daten verwenden, und auf Datenfelder mit fester L\u00e4nge. Nach den Aufr\u00e4umarbeiten f\u00fcr diese Programme f\u00fcr das Jahr 2000 ergab eine Umfrage aus dem Jahr 2003, dass viele davon weiterhin verwendet wurden. Die Autoren sagten, dass die Umfragedaten “einen allm\u00e4hlichen R\u00fcckgang der Bedeutung von Cobol in der Anwendungsentwicklung \u00fcber die [following] 10 Jahre, es sei denn, … die Integration mit anderen Sprachen und Technologien kann \u00fcbernommen werden”.2006 und 2012, Computerwelt Umfragen ergaben, dass \u00fcber 60 % der Unternehmen COBOL verwenden (mehr als C++ und Visual Basic .NET) und dass bei der H\u00e4lfte von ihnen COBOL f\u00fcr den Gro\u00dfteil ihrer internen Software verwendet wurde.[9][107] 36 % der Manager sagten, dass sie eine Migration von COBOL planten, und 25 % sagten, sie w\u00fcrden dies gerne tun, wenn es billiger w\u00e4re. Stattdessen haben einige Unternehmen ihre Systeme von teuren Mainframes auf billigere, modernere Systeme umgestellt, w\u00e4hrend sie ihre COBOL-Programme beibehalten.[9]Zeugenaussagen vor dem Repr\u00e4sentantenhaus im Jahr 2016 zeigten, dass COBOL immer noch von vielen Bundesbeh\u00f6rden verwendet wird.[108]Reuters berichtete im Jahr 2017, dass 43 % der Bankensysteme immer noch COBOL verwenden, wobei \u00fcber 220 Milliarden Zeilen COBOL-Code verwendet werden.[109]Bis 2019 schrumpfte die Zahl der COBOL-Programmierer aufgrund von Pensionierungen schnell, was zu einer drohenden Qualifikationsl\u00fccke in Unternehmen und Regierungsorganisationen f\u00fchrte, die immer noch Mainframe-Systeme f\u00fcr die Verarbeitung von Transaktionen mit hohem Volumen verwenden. Bem\u00fchungen, Systeme in neueren Sprachen umzuschreiben, haben sich als teuer und problematisch erwiesen, ebenso wie das Outsourcing der Codepflege, daher werden Vorschl\u00e4ge bef\u00fcrwortet, mehr Leute in COBOL zu schulen.[110]W\u00e4hrend der COVID-19-Pandemie und des daraus resultierenden Anstiegs der Arbeitslosigkeit meldeten mehrere US-Bundesstaaten einen Mangel an qualifizierten COBOL-Programmierern, um die Altsysteme f\u00fcr die Verwaltung der Arbeitslosenunterst\u00fctzung zu unterst\u00fctzen. Viele dieser Systeme befanden sich vor der Pandemie im Prozess der Umstellung auf modernere Programmiersprachen, der Prozess musste jedoch auf Eis gelegt werden.[111] In \u00e4hnlicher Weise beeilte sich der US Internal Revenue Service, sein COBOL-basiertes Individual Master File zu patchen, um die zig Millionen Zahlungen auszuzahlen, die vom Coronavirus Aid, Relief and Economic Security Act vorgeschrieben wurden.[112]Merkmale[edit]Syntax[edit]COBOL hat eine englisch\u00e4hnliche Syntax, die verwendet wird, um fast alles in einem Programm zu beschreiben. Eine Bedingung kann beispielsweise ausgedr\u00fcckt werden als x IS GREATER THAN y oder pr\u00e4gnanter als x GREATER y oder x > y. Komplexere Bedingungen k\u00f6nnen “abgek\u00fcrzt” werden, indem wiederholte Bedingungen und Variablen entfernt werden. Zum Beispiel, a > b AND a > c OR a = d kann gek\u00fcrzt werden zu a > b AND c OR = d. Um diese englisch\u00e4hnliche Syntax zu unterst\u00fctzen, hat COBOL \u00fcber 300 Schl\u00fcsselw\u00f6rter.[c] Einige der Schl\u00fcsselw\u00f6rter sind einfache alternative oder pluralisierte Schreibweisen desselben Wortes, was f\u00fcr mehr englisch\u00e4hnliche Aussagen und Klauseln sorgt; zB die IN und OF Schl\u00fcsselw\u00f6rter k\u00f6nnen austauschbar verwendet werden, ebenso wie IS und ARE, und VALUE und VALUES.Jedes COBOL-Programm besteht aus vier grundlegenden lexikalischen Elementen: W\u00f6rtern, Literalen, Bildzeichenfolgen (siehe \u00a7 PICTURE-Klausel) und Trennzeichen. W\u00f6rter umfassen reservierte W\u00f6rter und benutzerdefinierte Bezeichner. Sie sind bis zu 31 Zeichen lang und k\u00f6nnen Buchstaben, Ziffern, Bindestriche und Unterstriche enthalten. Literale beinhalten Ziffern (z. B. 12) und Zeichenfolgen (zB 'Hello!'). Trennzeichen sind Leerzeichen, Kommas und Semikolons gefolgt von einem Leerzeichen.Ein COBOL-Programm ist in vier Abteilungen unterteilt: die Identifikationsabteilung, die Umgebungsabteilung, die Datenabteilung und die Prozedurabteilung. Die Identifikationsabteilung gibt den Namen und Typ des Quellelements an und ist dort, wo Klassen und Schnittstellen angegeben werden. Die Umgebungsabteilung spezifiziert alle Programmfunktionen, die von dem System abh\u00e4ngen, auf dem sie ausgef\u00fchrt wird, wie Dateien und Zeichens\u00e4tze. Die Datenteilung wird verwendet, um Variablen und Parameter zu deklarieren. Die Prozedurdivision enth\u00e4lt die Anweisungen des Programms. Jeder Bereich ist in Abschnitte unterteilt, die aus Abs\u00e4tzen bestehen.Metasprache[edit]Die Syntax von COBOL wird normalerweise mit einer einzigartigen Metasprache beschrieben, die geschweifte Klammern, Klammern, Striche und Unterstreichungen verwendet. Die Metasprache wurde f\u00fcr die urspr\u00fcnglichen COBOL-Spezifikationen entwickelt. Obwohl die Backus-Naur-Form zu dieser Zeit existierte, hatte das Komitee noch nichts davon geh\u00f6rt.Elemente der Metasprache von COBOLElementAussehenFunktionAlle Hauptst\u00e4dteBEISPIELReserviertes WortUnterstreichenBEISPIELDas reservierte Wort ist obligatorischZahnspange{ }Es kann nur eine Option ausgew\u00e4hlt werdenKlammern[]Es k\u00f6nnen keine oder eine Option ausgew\u00e4hlt werdenEllipse…Das vorhergehende Element kann wiederholt werdenRiegel{| |}Es k\u00f6nnen eine oder mehrere Optionen ausgew\u00e4hlt werden. Jede Option darf nur einmal ausgew\u00e4hlt werden.[| |]Es k\u00f6nnen null oder mehr Optionen ausgew\u00e4hlt werden. Jede Option darf nur einmal ausgew\u00e4hlt werden.Betrachten Sie als Beispiel die folgende Beschreibung von an ADD Stellungnahme:HINZUF\u00dcGEN_{Kennung-1w\u00f6rtlich-1}\u2026ZU_{Kennung-2[ROUNDED_]}\u2026[|ONSIZE_ERROR_imperative-statement-1NOT_ONSIZE_ERROR_imperative-statement-2|][END-ADD_]{displaystyle {begin{array}{l}{underline {text{ADD}}},{begin{Bmatrix}{text{identifier-1}}\\{text{literal-1} }end{Bmatrix}}dots ;{underline {text{TO}}},left{{text{identifier-2}},left[,{underline {text{ROUNDED}}},right]right}dots \\Quad left[left|{begin{array}{l}{text{ON}},{underline {text{SIZE}}},{underline {text{ERROR}}},{text{imperative-statement-1}}\\{underline {text{NOT}}},{text{ON}},{underline {text{SIZE}}},{underline {text{ERROR}}},{text{imperative-statement-2}}\\end{array}}right|right]\\Quad links[,{underline {text{END-ADD}}},right]end{array}}}Diese Beschreibung l\u00e4sst folgende Varianten zu:ADD 1 TO xADD 1, a, b TO x ROUNDED, y, z ROUNDEDADD a, b TO c ON SIZE ERROR DISPLAY \"Error\"END-ADDADD a TO b NOT SIZE ERROR DISPLAY \"No error\" ON SIZE ERROR DISPLAY \"Error\"Codeformat[edit]COBOL kann in zwei Formaten geschrieben werden: fest (Standard) oder frei. Im Festformat muss der Code in bestimmten Bereichen ausgerichtet werden (ein \u00dcberbleibsel bei der Verwendung von Lochkarten). Bis COBOL 2002 waren dies:NameS\u00e4ulen)VerwendungszweckSequenznummernbereich1\u20136Urspr\u00fcnglich f\u00fcr Karten-\/Zeilennummern verwendet (erleichtert das mechanische Sortieren von Lochkarten, um die beabsichtigte Programmcodesequenz nach der manuellen Bearbeitung\/Handhabung sicherzustellen), wird dieser Bereich vom Compiler ignoriertAnzeigebereich7Folgende Zeichen sind hier erlaubt:* \u2013 Kommentarzeile\/ \u2013 Kommentarzeile, die auf einer neuen Seite eines Quellenverzeichnisses gedruckt wird- \u2013 Fortsetzungszeile, wo W\u00f6rter oder Literale aus der vorherigen Zeile fortgesetzt werdenD \u2013 Leitung im Debugging-Modus aktiviert, die sonst ignoriert wirdBereich A8\u201311Das beinhaltet: DIVISION, SECTION und Prozedur-Header; 01 und 77 Levelnummern und Datei-\/BerichtsdeskriptorenBereich B12\u201372Jeder andere Code, der in Bereich A nicht erlaubt istProgrammnamensbereich73\u2013Historisch gesehen bis Spalte 80 f\u00fcr Lochkarten wird es verwendet, um das Programm oder die Sequenz zu identifizieren, zu der die Karte geh\u00f6rtIn COBOL 2002 wurden die Bereiche A und B zusammengef\u00fchrt, um den Programmtextbereich zu bilden, der nun an einer vom Implementierer definierten Spalte endet.COBOL 2002 f\u00fchrte auch Freiformatcode ein. Frei formatierter Code kann wie in neueren Programmiersprachen in jede beliebige Spalte der Datei eingef\u00fcgt werden. Kommentare werden mit . angegeben *>, die \u00fcberall platziert werden kann und auch in fest formatiertem Quellcode verwendet werden kann. Fortsetzungszeilen sind nicht vorhanden, und die >>PAGE Richtlinie ersetzt die \/ Indikator.Identifikationsabteilung[edit]Die Identifikationsabteilung identifiziert die folgende Code-Entit\u00e4t und enth\u00e4lt die Definition einer Klasse oder Schnittstelle.Objekt orientierte Programmierung[edit]Klassen und Interfaces sind seit 2002 in COBOL enthalten. Klassen haben Factory-Objekte, die Klassenmethoden und Variablen enthalten, und Instanzobjekte, die Instanzmethoden und Variablen enthalten. Vererbung und Schnittstellen bieten Polymorphismus. Unterst\u00fctzung f\u00fcr generische Programmierung wird durch parametrisierte Klassen bereitgestellt, die instanziiert werden k\u00f6nnen, um jede Klasse oder Schnittstelle zu verwenden. Objekte werden als Referenzen gespeichert, die auf einen bestimmten Typ beschr\u00e4nkt sein k\u00f6nnen. Es gibt zwei M\u00f6glichkeiten, eine Methode aufzurufen: die INVOKE Aussage, die \u00e4hnlich wirkt wie CALL, oder durch einen Inline-Methodenaufruf, der der Verwendung von Funktionen entspricht.*> These are equivalent.INVOKE my-class \"foo\" RETURNING varMOVE my-class::\"foo\" TO var *> Inline method invocationCOBOL bietet keine M\u00f6glichkeit, Methoden auszublenden. Klassendaten k\u00f6nnen jedoch ausgeblendet werden, indem sie ohne a . deklariert werden PROPERTY -Klausel, die dem Benutzer keine M\u00f6glichkeit gibt, darauf zuzugreifen. Das \u00dcberladen von Methoden wurde in COBOL 2014 hinzugef\u00fcgt.Abteilung Umwelt[edit]Die Umgebungsabteilung enth\u00e4lt den Konfigurationsabschnitt und den Eingabe-Ausgabe-Abschnitt. Der Konfigurationsabschnitt wird verwendet, um variable Funktionen wie W\u00e4hrungszeichen, Gebietsschemas und Zeichens\u00e4tze anzugeben. Der Eingabe-Ausgabe-Abschnitt enth\u00e4lt dateibezogene Informationen.Dateien[edit]COBOL unterst\u00fctzt drei Dateiformate, oder Organisationen: sequentiell, indiziert und relativ. In sequentiellen Dateien sind Datens\u00e4tze zusammenh\u00e4ngend und m\u00fcssen sequentiell durchlaufen werden, \u00e4hnlich wie bei einer verketteten Liste. Indizierte Dateien haben einen oder mehrere Indizes, die einen wahlfreien Zugriff auf Datens\u00e4tze erm\u00f6glichen und nach denen sortiert werden kann. Jeder Datensatz muss einen eindeutigen Schl\u00fcssel haben, aber andere, wechseln, Datensatzschl\u00fcssel m\u00fcssen nicht eindeutig sein. Die Implementierungen indizierter Dateien variieren je nach Anbieter, obwohl g\u00e4ngige Implementierungen wie C-ISAM und VSAM auf IBM ISAM basieren. Relative Dateien haben wie indizierte Dateien einen eindeutigen Datensatzschl\u00fcssel, aber keine alternativen Schl\u00fcssel. Der Schl\u00fcssel eines relativen Datensatzes ist seine Ordinalposition; zum Beispiel hat der 10. Datensatz den Schl\u00fcssel 10. Das bedeutet, dass das Erstellen eines Datensatzes mit dem Schl\u00fcssel 5 die Erstellung von (leeren) Vorg\u00e4ngers\u00e4tzen erfordern kann. Relative Dateien erm\u00f6glichen auch sequenziellen und wahlfreien Zugriff.Eine \u00fcbliche nicht standardm\u00e4\u00dfige Erweiterung ist die zeilensequentiell Organisation, die zur Verarbeitung von Textdateien verwendet wird. Datens\u00e4tze in einer Datei werden durch einen Zeilenumbruch abgeschlossen und k\u00f6nnen unterschiedlich lang sein.[124]Datenteilung[edit]Die Datenabteilung ist in sechs Abschnitte unterteilt, die verschiedene Elemente deklarieren: den Dateiabschnitt f\u00fcr Dateiaufzeichnungen; der Arbeitsspeicherabschnitt f\u00fcr statische Variablen; der Local-Storage-Abschnitt f\u00fcr automatische Variablen; der Linkage-Abschnitt f\u00fcr Parameter und den R\u00fcckgabewert; der Berichtsteil und der Bildschirmteil f\u00fcr textbasierte Benutzeroberfl\u00e4chen.Aggregierte Daten[edit]Datenelemente in COBOL werden hierarchisch durch die Verwendung von Ebenennummern deklariert, die anzeigen, ob ein Datenelement Teil eines anderen ist. Ein Artikel mit einer h\u00f6heren Level-Nummer ist einem Artikel mit einer niedrigeren untergeordnet. Datenelemente der obersten Ebene mit einer Ebenennummer von 1 werden aufgerufen Aufzeichnungen. Elemente mit untergeordneten Aggregatdaten werden aufgerufen Elemente gruppieren; die, die es nicht tun, hei\u00dfen elementare Gegenst\u00e4nde. Level-Nummern, die zur Beschreibung von Standarddatenelementen verwendet werden, liegen zwischen 1 und 49. 01 some-record. *> Aggregate group record item 05 num PIC 9(10). *> Elementary item 05 the-date. *> Aggregate (sub)group record item 10 the-year PIC 9(4). *> Elementary item 10 the-month PIC 99. *> Elementary item 10 the-day PIC 99. *> Elementary itemIm obigen Beispiel elementares Element num und Gruppenelement the-date sind dem Rekord untergeordnet some-record, w\u00e4hrend elementare Elemente the-year, the-month, und the-day sind Teil des Gruppengegenstandes the-date.Untergeordnete Elemente k\u00f6nnen mit dem disambiguiert werden IN (oder OF) Stichwort. Betrachten Sie beispielsweise den obigen Beispielcode zusammen mit dem folgenden Beispiel: 01 sale-date. 05 the-year PIC 9(4). 05 the-month PIC 99. 05 the-day PIC 99.Die Namen the-year, the-month, und the-day sind f\u00fcr sich genommen mehrdeutig, da mehr als ein Datenelement mit diesen Namen definiert ist. Um ein bestimmtes Datenelement zu spezifizieren, zum Beispiel eines der Elemente, die im sale-date Gruppe, w\u00fcrde der Programmierer verwenden the-year IN sale-date (oder das \u00c4quivalent the-year OF sale-date). (Diese Syntax \u00e4hnelt der “Punktnotation”, die von den meisten zeitgen\u00f6ssischen Sprachen unterst\u00fctzt wird.)Andere Datenebenen[edit]Eine Ebenennummer von 66 wird verwendet, um eine Neugruppierung zuvor definierter Elemente zu deklarieren, unabh\u00e4ngig davon, wie diese Elemente strukturiert sind. Diese Datenebene, auch von den zugeh\u00f6rigen RENAMES Klausel, wird selten verwendet[127] und wurde um 1988 normalerweise in alten Programmen gefunden. Seine F\u00e4higkeit, die hierarchischen und logischen Strukturdaten zu ignorieren, bedeutete, dass seine Verwendung nicht empfohlen wurde und viele Installationen ihre Verwendung verboten. 01 customer-record. 05 cust-key PIC X(10). 05 cust-name. 10 cust-first-name PIC X(30). 10 cust-last-name PIC X(30). 05 cust-dob PIC 9(8). 05 cust-balance PIC 9(7)V99. 66 cust-personal-details RENAMES cust-name THRU cust-dob. 66 cust-all-details RENAMES cust-name THRU cust-balance.Eine 77-Ebenennummer gibt an, dass das Element eigenst\u00e4ndig ist, und entspricht in solchen Situationen der Ebenennummer 01. Der folgende Code deklariert beispielsweise zwei 77-Ebenen-Datenelemente: property-name und sales-region, bei denen es sich um Nicht-Gruppen-Datenelemente handelt, die unabh\u00e4ngig von (nicht untergeordneten) anderen Datenelementen sind: 77 property-name PIC X(80). 77 sales-region PIC 9(5).Eine 88 Level-Nummer erkl\u00e4rt a Bedingungsname (ein sogenannter 88-Level), der wahr ist, wenn sein \u00fcbergeordnetes Datenelement einen der in seinem . angegebenen Werte enth\u00e4lt VALUE Klausel. Der folgende Code definiert beispielsweise zwei 88-stufige Bedingungsnamenelemente, die je nach aktuellem Zeichendatenwert des wahr oder falsch sind wage-type Datenelement. Wenn das Datenelement einen Wert von enth\u00e4lt 'H', der Bedingungsname wage-is-hourly wahr ist, wohingegen wenn es einen Wert von enth\u00e4lt 'S' oder 'Y', der Bedingungsname wage-is-yearly ist wahr. Wenn das Datenelement einen anderen Wert enth\u00e4lt, sind beide Bedingungsnamen falsch. 01 wage-type PIC X. 88 wage-is-hourly VALUE \"H\". 88 wage-is-yearly VALUE \"S\", \"Y\".Datentypen[edit]Standard-COBOL bietet die folgenden Datentypen:DatentypMusterdeklarationAnmerkungenAlphabetischPIC A(30)Darf nur Buchstaben oder Leerzeichen enthaltenAlphanumerischPIC X(30)Kann beliebige Zeichen enthaltenBooleschesPIC 1 USAGE BITDaten in Form von 0 und 1 gespeichert, als Bin\u00e4rzahlIndexUSAGE INDEXWird verwendet, um Tabellenelemente zu referenzierenNationalPIC N(30)\u00c4hnlich wie alphanumerisch, jedoch mit erweitertem Zeichensatz, z. B. UTF-8NumerischPIC 9(5)V9(5)Darf nur Zahlen enthaltenObjektUSAGE OBJECT REFERENCEKann entweder auf ein Objekt verweisen oder NULLZeigerUSAGE POINTERTypsicherheit ist in COBOL variabel. Numerische Daten werden ger\u00e4uschlos zwischen verschiedenen Darstellungen und Gr\u00f6\u00dfen konvertiert, und alphanumerische Daten k\u00f6nnen in jedes Datenelement eingef\u00fcgt werden, das als Zeichenfolge gespeichert werden kann, einschlie\u00dflich numerischer und Gruppendaten. Im Gegensatz dazu d\u00fcrfen Objektreferenzen und Pointer nur von Items des gleichen Typs zugewiesen werden und ihre Werte k\u00f6nnen auf einen bestimmten Typ beschr\u00e4nkt werden.PICTURE-Klausel[edit]EIN PICTURE (oder PIC)-Klausel ist eine Zeichenfolge, von denen jedes einen Teil des Datenelements darstellt und was es enthalten kann. Einige Bildzeichen geben den Typ des Elements an und wie viele Zeichen oder Ziffern es im Speicher belegt. Zum Beispiel a 9 zeigt eine Dezimalstelle an und ein S zeigt an, dass das Element signiert ist. Andere Bildzeichen (genannt Einf\u00fcgen und Bearbeitung Zeichen) geben an, wie ein Element formatiert werden soll. Zum Beispiel eine Reihe von + Zeichen definieren Zeichenpositionen sowie wie ein f\u00fchrendes Zeichen innerhalb der endg\u00fcltigen Zeichendaten zu positionieren ist; das ganz rechte nicht-numerische Zeichen enth\u00e4lt das Vorzeichen des Elements, w\u00e4hrend andere Zeichenpositionen a + links von dieser Position enth\u00e4lt ein Leerzeichen. Wiederholte Zeichen k\u00f6nnen pr\u00e4gnanter spezifiziert werden, indem eine Zahl in Klammern nach einem Bildzeichen angegeben wird; zum Beispiel, 9(7) ist \u00e4quivalent zu 9999999. Bildspezifikationen, die nur Ziffern enthalten (9) und unterschreiben (S) Zeichen definieren rein numerisch Datenelemente, w\u00e4hrend Bildspezifikationen mit alphabetischen (A) oder alphanumerisch (X) Zeichen definieren alphanumerisch Datenelemente. Das Vorhandensein anderer Formatierungszeichen definiert bearbeitet numerisch oder alphanumerisch bearbeitet Datenelemente.BeispielePICTURE KlauselWert inWert rausPIC 9(5)10000100\"Hello\"\"Hello\" (Dies ist legal, f\u00fchrt aber zu undefiniertem Verhalten)PIC +++++-10\"\u00a0\u00a0-10\" (f\u00fchrende Leerzeichen beachten)PIC 99\/99\/9(4)31042003\"31\/04\/2003\"PIC *(4)9.99100.50\"**100.50\"0\"****0.00\"PIC X(3)BX(3)BX(3)\"ABCDEFGHI\"\"ABC DEF GHI\"USAGE-Klausel[edit]Diese Abteilung fehlen Informationen \u00fcber COMPUTATIONAL-5. Bitte erweitern Sie den Abschnitt um diese Informationen. Weitere Details k\u00f6nnen auf der Diskussionsseite enthalten sein. (April 2021)Die USAGE -Klausel deklariert das Format, in dem die Daten gespeichert werden. Je nach Datentyp kann sie entweder erg\u00e4nzen oder anstelle von a . verwendet werden PICTURE Klausel. W\u00e4hrend es zum Deklarieren von Zeigern und Objektreferenzen verwendet werden kann, ist es haupts\u00e4chlich auf die Angabe numerischer Typen ausgerichtet. Diese numerischen Formate sind:Bin\u00e4r, wobei eine Mindestgr\u00f6\u00dfe entweder durch die PICTURE Klausel oder durch a USAGE Klausel wie BINARY-LONG.USAGE COMPUTATIONAL, wobei Daten in jedem von der Implementierung bereitgestellten Format gespeichert werden k\u00f6nnen; oft gleichbedeutend mit USAGE BINARYUSAGE DISPLAY, das Standardformat, in dem Daten als String gespeichert werdenGleitkomma, entweder in einem implementierungsabh\u00e4ngigen Format oder gem\u00e4\u00df IEEE 754.USAGE NATIONAL, wobei Daten als String mit einem erweiterten Zeichensatz gespeichert werdenUSAGE PACKED-DECIMAL, wobei die Daten im kleinstm\u00f6glichen Dezimalformat gespeichert werden (typischerweise gepackte bin\u00e4r codierte Dezimalzahlen)Berichtschreiber[edit]Der Report Writer ist eine deklarative Einrichtung zum Erstellen von Berichten. Der Programmierer muss nur das Berichtslayout und die zu seiner Erstellung erforderlichen Daten angeben, sodass er keinen Code schreiben muss, um Dinge wie Seitenumbr\u00fcche, Datenformatierung sowie \u00dcberschriften und Fu\u00dfzeilen zu verarbeiten.Berichte sind mit Berichtsdateien verkn\u00fcpft, bei denen es sich um Dateien handelt, in die nur \u00fcber Anweisungen des Berichtsautors geschrieben werden kann. FD report-out REPORT sales-report.Jeder Bericht wird im Berichtsabschnitt der Datenabteilung definiert. Ein Bericht ist in Berichtsgruppen unterteilt, die die \u00dcberschriften, Fu\u00dfzeilen und Details des Berichts definieren. Berichte funktionieren hierarchisch Kontrollpausen. Kontrollunterbrechungen treten auf, wenn eine Schl\u00fcsselvariable ihren Wert \u00e4ndert; Wenn Sie beispielsweise einen Bericht erstellen, der die Bestellungen von Kunden detailliert beschreibt, kann es zu einer Kontrollunterbrechung kommen, wenn das Programm die Bestellungen eines anderen Kunden erreicht. Hier ist eine Beispielberichtsbeschreibung f\u00fcr einen Bericht, der die Verk\u00e4ufe eines Verk\u00e4ufers angibt und vor ung\u00fcltigen Datens\u00e4tzen warnt: RD sales-report PAGE LIMITS 60 LINES FIRST DETAIL 3 CONTROLS seller-name. 01 TYPE PAGE HEADING. 03 COL 1 VALUE \"Sales Report\". 03 COL 74 VALUE \"Page\". 03 COL 79 PIC Z9 SOURCE PAGE-COUNTER. 01 sales-on-day TYPE DETAIL, LINE + 1. 03 COL 3 VALUE \"Sales on\". 03 COL 12 PIC 99\/99\/9999 SOURCE sales-date. 03 COL 21 VALUE \"were\". 03 COL 26 PIC $$$$9.99 SOURCE sales-amount. 01 invalid-sales TYPE DETAIL, LINE + 1. 03 COL 3 VALUE \"INVALID RECORD:\". 03 COL 19 PIC X(34) SOURCE sales-record. 01 TYPE CONTROL HEADING seller-name, LINE + 2. 03 COL 1 VALUE \"Seller:\". 03 COL 9 PIC X(30) SOURCE seller-name.Die obige Berichtsbeschreibung beschreibt das folgende Layout:Sales Report Page 1Seller: Howard Bromberg Sales on 10\/12\/2008 were $1000.00 Sales on 12\/12\/2008 were $0.00 Sales on 13\/12\/2008 were $31.47 INVALID RECORD: Howard Bromberg XXXXYYSeller: Howard Discount...Sales Report Page 12 Sales on 08\/05\/2014 were $543.98 INVALID RECORD: William Selden 12O52014FOOFOO Sales on 30\/05\/2014 were $0.00Vier Aussagen steuern den Berichtsschreiber: INITIATE, die den Berichtsschreiber f\u00fcr den Druck vorbereitet; GENERATE, das eine Berichtsgruppe druckt; SUPPRESS, die das Drucken einer Berichtsgruppe unterdr\u00fcckt; und TERMINATE, wodurch die Berichtsverarbeitung beendet wird. F\u00fcr das obige Beispiel f\u00fcr einen Verkaufsbericht k\u00f6nnte die Verfahrenseinteilung wie folgt aussehen: OPEN INPUT sales, OUTPUT report-out INITIATE sales-report PERFORM UNTIL 1 1 READ sales AT END EXIT PERFORM END-READ VALIDATE sales-record IF valid-record GENERATE sales-on-day ELSE GENERATE invalid-sales END-IF END-PERFORM TERMINATE sales-report CLOSE sales, report-out .Die Nutzung der Report Writer-Funktion variierte stark; einige Organisationen nutzten es ausgiebig und andere \u00fcberhaupt nicht. Dar\u00fcber hinaus schwankten die Implementierungen von Report Writer in der Qualit\u00e4t, wobei diejenigen am unteren Ende manchmal \u00fcberm\u00e4\u00dfig viel Speicher zur Laufzeit verbrauchen.Verfahrensteilung[edit]Verfahren[edit]Die Abschnitte und Abs\u00e4tze in der Prozedurabteilung (zusammen Prozeduren genannt) k\u00f6nnen als Label und als einfache Unterprogramme verwendet werden. Im Gegensatz zu anderen Abteilungen m\u00fcssen Abs\u00e4tze nicht in Abschnitten sein. Die Ausf\u00fchrung durchl\u00e4uft die Prozeduren eines Programms, bis es beendet wird. Um Prozeduren als Unterprogramme zu verwenden, PERFORM Verb verwendet wird.EIN PERFORM -Anweisung \u00e4hnelt in gewisser Weise einem Prozeduraufruf in einer modernen Sprache in dem Sinne, dass die Ausf\u00fchrung zu dem Code zur\u00fcckkehrt, der dem PERFORM Anweisung am Ende des aufgerufenen Codes; es bietet jedoch keinen Mechanismus zur Parameter\u00fcbergabe oder zum Zur\u00fcckgeben eines Ergebniswerts. Wenn eine Unterroutine mit einer einfachen Anweisung wie aufgerufen wird PERFORM subroutine, dann kehrt die Steuerung am Ende der aufgerufenen Prozedur zur\u00fcck. Jedoch, PERFORM ist insofern ungew\u00f6hnlich, als es verwendet werden kann, um einen Bereich aufzurufen, der eine Sequenz mehrerer benachbarter Prozeduren umfasst. Dies geschieht mit der PERFORM sub-1 THRU sub-n konstruieren:PROCEDURE so-and-so. PERFORM ALPHA PERFORM ALPHA THRU GAMMA STOP RUN.ALPHA. DISPLAY 'A'.BETA. DISPLAY 'B'.GAMMA. DISPLAY 'C'.Die Ausgabe dieses Programms ist: “AABC”.PERFORM unterscheidet sich auch von herk\u00f6mmlichen Prozeduraufrufen dadurch, dass zumindest traditionell kein Begriff von einem Aufrufstapel vorhanden ist. Infolgedessen sind verschachtelte Aufrufe m\u00f6glich (eine Codesequenz ist PERFORM‘ed darf a ausf\u00fchren PERFORM -Anweisung selbst), erfordern jedoch besondere Sorgfalt, wenn Teile desselben Codes von beiden Aufrufen ausgef\u00fchrt werden. Das Problem tritt auf, wenn der Code im inneren Aufruf den Austrittspunkt des \u00e4u\u00dferen Aufrufs erreicht. Formaler gesagt, wenn die Kontrolle durch den Austrittspunkt von a . geht PERFORM Aufruf, der zuvor aufgerufen wurde, aber noch nicht abgeschlossen ist, legt der COBOL 2002-Standard offiziell fest, dass das Verhalten undefiniert ist.Der Grund daf\u00fcr ist, dass COBOL anstelle einer “R\u00fcckkehradresse” mit einer sogenannten Fortsetzungsadresse arbeitet. Wenn der Kontrollfluss das Ende einer Prozedur erreicht, wird die Fortsetzungsadresse nachgeschlagen und die Kontrolle wird an diese Adresse \u00fcbertragen. Vor dem Programmablauf wird die Fortsetzungsadresse f\u00fcr jede Prozedur auf die Startadresse der n\u00e4chsten Prozedur im Programmtext initialisiert, so dass bei nein PERFORM Anweisungen passieren, die Kontrolle flie\u00dft von oben nach unten durch das Programm. Aber wenn a PERFORM -Anweisung ausgef\u00fchrt wird, \u00e4ndert sie die Fortsetzungsadresse der aufgerufenen Prozedur (oder der letzten Prozedur des aufgerufenen Bereichs, wenn PERFORM THRU verwendet wurde), sodass die Kontrolle am Ende an die Anrufseite zur\u00fcckgegeben wird. Der urspr\u00fcngliche Wert wird gespeichert und anschlie\u00dfend wiederhergestellt, es gibt jedoch nur eine Speicherposition. Wenn zwei verschachtelte Aufrufe mit \u00fcberlappendem Code arbeiten, k\u00f6nnen sie die Verwaltung der Fortsetzungsadresse auf verschiedene Weise gegenseitig st\u00f6ren.[139][140]Das folgende Beispiel (aus Veerman & Verhoeven 2006) veranschaulicht das Problem:LABEL1. DISPLAY '1' PERFORM LABEL2 THRU LABEL3 STOP RUN.LABEL2. DISPLAY '2' PERFORM LABEL3 THRU LABEL4.LABEL3. DISPLAY '3'.LABEL4. DISPLAY '4'.Man k\u00f6nnte erwarten, dass die Ausgabe dieses Programms “1 2 3 4 3” lautet: Nach der Anzeige von “2” wird die zweite PERFORM bewirkt, dass “3” und “4” angezeigt werden, und dann wird der erste Aufruf mit “3” fortgesetzt. Bei herk\u00f6mmlichen COBOL-Implementierungen ist dies nicht der Fall. Eher die erste PERFORM -Anweisung setzt die Fortsetzungsadresse am Ende von LABEL3 damit es zur\u00fcck zur Anrufseite im Inneren springt LABEL1. Der Zweite PERFORM -Anweisung setzt die R\u00fcckgabe am Ende von LABEL4 \u00e4ndert aber nicht die Fortsetzungsadresse von LABEL3, wobei davon ausgegangen wird, dass es sich um die Standardfortsetzung handelt. Wenn also die innere Anrufung am Ende von ankommt LABEL3, es springt zur\u00fcck nach au\u00dfen PERFORM -Anweisung, und das Programm h\u00f6rt auf, nur “1 2 3” ausgegeben zu haben. Auf der anderen Seite sind in einigen COBOL-Implementierungen wie dem Open-Source-Compiler TinyCOBOL die beiden PERFORM -Anweisungen st\u00f6ren sich nicht und die Ausgabe ist tats\u00e4chlich “1 2 3 4 3”. Daher ist das Verhalten in solchen F\u00e4llen nicht nur (vielleicht) \u00fcberraschend, es ist auch nicht portabel.[140]Eine besondere Konsequenz dieser Einschr\u00e4nkung ist, dass PERFORM kann nicht zum Schreiben von rekursivem Code verwendet werden. Ein weiteres einfaches Beispiel, um dies zu veranschaulichen (leicht vereinfacht aus Veerman & Verhoeven 2006): MOVE 1 TO A PERFORM LABEL STOP RUN.LABEL. DISPLAY A IF A Terminator period (\"implicit termination\")IF invalid-record IF no-more-records NEXT SENTENCE ELSE READ record-file AT END SET no-more-records TO TRUE.*> Scope terminators (\"explicit termination\")IF invalid-record IF no-more-records CONTINUE ELSE READ record-file AT END SET no-more-records TO TRUE END-READ END-IFEND-IFVerschachtelte Anweisungen, die mit einem Punkt abgeschlossen werden, sind eine h\u00e4ufige Fehlerquelle. Untersuchen Sie beispielsweise den folgenden Code:IF x DISPLAY y. DISPLAY z.Hier soll angezeigt werden y und z wenn Bedingung x ist wahr. Jedoch, z wird unabh\u00e4ngig vom Wert von . angezeigt x weil das IF Anweisung wird durch einen irrt\u00fcmlichen Zeitraum beendet, nachdem DISPLAY y.Ein weiterer Fehler ist das Ergebnis des Dangling-Else-Problems, wenn zwei IF Aussagen k\u00f6nnen mit einem in Verbindung gebracht werden ELSE.IF x IF y DISPLAY aELSE DISPLAY b.Im obigen Fragment ist die ELSE assoziiert mit dem IF y Aussage statt der IF x -Anweisung, die einen Fehler verursacht. Vor der Einf\u00fchrung expliziter Geltungsbereichs-Begrenzer w\u00e4re es erforderlich, dies zu verhindern ELSE NEXT SENTENCE nach dem inneren platziert werden IF.Selbstmodifizierender Code[edit]Die urspr\u00fcngliche COBOL-Spezifikation (1959) unterst\u00fctzte die ber\u00fcchtigten ALTER X TO PROCEED TO Y -Anweisung, f\u00fcr die viele Compiler selbstmodifizierenden Code generierten. X und Y sind Verfahrensbezeichnungen, und die einzelnen GO TO Aussage im Verfahren X ausgef\u00fchrt nach einem solchen ALTER Aussage bedeutet GO TO Y stattdessen. Viele Compiler unterst\u00fctzen es immer noch,[148]Sie wurde jedoch im COBOL-Standard von 1985 als veraltet erachtet und 2002 gestrichen.Die ALTER -Anweisung wurde wenig beachtet, weil sie die “Lokalit\u00e4t des Kontexts” untergrub und die Gesamtlogik eines Programms schwer verst\u00e4ndlich machte. Wie der Lehrbuchautor Daniel D. McCracken 1976 schrieb, wenn \u201ejemand, der das Programm noch nie gesehen hat, sich so schnell wie m\u00f6glich damit vertraut machen muss, manchmal unter kritischem Zeitdruck, weil das Programm gescheitert ist \u2026 der Anblick eines GO TO -Anweisung in einem Absatz allein, die die Existenz einer unbekannten Anzahl von ALTER-Anweisungen an unbekannten Stellen im gesamten Programm signalisiert, l\u00e4sst selbst den tapfersten Programmierer Angst haben.”Hallo Welt[edit]Ein “Hallo Welt”-Programm in COBOL: IDENTIFICATION DIVISION. PROGRAM-ID. hello-world. PROCEDURE DIVISION. DISPLAY \"Hello, world!\" .Als das \u2013 mittlerweile ber\u00fchmte \u2013 \u201eHallo Welt!\u201c Programmbeispiel in Die Programmiersprache C 1978 erstmals ver\u00f6ffentlicht wurde, w\u00e4re ein \u00e4hnliches COBOL-Programmbeispiel f\u00fcr Gro\u00dfrechner \u00fcber JCL eingereicht worden, sehr wahrscheinlich mit einem Lochkartenleser und 80 Spaltenlochkarten. Die Auflistung unten, mit einer leeren DATA DIVISION, wurde mit Linux und dem Emulator System\/370 Hercules mit MVS 3.8J getestet. Die im Juli 2015 geschriebene JCL ist aus den Hercules-Tutorials und -Beispielen abgeleitet, die von Jay Moseley gehostet werden.[151] Im Einklang mit der damaligen COBOL-Programmierung wird HELLO, WORLD in Gro\u00dfbuchstaben angezeigt.\/\/COBUCLG JOB (001),'COBOL BASE TEST', 00010000\/\/ CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 00020000\/\/BASETEST EXEC COBUCLG 00030000\/\/COB.SYSIN DD * 00040000 00000* VALIDATION OF BASE COBOL INSTALL 00050000 01000 IDENTIFICATION DIVISION. 00060000 01100 PROGRAM-ID. 'HELLO'. 00070000 02000 ENVIRONMENT DIVISION. 00080000 02100 CONFIGURATION SECTION. 00090000 02110 SOURCE-COMPUTER. GNULINUX. 00100000 02120 OBJECT-COMPUTER. HERCULES. 00110000 02200 SPECIAL-NAMES. 00120000 02210 CONSOLE IS CONSL. 00130000 03000 DATA DIVISION. 00140000 04000 PROCEDURE DIVISION. 00150000 04100 00-MAIN. 00160000 04110 DISPLAY 'HELLO, WORLD' UPON CONSL. 00170000 04900 STOP RUN. 00180000\/\/LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR 00190000\/\/ DD DSNAME=SYS1.LINKLIB,DISP=SHR 00200000\/\/GO.SYSPRINT DD SYSOUT=A 00210000\/\/ 00220000Nach dem Senden der JCL zeigte die MVS-Konsole Folgendes an: 19.52.48 JOB 3 $HASP100 COBUCLG ON READER1 COBOL BASE TEST 19.52.48 JOB 3 IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG ISSUED 19.52.48 JOB 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP1 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING 19.52.48 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING 19.52.48 JOB 3 IEFACTRT - Stepname Procstep Program Retcode 19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000 19.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 0000 19.52.48 JOB 3 +HELLO, WORLD 19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000 19.52.48 JOB 3 $HASP395 COBUCLG ENDEDZeile 10 der obigen Konsolenauflistung ist zur Wirkung hervorgehoben, die Hervorhebung ist nicht Teil der eigentlichen Konsolenausgabe.Die zugeh\u00f6rige Compiler-Auflistung generierte \u00fcber vier Seiten technische Details und Informationen zur Jobausf\u00fchrung f\u00fcr die einzelne Ausgabezeile der 14 COBOL-Zeilen.Rezeption[edit]Fehlende Struktur[edit]In den 1970er Jahren wurde das Paradigma der strukturierten Programmierung zunehmend verbreitet. Edsger Dijkstra, ein herausragender Informatiker, schrieb einen Brief an den Herausgeber von Communications of the ACM, ver\u00f6ffentlicht 1975 mit dem Titel “Wie sagen wir Wahrheiten, die weh tun k\u00f6nnten?”, in dem er COBOL und mehrere andere zeitgen\u00f6ssische Sprachen kritisierte; bemerkt, dass “die Verwendung von COBOL den Verstand l\u00e4hmt”.[152]In einem ver\u00f6ffentlichten Dissens zu Dijkstras Bemerkungen behauptete der Informatiker Howard E. Tompkins, dass unstrukturiertes COBOL dazu neigt, “von Programmierern geschrieben zu werden, die nie die Vorteile von strukturiertem COBOL gut gelehrt haben”, und argumentierte, dass es in erster Linie um die Ausbildung gehe.[153]Eine Ursache f\u00fcr Spaghetti-Code war der GO TO Stellungnahme. Versuche zu entfernen GO TOs von COBOL-Code f\u00fchrte jedoch zu verschachtelten Programmen und reduzierter Codequalit\u00e4t.GO TOs wurden weitgehend ersetzt durch die PERFORM Anweisungen und Prozeduren, die die modulare Programmierung f\u00f6rderten und einen einfachen Zugriff auf leistungsstarke Schleifenfunktionen erm\u00f6glichten. Jedoch, PERFORM konnte nur mit Prozeduren verwendet werden, so dass Schleifenk\u00f6rper nicht dort lokalisiert waren, wo sie verwendet wurden, was die Verst\u00e4ndlichkeit von Programmen erschwerte.COBOL-Programme waren ber\u00fcchtigt daf\u00fcr, monolithisch zu sein und keine Modularisierung zu haben.[156]COBOL-Code konnte nur durch Verfahren modularisiert werden, die sich f\u00fcr gro\u00dfe Systeme als unzureichend erwiesen. Es war nicht m\u00f6glich, den Zugriff auf Daten einzuschr\u00e4nken, d. h. ein Verfahren konnte darauf zugreifen und es \u00e4ndern irgendein Datenelement. Au\u00dferdem gab es keine M\u00f6glichkeit, Parameter an ein Verfahren zu \u00fcbergeben, eine Unterlassung, die Jean Sammet als den gr\u00f6\u00dften Fehler des Ausschusses ansah. Eine weitere Komplikation ergab sich aus der F\u00e4higkeit, PERFORM THRU eine festgelegte Reihenfolge von Verfahren. Dies bedeutete, dass die Kontrolle zu jeder Prozedur springen und von ihr zur\u00fcckkehren konnte, was einen komplizierten Kontrollfluss erzeugte und es einem Programmierer erm\u00f6glichte, die Single-Entry-Single-Exit-Regel zu brechen.Diese Situation verbesserte sich, als COBOL mehr Funktionen einf\u00fchrte. COBOL-74 f\u00fcgte Unterprogramme hinzu, die Programmierern die M\u00f6glichkeit geben, die Daten zu kontrollieren, auf die jeder Teil des Programms zugreifen kann. COBOL-85 f\u00fcgte dann verschachtelte Unterprogramme hinzu, sodass Programmierer Unterprogramme ausblenden k\u00f6nnen. Eine weitere Kontrolle \u00fcber Daten und Code kam 2002, als objektorientierte Programmierung, benutzerdefinierte Funktionen und benutzerdefinierte Datentypen aufgenommen wurden.Nichtsdestotrotz verwendet viele wichtige Legacy-COBOL-Software unstrukturierten Code, der nicht mehr wartbar geworden ist. Es kann zu riskant und kostspielig sein, auch nur einen einfachen Codeabschnitt zu \u00e4ndern, da er von unbekannten Orten auf unbekannte Weise verwendet werden kann.[160]Kompatibilit\u00e4tsprobleme[edit]COBOL sollte eine hochportable, “gemeinsame” Sprache sein. Bis 2001 waren jedoch rund 300 Dialekte entstanden.[161] Eine Quelle f\u00fcr Dialekte war der Standard selbst: Der Standard von 1974 bestand aus einem obligatorischen Kern und elf Funktionsmodulen, die jeweils zwei oder drei Unterst\u00fctzungsebenen enthielten. Dies erlaubte 104.976 offizielle Varianten.[162]COBOL-85 war mit fr\u00fcheren Versionen nicht vollst\u00e4ndig kompatibel und seine Entwicklung war umstritten. Joseph T. Brophy, der CIO von Travellers Insurance, leitete die Bem\u00fchungen, COBOL-Benutzer \u00fcber die hohen Kosten f\u00fcr die Neuprogrammierung der Implementierung des neuen Standards zu informieren. Infolgedessen erhielt der ANSI COBOL-Ausschuss mehr als 2.200 Briefe aus der \u00d6ffentlichkeit, meist negative, die den Ausschuss zu \u00c4nderungen aufforderten. Andererseits wurde angenommen, dass die Umstellung auf COBOL-85 die Produktivit\u00e4t in den kommenden Jahren steigern w\u00fcrde, was die Umstellungskosten rechtfertigte.Ausf\u00fchrliche Syntax[edit]COBOL: \/koh\u2032bol\/, n.Eine schwache, ausf\u00fchrliche und schlaffe Sprache, die von Code-Grindern verwendet wird, um langweilige, sinnlose Dinge auf Dinosaurier-Mainframes zu tun. […] Sein Name wird selten ohne rituelle \u00c4u\u00dferungen von Ekel oder Entsetzen ausgesprochen.Die Jargon-Datei 4.4.8.[165]Die COBOL-Syntax wurde oft wegen ihrer Ausf\u00fchrlichkeit kritisiert. Bef\u00fcrworter sagen, dass dies dazu gedacht war, den Code selbstdokumentierend zu machen, was die Programmwartung erleichtert. COBOL sollte auch f\u00fcr Programmierer leicht zu erlernen und zu verwenden sein, w\u00e4hrend es f\u00fcr nicht-technisches Personal wie Manager lesbar ist. Der Wunsch nach Lesbarkeit f\u00fchrte zur Verwendung einer englisch\u00e4hnlichen Syntax und Strukturelementen wie Substantiven, Verben, Klauseln, S\u00e4tzen, Abschnitten und Divisionen. 1984 hatten die Betreuer von COBOL-Programmen jedoch Schwierigkeiten, mit “unverst\u00e4ndlichem” Code umzugehen, und die wichtigsten \u00c4nderungen in COBOL-85 dienten dazu, die Wartung zu erleichtern.[88]Jean Sammet, ein Mitglied des Kurzstrecken-Komitees, bemerkte, dass “wenig versucht wurde, den professionellen Programmierer zu bedienen, tats\u00e4chlich neigen Leute, deren Hauptinteresse das Programmieren ist, dazu, mit COBOL sehr unzufrieden zu sein”, was sie der ausf\u00fchrlichen Syntax von COBOL zuschrieb.[edit]Die COBOL-Community war schon immer von der Informatik-Community isoliert. An der Entwicklung von COBOL waren keine akademischen Informatiker beteiligt: \u200b\u200bAlle Mitglieder des Ausschusses kamen aus der Wirtschaft oder der Regierung. Die damaligen Informatiker interessierten sich mehr f\u00fcr Bereiche wie numerische Analysis, Physik und Systemprogrammierung als f\u00fcr die kommerziellen Dateiverarbeitungsprobleme, mit denen sich die COBOL-Entwicklung befasste. Jean Sammet f\u00fchrte die Unbeliebtheit von COBOL auf eine anf\u00e4ngliche “Snob-Reaktion” aufgrund seiner Uneleganz, den Mangel an einflussreichen Informatikern, die am Designprozess beteiligt waren, und eine Verachtung f\u00fcr die Gesch\u00e4ftsdatenverarbeitung zur\u00fcck. Die COBOL-Spezifikation verwendete eine einzigartige “Notation” oder Metasprache, um ihre Syntax zu definieren, und nicht die neue Backus-Naur-Form, von der das Komitee nichts wusste. Dies f\u00fchrte zu “starker” Kritik.Sp\u00e4ter litt COBOL unter Materialmangel; es dauerte bis 1963, bis einf\u00fchrende B\u00fccher erschienen (Richard D. Irwin ver\u00f6ffentlichte 1966 ein College-Lehrbuch \u00fcber COBOL).[177] 1985 gab es in der Library of Congress doppelt so viele B\u00fccher \u00fcber Fortran und viermal so viele \u00fcber BASIC wie \u00fcber COBOL. Universit\u00e4tsprofessoren lehrten modernere, auf dem neuesten Stand der Technik befindliche Sprachen und Techniken anstelle von COBOL, das den Charakter einer “Handelsschule” hatte. Donald Nelson, Vorsitzender des CODASYL COBOL-Komitees, sagte 1984, dass “Akademiker … COBOL hassen” und dass Informatikabsolventen “COBOL hassen” eingedrillt h\u00e4tten.[179] Eine Umfrage von Micro Focus aus dem Jahr 2013 ergab, dass 20 % der Universit\u00e4tsakademiker COBOL f\u00fcr veraltet oder tot hielten und dass 55 % glaubten, dass ihre Studenten COBOL f\u00fcr veraltet oder tot hielten. Dieselbe Umfrage ergab auch, dass nur 25 % der Akademiker COBOL-Programmierung auf ihrem Lehrplan hatten, obwohl 60 % der Meinung waren, dass sie es unterrichten sollten.[180]Im Gegensatz dazu war COBOL 2003 in 80 % der Lehrpl\u00e4ne f\u00fcr Informationssysteme in den Vereinigten Staaten enthalten, der gleiche Anteil wie C++ und Java.Es gab auch erhebliche Herablassung gegen\u00fcber COBOL in der Gesch\u00e4ftswelt von Benutzern anderer Sprachen, zum Beispiel FORTRAN oder Assembler, was bedeutete, dass COBOL nur f\u00fcr nicht anspruchsvolle Probleme verwendet werden konnte.[citation needed]Bedenken bez\u00fcglich des Designprozesses[edit]An der Kompetenz des Normenausschusses wurden Zweifel ge\u00e4u\u00dfert. Das kurzfristige Ausschussmitglied Howard Bromberg sagte, es gebe “wenig Kontrolle” \u00fcber den Entwicklungsprozess und er sei “geplagt von Personaldiskontinuit\u00e4t und … Mangel an Talenten”. Jean Sammet und Jerome Garfunkel stellten auch fest, dass \u00c4nderungen, die in einer Revision des Standards eingef\u00fchrt wurden, in der n\u00e4chsten wieder r\u00fcckg\u00e4ngig gemacht w\u00fcrden, sowohl aufgrund von \u00c4nderungen der Mitglieder des Standardkomitees als auch aufgrund objektiver Beweise.[182]COBOL-Standards haben wiederholt unter Verz\u00f6gerungen gelitten: COBOL-85 kam f\u00fcnf Jahre sp\u00e4ter als erhofft an,[183]COBOL 2002 war f\u00fcnf Jahre zu sp\u00e4t,[2]und COBOL 2014 war sechs Jahre zu sp\u00e4t.[95][184]Um Verz\u00f6gerungen entgegenzuwirken, erlaubte das Standardkomitee die Erstellung optionaler Erg\u00e4nzungen, die Funktionen schneller hinzuf\u00fcgen w\u00fcrden, als auf die n\u00e4chste Standardrevision warten zu m\u00fcssen. Einige Ausschussmitglieder \u00e4u\u00dferten jedoch Bedenken hinsichtlich Inkompatibilit\u00e4ten zwischen Implementierungen und h\u00e4ufigen \u00c4nderungen des Standards.[185]Einfl\u00fcsse auf andere Sprachen[edit]Die Datenstrukturen von COBOL beeinflussten nachfolgende Programmiersprachen. Seine Datensatz- und Dateistruktur beeinflusste PL\/I und Pascal, und die REDEFINES -Klausel war ein Vorl\u00e4ufer von Pascals Variant-Records. Explizite Dateistrukturdefinitionen gingen der Entwicklung von Datenbankverwaltungssystemen voraus, und aggregierte Daten waren ein bedeutender Fortschritt gegen\u00fcber den Arrays von Fortran.PICTURE Datendeklarationen wurden mit geringf\u00fcgigen \u00c4nderungen in PL\/I aufgenommen.COBOLs COPY Obwohl die Einrichtung als “primitiv” angesehen wurde, beeinflusste sie die Entwicklung von Include-Richtlinien.Der Fokus auf Portabilit\u00e4t und Standardisierung bedeutete, dass in COBOL geschriebene Programme portierbar waren und die Verbreitung der Sprache auf eine Vielzahl von Hardwareplattformen und Betriebssystemen erleichterte.[187] Zudem schr\u00e4nkt die klar definierte Divisionsstruktur die Definition externer Referenzen auf die Environment Division ein, was insbesondere Plattformwechsel vereinfacht.[188]Siehe auch[edit]^ Beeinflusst insbesondere die objektorientierten Funktionen von COBOL 2002.[2][3][4]^ Der Grabstein befindet sich derzeit im Computer History Museum.[61]^ Herstellerspezifische Erweiterungen f\u00fchren dazu, dass viele Implementierungen weitaus mehr haben: Eine Implementierung erkennt \u00fcber 1.100 Schl\u00fcsselw\u00f6rter.[114]Verweise[edit]Zitate[edit]^ ein B Sammet, Jean E. (M\u00e4rz 2000). “Die wahren Sch\u00f6pfer von Cobol”. IEEE-Software. 17 (2): 30\u201332. mach:10.1109\/52.841602. ISSN 1937-4194. Das Short-Range-Komitee arbeitete ab Juni 1959 flei\u00dfig, aber es bereitete gro\u00dfe Schwierigkeiten, ein ziemlich gro\u00dfes Komitee dazu zu bringen, eine Programmiersprache zu entwickeln. Im November ernannte der Vorsitzende des Short-Range-Ausschusses sechs Personen zur Entwicklung von Spezifikationen zur Pr\u00fcfung: William Selden und Gertrude Tierney (IBM), Howard Bromberg und Norman Discount (RCA) sowie Vernon Reeves und Jean E. Sammet (Sylvania Electric Products). Wir arbeiteten im November 1959 zwei volle Wochen (einschlie\u00dflich einiger Rund-um-die-Uhr-Sitzungen) und schickten die vorgeschlagenen Spezifikationen an den gesamten Kurzstreckenausschuss, der fast alle akzeptierte. Nach einiger \u00dcberarbeitung (durch dieselben sechs Personen) reichten wir die Spezifikationen im Dezember als Abschlussbericht an den Exekutivausschuss ein, der sie im Januar 1960 akzeptierte. Nach einigen weiteren \u00dcberarbeitungen gab die Regierungsdruckerei Cobol 60 heraus. […] [Grace Hopper] beteiligte sich nicht an seiner Arbeit, au\u00dfer durch die allgemeine Anleitung, die sie ihren Mitarbeitern, die direkte Mitglieder des Ausschusses waren, gab. W\u00e4hrend ihr indirekter Einfluss sehr wichtig war, sind die h\u00e4ufig wiederholten Aussagen, dass “Grace Hopper entwickelte Cobol” oder “Grace Hopper war ein Mitentwickler von Cobol” oder “Grace Hopper ist die Mutter von Cobol” leider nicht korrekt.^ ein B C Saade, Henry; Wallace, Anna (Oktober 1995). “COBOL ’97: Ein Statusbericht”. Dr. Dobbs Tagebuch. Archiviert von das Original am 22. April 2014. Abgerufen 21. April 2014.^ ein B Arranga, Edmund C.; Coyle, Frank P. (Februar 1998). Objektorientiertes COBOL. Cambridge University Press. P. 15. ISBN 978-0132611404. Der Stil von objektorientiertem COBOL spiegelt den Einfluss von Smalltalk und C++ wider.^ Arranga, Edmund C.; Coyle, Frank P. (M\u00e4rz 1997). \u201eCobol: Wahrnehmung und Realit\u00e4t\u201c. Rechner. 30 (3): 127. doi:10.1109\/2.573683. ISSN 0018-9162.^ Imajo, Tetsuji; et al. (September 2000). COBOL Script: eine gesch\u00e4ftsorientierte Skriptsprache. Konferenz zu verteilten Objekten in Unternehmen. Makuhari, Japan: IEEE. mach:10.1109\/EDOC.2000.882363. ISBN 0769508650.^ Ho, Wing Hong (7. Mai 2007). “Einf\u00fchrung in die EGL” (PDF). IBM-Softwaregruppe.^ Radin, George (1978). Wexeblat, Richard L. (Hrsg.). Die fr\u00fche Geschichte und Merkmale von PL\/I. Geschichte der Programmiersprachen. Akademische Presse (ver\u00f6ffentlicht 1981). P. 572. doi:10.1145\/800025.1198410. ISBN 0127450408.^ Mitchell, Robert L. (14. M\u00e4rz 2012). “Brain Drain: Wohin Cobol-Systeme von hier aus gehen”. Computerwelt. Abgerufen 9. Februar 2015.^ ein B C Mitchell, Robert L. (4. Oktober 2006). “Cobol: Noch nicht tot”. Computerwelt. Abgerufen 27. April 2014.^ Ensmenger, Nathan L. (2009). Die Computerboys \u00fcbernehmen: Computer, Programmierer und die Politik des technischen Know-hows. MIT-Presse. P. 100. ISBN 978-0262050937. LCCN 2009052638.^ “ISO\/IEC 1989:2014”. ISO. 26. Mai 2014. Abgerufen 7. Juni 2014.^ Ferguson, Andrew. “Eine Geschichte der Computerprogrammiersprachen”. cs.brown.edu.^ G\u00fcrer, Denise (1. Juni 2002). \u201ePionierfrauen in der Informatik\u201c. SIGCSE Bull. 34 (2): 175\u2013180. mach:10.1145\/543812.543853. ISSN 0097-8418. S2CID 2577644.^ Flahive, Paul (24. Mai 2019). \u201eWie COBOL auch mit 60 Jahren noch die Weltwirtschaft antreibt\u201c. \u00d6ffentliches Radio von Texas. Archiviert von das Original am 24. Mai 2019. Abgerufen 19. Juli 2019. (Grace Hopper) Der Code mit dem Spitznamen Oma Cobol basiert auf einigen ihrer fr\u00fcheren Arbeiten. Sie sagte \u2013 nachdem sie die Ger\u00fcchte geh\u00f6rt hatte \u2013 einer ihrer Mitarbeiter ging los und kaufte einen Granitgrabstein. \u201eEr hat das Wort COBOL in die Vorderseite schneiden lassen. Der Streich von Charles Phillips, einem Leiter des Projekts im Verteidigungsministerium, erregte die Aufmerksamkeit der Machthaber und war ein Wendepunkt, sagte sie. COBOL sollte die am weitesten verbreitete und langlebigste Computersprache der Geschichte werden.^ “Early Meetings of the Conference on Data Systems Languages”. IEEE Annals of the History of Computing. 7 (4): 316\u2013325. 1985. doi:10.1109\/MAHC.1985.10047. S2CID 35625728.^ Sammet, Jean (1978). \u201eDie Fr\u00fchgeschichte von COBOL\u201c. ACM SIGPLAN-Mitteilungen. 13 (8): 121-161. mach:10.1145\/960118.808378. S2CID 10743643.^ Adams, Vicki Porter (5. Oktober 1981). “Captain Grace M. Hopper: die Mutter von COBOL”. InfoWelt. vol. 3 Nr. 20. s. 33. ISSN 0199-6649.^ Betts, Mitch (6. Januar 1992). “Grace Hopper, Mutter von Cobol, stirbt”. Computerwelt. 26 (1): 14.^ Lohr, Steve (2008). Gehe zu: Die Geschichte der Mathe-Majors, Bridge-Spieler, Ingenieure, Schach-Zauberer, Einzelg\u00e4nger-Wissenschaftler und Bilderst\u00fcrmer \u2013 die Programmierer, die die Software-Revolution erschufen. Grundb\u00fccher. P. 52. ISBN 978-0786730766.^ “Pionierender Software-Ingenieur und Cobol-Co-Designer”.^ “M\u00fcndliche Geschichte von Captain Grace Hopper” (PDF). Museum f\u00fcr Computergeschichte. Dezember 1980. p. 37. Archiviert von das Original (PDF) am 25. Dezember 2017. Abgerufen 28. Juni 2014.^ 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.12.2003.^ ein B “Die Geschichte des COBOL-Grabsteins” (PDF). Der Computermuseumsbericht. 13: 8\u20139. Sommer 1985. Archiviert (PDF) vom Original vom 3. April 2014. Abgerufen 29. Juni 2014.^ COBOL-Grabstein. Museum f\u00fcr Computergeschichte. 1960. Abgerufen 29. Juni 2014.^ Williams, Kathleen Broome (10. November 2012). Grace Hopper: Admiral der Cybersee. Presse des US-Marineinstituts. ISBN 978-1612512655. OCLC 818867202.^ Compaq Computer Corporation: Compaq COBOL-Referenzhandbuch, Bestellnummer: AA\u2013Q2G0F\u2013TK Oktober 2000, Seite xviii; Fujitsu Corporation: Net Cobol-Sprachreferenz, Version 15, Januar 2009; IBM Corporation: Enterprise COBOL f\u00fcr 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.^ ein B C D Follet, Robert H.; Sammet, Jean E. (2003). “Standards f\u00fcr Programmiersprachen”. In Ralston, Anthony; Reilly, Edwin D.; Hemmendinger, David (Hrsg.). Enzyklop\u00e4die der Informatik (4. Aufl.). Wiley. P. 1467. ISBN 978-0470864128.^ Taylor, Alan (2. August 1972). “Nur wenige erkennen die verschwendeten Ressourcen lokaler DP-Schulen”. Computerwelt. 6 (31): 11.^ Triance, JM (1974). Programmierung in COBOL: Ein Kurs mit zw\u00f6lf Fernsehvortr\u00e4gen. Manchester University Press. P. 87. ISBN 978-0719005923.^ Baird, George N.; Oliver, Paul (Mai 1977). \u201e1974-Standard (X3.23-1974)\u201c. Programmiersprachenstandards \u2013 wer braucht sie? (PDF) (Pr\u00fcfbericht). Abteilung der Marine. S. 19\u201321. Archiviert (PDF) vom Original vom 7. Januar 2014. Abgerufen 7. Januar 2014.^ Culleton, John R., Jr. (23. Juli 1975). “‘Die Verf\u00fcgbarkeit von Spotty ist ein Problem…” Computerwelt. 9 (30): 17.^ Simmons, Williams B. (18. Juni 1975). “Verfehlt Cobols Report Writer wirklich das Ziel?”. Computerwelt. 9 (25): 20.^ Shoor, Rita (26. Januar 1981). “Benutzer droht Klage wegen Ansi Cobol-80”. Computerwelt. f\u00fcnfzehn (4): 1, 8.^ Shoor, Rita (26. Oktober 1981). “DPMA nimmt Stellung gegen Cobol Draft”. Computerwelt. f\u00fcnfzehn (43): 1\u20132.^ ein B C Gallant, John (16. September 1985). “Der \u00fcberarbeitete Cobol-Standard k\u00f6nnte Ende ’85 fertig sein”. Computerwelt. 19 (37): 1, 8.^ ein B “Experte spricht Cobol 85-Standard an”. Computerwelt. 19 (37): 41, 48. 16. September 1985.^ Paul, Lois (15. M\u00e4rz 1982). “Antworten auf Cobol-80 \u00fcberw\u00e4ltigend negativ”. Computerwelt. 16 (11): 1, 5.^ Paul, Lois (25. April 1983). “Studie sieht wenige Probleme beim Wechsel zu Cobol-8X”. Computerwelt. 17 (17): 1, 6.^ Gillin, Paul (19. November 1984). “DEC-Benutzer haben einen Vorsprung bei der Implementierung von Cobol-80”. Computerwelt. 18 (47): 1, 6.^ Roy, MK; Dastidar, D. Ghost (1. Juni 1989). \u201eEigenschaften von COBOL-85\u201c. COBOL-Programmierung: Probleme und L\u00f6sungen (2. Aufl.). McGraw-Hill-Ausbildung. S. 438\u2013451. ISBN 978-0074603185.^ Robinson, Brian (9. Juli 2009). “Cobol bleibt trotz seines Alters ein alter Standby-Modus bei Agenturen”. FCW. Mediengruppe des \u00f6ffentlichen Sektors. Abgerufen 26. April 2014.^ ein B “COBOL-Standards”. Mikrofokus. Archiviert von das Original am 31. M\u00e4rz 2004. Abgerufen 2. September 2014.^ “NetCOBOL f\u00fcr .Net”. netcobol.com. GTSoftware. 2013. Archiviert von das Original am 8. Juli 2014. Abgerufen 29. Januar 2014.^ “Eine Liste der Codasyl Cobol-Funktionen”. Computerwelt. 18 (37): ID\/28. 10. September 1984. Abgerufen 8. Juni 2014.^ ein B “JTC1\/SC22\/WG4 \u2013 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.^ 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). Die Proceedings der Informationssystem-Bildungskonferenz 2000. 17 (126). Archiviert von das Original (PDF) am 17. August 2016. Abgerufen 30. September 2012.^ “Cobol Brain Drain: Umfrageergebnisse”. Computerwelt. 14. M\u00e4rz 2012. Abgerufen 27. April 2014.^ Powner, David A. (25. Mai 2016). “Bundesbeh\u00f6rden m\u00fcssen alternde Altsysteme angehen” (PDF). Amt f\u00fcr Rechenschaftspflicht der Regierung. P. 18. Archiviert von das Original (PDF) am 15. Juni 2016. Abgerufen 19. Juli 2019. Mehrere Beh\u00f6rden wie das Department of Agriculture (USDA), DHS, HHS, Justice, Treasury und VA berichteten, dass sie die Common Business Oriented Language (COBOL) \u2013 eine Programmiersprache, die Ende der 1950er und Anfang der 1960er Jahre entwickelt wurde \u2013 verwenden, um ihr Erbe zu programmieren Systeme. Es ist allgemein bekannt, dass Agenturen je nach Bedarf und Machbarkeit auf modernere, wartbare Sprachen umsteigen m\u00fcssen.^ “COBOL-Blues”. Reuters. Abgerufen 8. April 2020.^ Teplitzky, Phil (25. Oktober 2019). “Schlie\u00dfen der COBOL-Programmierf\u00e4higkeitsl\u00fccke”. IBM Systems Magazine, IBM Z. Abgerufen 11. Juni 2020.^ Lee, Alicia (8. April 2020). “Dringend gesucht: Menschen, die eine halbe Jahrhunderte alte Computersprache beherrschen, damit Staaten Arbeitslosenantr\u00e4ge bearbeiten k\u00f6nnen”. CNN. Abgerufen 8. April 2020.^ Lange, Heidekraut; Stein, Jeff; Rein, Lisa; Romm, Tony (17. April 2020). \u201eStimuluschecks und andere Coronavirus-Hilfen, die durch veraltete Technologie und felsige Regierungseinf\u00fchrung behindert werden\u201c. Die Washington Post. Abgerufen 19. April 2020.^ “Tabelle der reservierten W\u00f6rter”. Micro Focus Visual COBOL 2.2 COBOL-Sprachreferenz. Mikrofokus. Abgerufen 3. M\u00e4rz 2014.^ “Dateiorganisationen”. Dateihandhabung. Mikrofokus. 1998. Abgerufen 27. Juni 2014.^ Hubbell, Thane (1999). Sams Teach Yourself COBOL in 24 Stunden. SAMS-Publishing. P. 40. ISBN 978-0672314537. LCCN 98087215.^ Feld, John; Ramalingam, G. (September 1999). Identifizieren der Verfahrensstruktur in Cobol-Programmen (PDF). EINF\u00dcGEN ’99. mach:10.1145\/381788.316163. ISBN 1581131372.^ ein B C Veerman, Niels; Verhoeven, Ernst-Jan (November 2006). “Cobol-Minenfeld-Erkennung” (PDF). Software \u2013 Praxis und Erfahrung. 36 (14). mach:10.1002\/sp.v36:14. Archiviert von das Original (PDF) am 6. M\u00e4rz 2007.^ Beispiele f\u00fcr Compiler-Unterst\u00fctzung f\u00fcr ALTER ist im Folgenden zu sehen:Tiffin, Brian (18. September 2013). “September 2013”. GNU Cobol. Archiviert von das Original am 5. Mai 2014. Abgerufen 5. Januar 2014.“Die ALTER-Anweisung”. Micro Focus Visual COBOL 2.2 f\u00fcr Visual Studio 2013 COBOL-Sprachreferenz. Mikrofokus. Abgerufen 5. Januar 2014.“ALTER-Anweisung (Kern)” (PDF). COBOL85-Referenzhandbuch. Fujitsu. November 1996. p. 555. Archiviert von das Original (PDF) am 6. Januar 2014. Abgerufen 5. Januar 2014.“ALTER-Anweisung”. Enterprise COBOL f\u00fcr z\/OS-Sprachreferenz. IBM. Juni 2013. Abgerufen 5. Januar 2014.^ 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\u00f6nnten?”. Universit\u00e4t von Texas in Austin. EWD498. Archiviert von das Original am 2. Mai 2017. Abgerufen 29. August 2007.^ Tompkins, HE (1983). “Zur Verteidigung der Lehre von strukturiertem COBOL als Informatik”. ACM SIGPLAN-Mitteilungen. 18 (4): 86\u201394. mach:10.1145\/948176.948186. S2CID 33803213.^ Coughlan, Michael (16. M\u00e4rz 2014). Einstieg in COBOL f\u00fcr Programmierer. Apress. P. 4. ISBN 978-1430262534. Abgerufen 13. August 2014.^ \u201eCOBOL und Legacy Code als systemisches Risiko | nackter Kapitalismus\u201c. 19. Juli 2016. Abgerufen 23. Juli 2016.^ L\u00e4mmel, Ralf; Verhoef, Chris (November\u2013Dezember 2001). “Das 500-Sprachen-Problem knacken” (PDF). IEEE-Software. 18 (6): 79. doi:10.1109\/52.965809. hdl:1871\/9853. Archiviert von das Original (PDF) am 19.08.2014.^ Howkins, TJ; Harandi, MT (April 1979). “Auf dem Weg zu tragbarerem COBOL”. Das Computerjournal. 22 (4): 290. doi:10.1093\/comjnl\/22.4.290.^ 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.^ “Archivierte Kopie”. Archiviert von das Original am 5. M\u00e4rz 2016. Abgerufen 25. Februar 2016.CS1-Wartung: archivierte Kopie als Titel (Link)^ “Ein Interview: Cobol-Verteidiger”. Computerwelt. 18 (37): ID\/29\u2013ID\/32. 10. September 1984. Abgerufen 8. Juni 2014.^ \u201eDie Wissenschaft braucht mehr Unterst\u00fctzung, um die IT-Kompetenzl\u00fccke zu schlie\u00dfen\u201c (Pressemitteilung). Mikrofokus. 7. M\u00e4rz 2013. Abgerufen 4. August 2014.^ Sammet, Jean; Garfunkel, Jerome (Oktober 1985). \u201eZusammenfassung der \u00c4nderungen in COBOL, 1960-1985\u201c. Annalen der Geschichte der Informatik. 7 (4): 342. doi:10.1109\/MAHC.1985.10033. S2CID 17940092.^ Cook, Margaret M. (Juni 1978). Ghosh, Shakti P.; Liu, Leonard Y. (Hrsg.). Datenbankeinrichtung f\u00fcr COBOL 80 (PDF). 1978 Nationale Computerkonferenz. Anaheim, Kalifornien: AFIPS-Presse. S. 1107\u20131112. mach:10.1109\/AFIPS.1978.63. LCCN 55-44701. Abgerufen 2. September 2014. Das fr\u00fcheste Datum, an dem ein neuer COBOL-Standard entwickelt und genehmigt werden k\u00f6nnte, ist das Jahr 1980 […].^ \u201eBeschl\u00fcsse der WG4-Sitzung vom 24. \u2013 26.\u201328. Juni 2003 Las Vegas, Nevada, USA\u201c. 11. Juli 2003. p. 1. Archiviert von das Original (doc) am 8. M\u00e4rz 2016. Abgerufen 29. Juni 2014. eine \u00dcberarbeitung des COBOL-Standards vom Juni 2008^ Babcock, Charles (14. Juli 1986). “Cobol-Standard-Add-Ons geschunden”. Computerwelt. 20 (28): 1, 12.^ Dies ist zu sehen in:^ Coughlan, Michael (2002). “Einf\u00fchrung in COBOL”. Abgerufen 3. Februar 2014.Quellen[edit]Carr, Donald E.; Kizior, Ronald J. (31. Dezember 2003). “Weitere Relevanz von COBOL in Wirtschaft und Wissenschaft: Aktueller Stand und Vergleich mit der Jahr-2000-Studie” (PDF). Zeitschrift f\u00fcr Wirtschaftsinformatik. 1 (52). ISSN 1545-679X. Abgerufen 4. August 2014.CODASYL (Juli 1969). “CODASYL COBOL Journal der Entwicklung 1968”. Codasyl Cobal Journal of Development. Nationales B\u00fcro f\u00fcr Standards. ISSN 0591-0218. LCCN 73601243.Conner, Richard L. (14. Mai 1984). “Cobol, dein Alter zeigt sich”. Computerwelt. 18 (20): ID\/7\u2013ID\/18. ISSN 0010-4841.Cutler, Gary (9. April 2014). “GNU COBOL-Programmierhandbuch” (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 IS 1989:2001 \u2013 Programmiersprache COBOL”. ISO. Archiviert von das Original (ZIP-PDF) am 24. Januar 2002. Abgerufen 2. September 2014. (Link geht zu Entwurf N 0147)ISO\/IEC JTC 1\/SC 22\/WG 4 (31. Oktober 2014). INCITS\/ISO\/IEC 1989:2014 [2014] \u2013 Programmiersprache COBOL. INCITS.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). Wexeblat, Richard L. (Hrsg.). Transkript der Frage-und-Antwort-Sitzung. Geschichte der Programmiersprachen. Akademische Presse (ver\u00f6ffentlicht 1981). P. 263. mach:10.1145\/800025.1198370. ISBN 0127450408.Marcotty, Michael (1978b). Wexeblat, Richard L. (Hrsg.). Volltext aller eingereichten Fragen. Geschichte der Programmiersprachen. Akademische Presse (ver\u00f6ffentlicht 1981). P. 274. mach: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 gilt als sch\u00e4dlich”. Mitteilungen des ACM. 35 (8): 125\u2013128. mach:10.1145\/135226.376106. S2CID 18845698.Sammet, Jean E. (Mai 1961). Eine Methode zur Kombination von ALGOL und COBOL. Vortr\u00e4ge auf der gemeinsamen westlichen IRE-AIEE-ACM-Computerkonferenz vom 9. bis 11. Mai 1961. ACM. S. 379\u2013387. mach:10.1145\/1460690.1460734.Sammet, Jean E. (1978a). Wexeblat, Richard L. (Hrsg.). Die fr\u00fche Geschichte von COBOL. Geschichte der Programmiersprachen. Akademische Presse (ver\u00f6ffentlicht 1981). mach:10.1145\/800025.1198367. ISBN 0127450408.Sammet, Jean E. (1978b). Wexeblat, Richard L. (Hrsg.). Transkript der Pr\u00e4sentation. Geschichte der Programmiersprachen. Akademische Presse (ver\u00f6ffentlicht 1981). mach:10.1145\/800025.1198368. ISBN 0127450408.Sammet, Jean E. (23. Juli 2004). “KOBOL”. In Reilly, Edwin D. (Hrsg.). Kurze Enzyklop\u00e4die der Informatik. Wiley. ISBN 978-0470090954. OCLC 249810423.Shneiderman, B. (Oktober 1985). \u201eDie Beziehung zwischen COBOL und Informatik\u201c. Annalen der Geschichte der Informatik. 7 (4): 348\u2013352. mach:10.1109\/MAHC.1985.10041. S2CID 1009406.Externe Links[edit] (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki25\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki25\/2021\/10\/28\/cobol-wikipedia\/#breadcrumbitem","name":"COBOL \u2013 Wikipedia"}}]}]