acronym common business oriented language compiled english like computer programming language designed business use procedural object oriented primarily business finance administrative systems companies governments widely legacy applications deployed computers large scale batch transaction processing jobs declining popularity retirement experienced programmers programs migrated new platforms rewritten modern languages replaced software packages programming purely maintain existing applications designed partly based previous programming language design work commonly referred grand mother created effort create portable programming language data processing intended promptly forced computer manufacturers provide resulting widespread adoption standardized revised times expansions include support structured object oriented programming current standard english like designed self documenting highly uses reserved words contrast modern like english like case code split divisions identification environment data procedure containing rigid hierarchy sections sentences lacking large standard library standard statements functions class academic computer scientists generally business applications created involved design effectively designed ground computer language businessmen emphasis data types numbers strings text criticized life design process poor support structured programming resulted programs history specification background late 1950s computer users manufacturers concerned rising cost programming survey found data processing installation programming cost average translating programs run new hardware cost time new programming languages increasing rate survey suggested common business oriented language conversion far cheaper faster april representatives computer users manufacturers met organize formal meeting common business languages representatives included inventor english like data processing language group asked sponsor effort create common business language delegation impressed director thought thoroughly understood problems operated computers order spent million implementing programs run portable programs save time reduce costs ease modernization phillips agreed sponsor meeting tasked delegation drafting agenda exactly year meeting meeting held pentagon discuss creation common programming language business attended people chaired phillips concerned run data processing programs different computers mainstream language time lacked features needed write programs representatives enthusiastically described language work wide variety environments banking insurance utilities inventory control agreed unanimously people able program new language restricted limitations contemporary technology majority agreed language use english capable change machine independent easy use expense power meeting resulted creation steering committee long range committees short range committee given september months produce specifications interim language improved committees official mission identify strengths weaknesses existing programming languages explicitly direct create new language deadline met disbelief short range committee member described month deadline gross optimism doubted language steering committee met june agreed entire activity form executive committee short range committee members representing computer manufacturers government agencies computer manufacturers minneapolis government agencies air_force navy committee chaired work began investigating data description statements existing applications user experiences committee mainly examined flow programming languages flow language particularly influential implemented derivative minor changes flow inventor served technical adviser committee flow major contributions long variable names english words commands separation data descriptions instructions language invented regarded competitor short range committee colleagues features incorporated look like dominated design process said strong bias committee members included case author manual intermediate range committee member attended meeting support language encourage use expressions sent memo short range committee efforts create language based english commented flow extremely small influence furthermore said claim work influenced flow people happy wouldn try knock features incorporated included picture clause improved statement need robust file management system committee work subject great debate members thought language result design committee felt better languages examined felt language complex simple controversial features included considered useless advanced data processing users features included expressions table point controversy context sensitive effect context sensitive rejected approach later partially little consideration given interaction operating systems existed time functions thought purely mathematical use data processing specifications presented september fell short expectations noted contains rough spots requires additions later described given december improve mid september meeting committee discussed new language suggestions included busy business system information system language suggested october intermediate range committee received copies fact language specification created features impressed committee passed resolution base blow short range committee good progress specification despite technically superior fact created mind manufacturer user consensus lacked implementation allowing supporters flow based resolution representative blocked fact work implementation waste soon apparent committee large progress quickly frustrated bought engraved sent demonstrate displeasure sub committee formed analyze existing languages individuals sub committee work creating specification leaving short range committee review modify work producing finished specification specifications approved january sent government printing office printed language stated objectives allow efficient portable programs easily written allow users new systems minimal effort cost suitable inexperienced programmers later created answer questions users vendors improve expand specifications list manufacturers planning build grew september manufacturers joined general_electric represented manufacturers announced planned integrate languages respectively contrast planned replace language worked creating program ran august december program albeit minor changes ran computer computer demonstrating compatibility achieved relative influences languages continues day recommended advisory printed reference industry language property company group companies organization group organizations expressed implied contributor accuracy functioning programming system language responsibility assumed contributor committee connection authors copyright holders material follows flow trademark commercial translator form fact specifically authorized use material specifications authorization extends reproduction use specifications programming similar publications logical flaws found leading warn interpreted reluctant short term committee enacted total cleanup march reported remained early primitive slow navy evaluation found compilation speeds statements minute increased statements minute observed increasing memory drastically increase speed compilation costs varied wildly costs statement late announced primary development language development cease specification revised times years publication replaced replaced extended specifications introduced sort report writer facilities added facilities corrected flaws identified late letter short range committee edition brought specifications introduced facilities handling mass storage files tables efforts began overcome versions late formed groups create standards produced august cornerstone later versions version known adopted widely programming language world independently committee working improving language described new versions including changes new inter program communication file merging facilities improved string handling library inclusion features independent committee identify features popular warrant implementing japanese standard committee known vice president complained thirds community know committee existence poor lacking funds public documents minutes meetings change proposals freely available published revised version containing new features file organizations statement module deleted features included note statement examine statement replaced inspect defined random access module superseded new relative changes rendered existing statements incompatible new standard report writer slated removed reinstated standard published later adopted updated standard june work began proposed standard commonly called differed significantly previous causing concerns conversion costs january senior vice president threatened sue standard committee upwards compatible described previous conversions million line code base non productive complete waste programmer resources later year said strongly opposed new standard citing conversion costs enhancements forced user public review period committee received responses negative form letters responses detailed analyses effect systems conversion costs predicted cents line code fewer dozen responses favor proposed standard withdrew opposition standard citing committee public concerns year study concluded proposed standard present problems year later released users noted conversion programs posed problems new evaluate statement perform particularly received improved productivity thanks simplified control flow second public review drew mainly negative responses drew time concerns addressed late published revised standard features changed added scope end end perform end read etc continue operation statement evaluate switch statement statement set groups data default values loop bodies previously loop bodies specified separate procedure reference modification allows access status codes standard adopted year amendments followed introducing functions providing adopted amendments respectively subsequently taking primary ownership development standard object oriented estimated total billion lines existence ran business programs early 1990s work began adding object orientation revision object oriented features taken initial estimate revision completed draft available vendors including introduced object oriented based drafts revision final approved standard approved published late introduced object oriented targeting framework new features missed opportunity included features included free form code user defined functions based processing support extended character sets data types items truncated based declaration specification portable results bit data types getting freeing storage screen section text based user facility improved programming languages framework environments java published standard technical reports produced describing object processing collection classes suffered poor support completely supported standard found lack user demand new features abolition test suite test process found slow includes following changes portable results replaced data types major features optional facility report writer screen handling facility method dynamic capacity tables feature dropped draft legacy programs globally governments businesses running diverse operating systems windows reported world business ran billion lines code billion lines written annually near end 20th century year problem focus significant programming effort programmers designed systems decades particular level effort required correct code attributed large business oriented business applications use dates heavily fixed length data fields clean effort programs survey found remained use authors said survey data suggest gradual decline importance application development following years integration languages technologies adopted surveys found organizations half majority internal software managers said planned migrate said like cheaper instead businesses migrated systems expensive cheaper modern systems maintaining programs features english like describe nearly program example condition expressed greater greater complex conditions abbreviated removing repeated conditions example shortened consequence english like simple alternative word provides english like statements clauses value values program basic items words picture character strings picture clause words include reserved words user defined characters long include letters include strings hello include space character semi followed space program split divisions identification division environment division data division procedure division identification division type source element classes specified environment division program features depend system running files character sets data division declare parameters procedure division contains program statements division sub divided sections code format written formats fixed default free fixed format code aligned fit certain areas areas merged extended column program area removed introduced free format code free format code placed column file newer programming languages comments specified placed fixed format source code continuation lines present page directive replaces indicator identification division identification division identifies following code entity contains definition class interface object oriented programming classes classes factory objects containing class methods instance objects containing instance methods inheritance provide support generic programming provided classes use class interface objects stored references restricted certain type ways calling method statement acts similarly method invocation analogous functions provide way hide methods class data hidden declaring property clause leaves user way access method added environment division environment division contains configuration section input output section configuration section specify variable features currency signs character sets input output section contains file related information files supports file formats organizations relative files records traversed similarly linked list files allow records randomly accessed record unique key alternate record keys need unique files vary vendors common based relative files like files unique record key alternate keys relative record key position example 10th record key means creating record key require creation preceding records relative files allow random access common non standard extension line organization process text files records file terminated varying length data division data division split sections declare different items file section file records working storage section static local storage section automatic section parameters return value report section screen section text based user data data items declared use level numbers indicate data item item higher level number subordinate item lower level data items level number called records items subordinate aggregate data called group items called elementary items level numbers describe standard data items example elementary item group item date subordinate record record elementary items year month day group item date subordinate items example consider example code following example names year month day ambiguous data item defined names specify particular data item instance items contained sale date group programmer use year sale date equivalent year sale date similar dot supported contemporary languages data levels level number declare grouping previously defined items items structured data level referred associated clause rarely circa usually found old programs ability ignore logical structure data meant use recommended installations forbade use level number indicates item stand situations equivalent level number example following code declares level data items property sales region non group data items independent subordinate data items level number declares condition called level true parent data item contains values specified value clause example following code defines level condition items true false depending current character data value wage type data item data item contains value condition wage hourly true contains value condition wage yearly true data item contains value condition names false data types standard provides following data types type safety variable data converted different representations sizes data placed data item stored string including group data contrast object references assigned items type values restricted certain type picture clause picture clause string characters represents portion data item contain picture characters specify type item characters occupies memory example indicates digit indicates item signed picture characters called editing characters specify item example series characters define character positions leading sign character positioned final character data non character contain item sign character positions corresponding left position contain space repeated characters specified number picture character example equivalent picture specifications containing digit sign characters define purely data items picture specifications containing characters define data items presence characters define edited edited data items usage clause usage clause declares format data stored depending data type complement instead picture clause declare object references geared types formats minimum size specified picture clause usage clause long usage data stored format implementation provides equivalent usage usage display default format data stored string floating point implementation dependent format according usage national data stored string extended character set data stored smallest possible format typically packed coded report writer report writer facility creating reports programmer need specify report layout data required produce freeing having write code handle things like page breaks data reports associated report files files written report writer statements report defined report section data division report split report groups define report details reports work control breaks control breaks occur key variable changes value example creating report detailing customers orders control break occur program reaches different customer orders example report description report gives sales warns invalid records report description describes following layout sales report page seller sales sales invalid record sales report page sales invalid record sales statements control report writer initiate prepares report writer printing generate prints report group suppress printing report group terminate terminates report processing sales report example procedure division look like procedure division procedures sections procedure division collectively called procedures labels simple unlike divisions need sections execution goes procedures program terminated use procedures perform transfers control specified range procedures returns reaching end unusual control flow trigger mines cause control performed procedures return unexpected times unexpected locations procedures reached ways called perform jumped execution falling combinations behavior creating mines specifically mines occur execution range procedures cause control flow past statement range procedures performed example code adjacent image end update screen screen invalid screen invalid control jumps fix screen section performs update screen behavior overlapping ranges procedures performed triggered reaching end update screen means control return locations perform statement perform statement fix screen fall update screen return perform statement reaching end statements statements called grouped following broad categories control flow data manipulation report writer report writer statements covered report writer section control flow statements evaluate evaluate switch like statement added capability evaluating multiple values conditions implement decision tables example following control perform statement define loops executed condition true unlike languages procedures ranges procedures procedures section details methods respectively method contained string literal data item parameters passed reference content copy passed reference value prototype available cancel memory causes program jump specified procedure statement return statement stop statement stops program exit statement different formats return statement break statement continue statement end marker leave procedure exceptions raised raise statement caught defined portion procedure division sections beginning use statement specify errors handle exceptions names objects resume jump statement raised exception procedure outside unlike languages exceptions terminate program program proceed unaffected file handled self describing open close read write statements rewrite updates record start subsequent records access finding record certain key unlock releases lock record accessed user interaction accept display data manipulation following manipulate data sets data items default values assigns values data items set formats modify assign object references alter table capacities functions add divide handle assigning result formula variable free handle dynamic memory data specified item description data division string split strings respectively inspect replaces instances specified string search searches table entry satisfying condition files tables sort merge merges sorts files release provides records sort return records order scope termination statements read contain statements statements terminated ways period implicit termination terminates statements contained scope terminates nearest matching open statement statements terminated period common source bugs example examine following code intent display condition true displayed value statement terminated erroneous period display bug result problem statements associate fragment associates statement instead statement causing bug prior introduction explicit scope preventing require sentence placed inner self modifying code original specification supported infamous statement generated self modifying code procedure labels single statement procedure executed alter statement means instead support deemed obsolete standard deleted hello world hello world program hello world famous hello world program example published similar program sample submitted likely punch card reader column punch cards listing data division tested system hercules running written july derived hercules samples hosted keeping programming era hello world displayed capital letters submitting console displayed line console listing highlighted effect highlighting actual console output associated listing generated pages technical detail job run information single line output lines criticism defense lack structure 1970s programmers began moving away code structured programming letter editor entitled tell truths hurt critical contemporaries computer scientist recipient remarked use mind teaching regarded criminal offense response article offensive statement computer scientist defended structured programs convoluted control flow tend mind business application programs written programmers benefit structured taught cause code statement attempts remove code resulted convoluted programs reduced code quality largely replaced perform statement procedures promoted programming gave easy access powerful facilities perform procedures loop bodies located making programs harder understand programs infamous lacking code procedures found inadequate large systems impossible restrict access data meaning procedure access modify data item furthermore way pass parameters procedure omission regarded committee biggest mistake stemmed ability perform specified sequence procedures meant control jump return procedure creating convoluted control flow permitting programmer break single entry single exit rule situation improved adopted features added giving programmers ability control data program access added allowing programmers hide control data code came object oriented programming user defined functions user defined data types included important legacy software uses code risky costly modify simple section code unknown places unknown ways compatibility issues intended highly portable common language created source standard standard composed mandatory nucleus containing levels support permitted official variants fully compatible earlier versions development controversial spearheaded effort inform users heavy costs implementing new standard result received letters public negative requiring committee changes hand conversion thought increase productivity future years conversion costs criticized proponents intended code self documenting program maintenance intended easy programmers learn use non technical staff managers desire led use english like structural elements clauses sentences sections divisions programs struggling deal code main changes help ease maintenance short range committee member noted little attempt cater professional programmer fact people main interest programming tend unhappy attributed isolation computer science community community isolated computer science community academic computer scientists participated design committee came commerce government computer scientists time interested fields like numerical analysis physics system programming commercial file processing problems development tackled attributed initial reaction lack influential computer scientists participating design process disdain business data processing specification unique define new form committee members heard resulted severe criticism later suffered shortage material covering took introductory books appear publishing college textbook twice books times basic library congress university professors taught modern state art languages techniques instead said trade school nature chair committee said academics hate computer science graduates hate poll found university academics thought outdated dead believed students thought outdated dead poll found academics programming curriculum thought teach contrast featured information systems united_states proportion java concerns design process doubts raised standards committee short term committee member said little control development process plagued personnel lack talent noted changes introduced revision standard reverted changes standard committee objective evidence standards repeatedly suffered delays arrived years later hoped years late years late combat delays standard committee allowed creation optional add features quickly waiting standard revision committee members raised concerns frequent modifications standard influences languages data structures influenced subsequent programming languages record file structure influenced clause predecessor variant records explicit file structure definitions preceded development database management systems data significant advance copy facility considered primitive influenced development include focus meant programs written portable facilitated spread language wide variety hardware platforms operating systems additionally defined division structure definition external references platform changes particular
COBOL