본문으로 이동

코볼: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
잔글편집 요약 없음
편집 요약 없음
183번째 줄: 183번째 줄:


=== 레거시 ===
=== 레거시 ===
코볼 프로그램들은 정부와 기업체에 고루 사용되며 [[z/OS]], [[ICL VME|VME]], [[유닉스]], [[마이크로소프트 윈도우|윈도우]]와 같은 다양한 운영 체제에서 구동된다. 1997년 [[가트너 그룹]]은 전 세계 비즈니스의 80%가 200,000,000,000줄 이상의 코드의 코볼을 실행하였고 한 해에 5,000,000,000줄 이상이 작성되고 있다고 보고했다.<ref>{{저널 인용 |url=http://proc.isecon.org/2000/126/ISECON.2000.Kizior.pdf | title=Does COBOL Have a Future? |accessdate=2012-09-30 |first1=Ronald J. |last1=Kizior |first2=Donald |last2=Carr |first3=Paul |last3=Halpern |journal=The Proceedings of the Information Systems Education Conference 2000 |volume=17 |issue=126}}</ref>
코볼 프로그램들은 정부와 기업체에 고루 사용되며 [[z/OS]], [[ICL VME|VME]], [[유닉스]], [[마이크로소프트 윈도우|윈도우]]와 같은 다양한 운영 체제에서 구동된다. 1997년 [[가트너 그룹]]은 전 세계 비즈니스의 80%가 200,000,000,000줄 이상의 코드의 코볼을 실행하였고 한 해에 5,000,000,000줄 이상이 작성되고 있다고 보고했다.<ref>{{저널 인용 |url=http://proc.isecon.org/2000/126/ISECON.2000.Kizior.pdf | 제목=Does COBOL Have a Future? |accessdate=2012-09-30 |first1=Ronald J. |last1=Kizior |first2=Donald |last2=Carr |first3=Paul |last3=Halpern |journal=The Proceedings of the Information Systems Education Conference 2000 |volume=17 |issue=126}}</ref>


20세기 말 무렵, [[2000년 문제]](Y2K) 해결을 위해 코볼 프로그래밍 노력이 상당 부분 집중되었으며 가끔은 10년 전에 시스템을 개발했던 동일 프로그래머들에 의해 수행되었다. 코볼 코드를 고치는데 필요한 일정 수준의 노력이 상당량의 비즈니스 지향 코볼에 전가되었는데, 사무 응용 프로그램들이 날짜를 사용하는 정도가 심했기 때문이다. 그 외에 고정 길이 데이터 필드에도 영향을 주었다.
20세기 말 무렵, [[2000년 문제]](Y2K) 해결을 위해 코볼 프로그래밍 노력이 상당 부분 집중되었으며 가끔은 10년 전에 시스템을 개발했던 동일 프로그래머들에 의해 수행되었다. 코볼 코드를 고치는데 필요한 일정 수준의 노력이 상당량의 비즈니스 지향 코볼에 전가되었는데, 사무 응용 프로그램들이 날짜를 사용하는 정도가 심했기 때문이다. 그 외에 고정 길이 데이터 필드에도 영향을 주었다.


2006년과 2012년에 [[컴퓨터월드]] 조사에 따르면 조직 중 60%가 코볼을 ([[C++]], [[비주얼 베이직 닷넷]]보다 더) 사용하였으며 코볼은 자사 내부 소프트웨어 다수에 사용되었다.<ref name="Computerworld Not Dead Yet">{{웹 인용 | url=http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet | title=Cobol: Not Dead Yet | work=Computerworld | date=4 October 2006 | accessdate=27 April 2014 | last=Mitchell | first=Robert L.}}</ref><ref>{{웹 인용 | url=http://www.computerworld.com/s/article/9225099/Cobol_brain_drain_Survey_results | title=Cobol brain drain: Survey results | work=Computerworld | date=14 March 2012 | accessdate=27 April 2014 | author=<!-- N/A -->}}</ref> 관리자 중 36%가 코볼로부터 이관할 예정이라고 언급했으며, 25%는 값이 더 저렴해진다면 그러할 의향이 있다고 밝혔다. 일부 기업체는 그들의 코볼 프로그램들을 유지보수하면서도 그들의 시스템을 값비싼 메인프레임에서 더 값싼 더 현대적인 시스템으로 이관해오고 있다.<ref name="Computerworld Not Dead Yet" />
2006년과 2012년에 [[컴퓨터월드]] 조사에 따르면 조직 중 60%가 코볼을 ([[C++]], [[비주얼 베이직 닷넷]]보다 더) 사용하였으며 코볼은 자사 내부 소프트웨어 다수에 사용되었다.<ref name="Computerworld Not Dead Yet">{{웹 인용 | url=http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet | 제목=Cobol: Not Dead Yet | work=Computerworld | date=4 October 2006 | accessdate=27 April 2014 | last=Mitchell | first=Robert L.}}</ref><ref>{{웹 인용 | url=http://www.computerworld.com/s/article/9225099/Cobol_brain_drain_Survey_results | 제목=Cobol brain drain: Survey results | work=Computerworld | date=14 March 2012 | accessdate=27 April 2014 | author=<!-- N/A -->}}</ref> 관리자 중 36%가 코볼로부터 이관할 예정이라고 언급했으며, 25%는 값이 더 저렴해진다면 그러할 의향이 있다고 밝혔다. 일부 기업체는 그들의 코볼 프로그램들을 유지보수하면서도 그들의 시스템을 값비싼 메인프레임에서 더 값싼 더 현대적인 시스템으로 이관해오고 있다.<ref name="Computerworld Not Dead Yet" />


== 기능 ==
== 기능 ==
293번째 줄: 293번째 줄:


콘솔의 10번째 줄에 결과를 위해 색으로 강조 표시되었으며, 이 강조 표시 색은 실제 콘솔 출력의 일부분은 아니다.
콘솔의 10번째 줄에 결과를 위해 색으로 강조 표시되었으며, 이 강조 표시 색은 실제 콘솔 출력의 일부분은 아니다.

== 비평 ==
=== 구조의 결여 ===
1970년대에 프로그래머들은 구조적이지 않은 [[스파게티 코드]]를 [[구조적 프로그래밍]] 패러다임으로 옮기기 시작하였다. 컴퓨터 과학자이자 [[튜링상]]을 받은 [[에츠허르 데이크스트라]]는 "코볼을 이용하는 일은 마음을 무력하게 만든다. 이에 대한 교리는 범죄 공격으로 여겨진다."고 강조하면서 편집장에게 보내는 "어떻게 우리가 상처를 줄 수 있는 진실을 이야기하는가?"라는 제목의 1975년 편지에서 동시대 코볼의 일부를 비평하였다.<ref name="Dijkstra1">{{웹 인용|url=http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html|제목=E. W. Dijkstra Archive: How do we tell truths that might hurt? (EWD498)|accessdate=August 29, 2007|publisher=University of Texas at Austin|year=2006|author=Dijkstra, Edsger W.}}</ref>

스파게티 코드의 한 가지 이유는 {{code|GO TO}} 문이다. {{code|GO TO}} 문을 코볼 코드에서 제거하려는 시도는 그러나 난해한 프로그램들을 만들고 코드 품질을 떨어트렸다.{{sfn|Riehle|1992|p=125}} {{code|GO TO}} 문은 대체적으로 {{code|PERFORM}} 문과 프로시저로 대체되었는데 이로 말미암아 [[모듈성 (프로그래밍)|모듈식 프로그래밍]]을 촉진시켰고{{sfn|Riehle|1992|p=125}}, 강력한 반복 기능으로 손쉬운 접근을 가능케 했다. 그러나 {{code|PERFORM}} 문은 오직 프로시저와 함께 쓰일 수 있으므로 반복문은 이들이 사용하는 곳에 위치되지 않아 프로그램을 이해하기 더 어렵게 만들게 된다.{{sfn|Shneiderman|1985|pp=349–350}}

코볼 프로그램들은 이음매가 없고 모듈성이 결여된 점으로 악명이 높았다.<ref>{{서적 인용 | url=http://books.google.co.uk/books?id=MJmJAwAAQBAJ&pg=PA4 | 제목=Beginning COBOL for Programmers | publisher=Apress | accessdate=13 August 2014 | page=4 | first=Michael | last=Coughlan | isbn=1430262532 | date=16 March 2014}}</ref> 코볼 코드는 프로시저를 통해서만 모듈성을 이룰 수 있어 대형 시스템에서는 부적절한 것으로 알려져 있었다. 데이터로의 접근을 제한하는 것이 불가능하였는데, 다시 말해 프로시저 하나가 어떠한 데이터 항목이라도 접근하여 수정할 수 있었다. 게다가 매개변수를 프로시저에 보내는 방법이 없었는데, 이를 빠트린 것을 두고 Jean Sammet는 위원회의 최대 실수로 간주하였다.{{sfn|Sammet|1978b|p=258}} 또다른 복합적 문제는 <code>PERFORM THRU</code> 기능에서 비롯한다. 제어권이 어떠한 프로시저로 점프할 수 있고 어떠한 프로시저로부터 반환을 받을 수 있다는 것을 말하며, 이는 난해한 제어 흐름을 만들고 프로그래머가 하나의 입구, 하나의 출구(single entry, single exit) 규칙을 무너뜨릴 가능성이 있다.{{sfn|Riehle|1992|p=126}}

이러한 상황은 코볼이 더 많은 기능을 채용하면서 개선되었다. 코볼-74는 하부 프로그램들을 추가하여 프로그래머들에게 각 프로그램 부분이 접근할 수 있는 데이터를 제어하는 기능을 제공하였다. 그 뒤로 코볼-85는 내재형 하위 프로그램(nested subprogram)을 추가하여 프로그래머들이 하위 프로그램들을 숨길 수 있게 하였다.{{sfn|Riehle|1992|p=127}} 데이터와 코드의 추가적인 제어는 2002년에 도입되어 객체 지향 프로그래밍, 사용자 지정 함수, 사용자 지정 자료형이 포함되었다.


== 참고 ==
== 참고 ==

2015년 11월 11일 (수) 00:26 판

코볼
COBOL
패러다임절차적, 명령형, 객체 지향
설계자Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet, William Selden, Gertrude Tierney
개발자CODASYL, ANSI, ISO
발표일1959년
최근 버전ISO/IEC 1989:2014
최근 버전 출시일2014년
자료형 체계약한 타이핑/강한 타이핑
파일 확장자.cbl, .cob, .cpy
주요 구현체
GnuCOBOL, IBM COBOL, 마이크로 포커스 비주얼 코볼
ACUCOBOL-GT, COBOL-IT, COBOL/2, DEC COBOL-10, DEC VAX COBOL, DOSVS COBOL, 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, isCOBOL, Micro Focus COBOL, Microsoft 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, Visual COBOL, Wang VS COBOL
영향을 받은 언어
AIMACO, C++,[a] COMTRAN, FACT, FLOW-MATIC, 스몰토크[a]
영향을 준 언어
코볼스크립트,[3] PL/I[4]

코볼(COBOL, COmmon Business-Oriented Language, 사무 지향 보통 언어)은 사무용으로 설계된, 영어와 같은 컴퓨터 프로그래밍 언어이다. 절차적, 명령형 언어이고, 2002년부터는 객체 지향 언어이다.[5]

코볼은 주로 비즈니스, 금융, 회사/정부 관리 시스템에 주로 사용된다. 1997년 가트너 그룹은 총 200,000,000,000줄의 코볼이 현존하며 모든 비즈니스 프로그램의 80%를 실행한 것으로 예측하였다.[6]

코볼은 지금도 메인프레임 컴퓨터의 레거시 응용 프로그램들에 사용되고 있으며 대용량 일괄 처리트랜잭션 처리와 같은 작업에 쓰인다. 그러나 숙련된 코볼 프로그래머가 은퇴하고 인기가 시들어가면서 프로그램들은 새로운 플랫폼으로 이관돼 현대의 언어로 다시 작성되거나 소프트웨어 패키지로 대체되는 추세이다.[7] 코볼 대부분의 프로그래밍은 순수하게 기존의 응용 프로그램들을 관리하는 데 있다.[8]

코볼은 1959년에 CODASYL이 설계하였으며 부분적으로는, 코볼의 어머니로 불리는 그레이스 호퍼의 이전 프로그래밍 언어 디자인을 기반으로 한다.[9][10][11] 데이터 처리를 위해 이식 가능한 프로그래밍 언어를 만들려는 미국 국방부 노고의 일부이기도 하다. 임시방편으로 의도했던 미국 국방부가 발빠르게 컴퓨터 제조업체에게 그것을 제공하도록 강제한 결과 널리 채택되었다.[12] 1968년 표준화되어 그 뒤로 4차례 개정되었다. 확장에는 구조적, 객체 지향 프로그래밍의 지원을 포함한다. 현재 표준은 ISO/IEC 1989:2014이다.[13]

코볼보다 먼저 개발된 포트란(FORTRAN)은 주로 과학기술 계산용인 반면 비슷한 시기에 탄생된 코볼은 대량 데이터 처리를 위한 업무처리 및 관리 분야용으로 자리잡게 된다. 코볼과 포트란은 프로그램밍 언어 역사에서 고급 기술언어의 원점이 되고 있다.

역사 및 사양

배경

1950년대 말 컴퓨터 사용자와 제조업체는 프로그래밍의 비용이 치솟는 것을 걱정하기 시작했다. 1959년 조사에 따르면 데이터 처리 설치에서 프로그래밍의 평균 비용은 $800,000 (미국 달러)이고 새로운 하드웨어에서 실행할 수 있도록 프로그램을 변환하는데 드는 비용은 $600,000였다. 새로운 프로그래밍 언어들이 빠르게 확산되는 가운데, 동일 조사에서 하나로 통일된 사무 지향 언어가 사용된다면 변환은 훨씬 저렴해지고 빨라질 것이라는 결과가 나왔다.[14]

caption
그레이스 호퍼. COBOL의 선구자격인 FLOW-MATIC의 발명가.

1959년 4월 학계, 컴퓨터 사용자들, 제조업체들의 대표들이 펜실베니아 대학교에서 통일된 사무 언어에 대한 정식 회의를 조성하기에 이르렀다.

영어와 같은 데이터 처리 언어 FLOW-MATIC을 개발한 그레이스 호퍼를 포함하여 Jean Sammet, Saul Gorn가 대표로 참석했다.[15][16]

이 단체는 미국 국방부에 통일된 사무 언어를 만들기 위해 지원해줄 것을 요청하였다. 대표단은 미국 국방부의 데이터 시스템 연구 스태프 총괄을 맡던 찰스 A. 필립스에게 감명을 주었는데, 그는 이들이 미국 국방부의 문제들을 꼼꼼하게 이해하였다고 생각하였다. 미국 국방부는 225대의 컴퓨터를 운영했고 추가로 175대를 주문하였으며 이 컴퓨터들 상에 프로그램을 구현하는데 $200,000,000를 지출하였다. 이식 가능한 프로그램들은 시간을 절약하고, 비용을 줄이며 현대화를 쉽게 할 수 있었다.[17]

필립스는 이 회의를 지원하는데 동의하였고 대표단에게 의제의 초안을 작성하는 일을 부여하였다.[18]

코볼 60

취리히 알골 58 회의가 있은지 정확힌 한 해 뒤인 1959년 5월 28, 29일에 펜타곤에서 회의가 열렸고 사무를 위한 공용 프로그래밍 언어를 만드는 것을 논의하였다. 41명의 사람들이 참석하였고 당시 의장은 필립스였다.[19] 미국 국방부는 각기 다른 컴퓨터에서 동일한 데이터 처리 프로그램들을 실행할 수 있는지에 대해 걱정하였다. 당시 유일한 주류 언어였던 포트란은 이러한 프로그램들 작성에 필요한 기능들이 부족했다.[20]

대표들은 은행업, 보험 분야에서 공과금, 재고 관리에 이르기까지 다양한 환경에서 동작할 수 있는 언어를 열정적으로 기술하였다. 더 많은 사람들이 프로그래밍할 수 있어야 하고 새로운 언어는 동시대 기술의 제약을 받아서는 안 된다는 데 대하여 대표자 전원이 동의하였다. 언어는 최대한 영어를 사용하여야 하고 변경이 가능해야 하며 기계와는 독립적이어야 하고 사용하기 쉬워야 한다는 데 대하여 다수가 동의하였다.[21]

이 모임을 통해 운영 위원회와 중장기 위원회들이 설립되었다. 단기 위원회는 9월부터 3개월 동안 중간 언어를 위한 사양을 만들어냈으며 그 뒤 다른 위원회들에 의해 개선되었다.[22][23] 그러나 공식 임무는 기존 프로그래밍 언어들의 장단점을 식별하는 것이었고 명백하게 이들에게 새로운 언어를 만들라고 지시하는 것은 아니었다.[20]

기한은 단기 위원회에 의해 불신 속에 마감되었다.[24] 베티 홀버튼(Betty Holberton)이라는 한 구성원은 3개월 기한을 둔 것이 역겨울 만큼 낙천주의적이라고 기술했으며 이 언어가 임시방편이 될지에 대해서는 의심을 품었다.[25]

운영 위원회는 6월 4일 만나 협의회를 CODASYL(Committee on Data Systems Languages)라는 이름으로 정하고, 집행 위원회를 설립할 것을 동의하였다.[26]

단기 위원회는 여섯 곳의 컴퓨터 제조업체와 세 군데의 정부 기관으로 이루어져 있었다. 여섯 곳의 제조업체들은 버로스(Burroughs), IBM, 미니애폴리스-하니웰 (하니웰 연구소), RCA, 스페리 랜드(Sperry Rand), 실베이니아 일렉트릭 프로덕츠였다. 세 군데의 정부 기관들은 미국 공군, 해군의 데이비드 테일러 모델 베이슨(David Taylor Model Basin), 국립표준국(현재의 미국 국립표준기술연구소)이었다.[27] 이 위원회의 위원장은 미국 국립표준국의 조지프 웨그스타인(Joseph Wegstein)이었다. 데이터 설명, 문(文), 기존의 응용 프로그램, 사용자 경험을 조사하면서 작업이 개시되었다.[28]

이 위원회는 주로 FLOW-MATIC, AIMACO, COMTRAN이라는 프로그래밍 언어들을 조사하였다.[20][29] FLOW-MATIC 언어는 특히 영향력이 있었는데 그 까닭은 그것이 내부에 구현되었기 때문이기도 하지만 그 밖의 이유로는 AMIACO가 단지 사소한 변경만으로 그것을 파생시켰기 때문이다.[30][31] FLOW-MATIC의 발명가 그레이스 호퍼는 또한 그 위원회에 기술 고문 역할을 하였다.[24] FLOW-MATIC이 코볼에 기여한 주된 사항으로는 긴 변수 이름, 명령어를 위한 영어 낱말, 데이터 기술 및 명령의 구분이다.[32]

밥 베머가 발명한 IBM의 COMTRAN 언어는 그레이스 호퍼의 동료들이 만든 단기 위원회에 의해[33] FLOW-MATIC의 경쟁 언어로 간주되었다.[34][35] 기능들 중 일부는 코볼에 포함되지 않았는데, IBM이 설계 과정을 지배한 것처럼 보이지 않게 하기 위함이었고,[22] 1981년에 Jean Sammet은 그녀 자신을 포함해서 "강력한 반IBM 편견"이 일부 위원회 구성원들에게 있음을 언급했다.[36] 한 사례로 COMTRAN 설명서와 중기 위원회 구성원이었던 로이 골드핑거가 그의 언어를 지원하고 대수식 이용을 장려하기 위해 소위원회 회의에 참석했는데, 그 뒤 그레이스 호퍼는 단기 위원회에 메모를 보내면서 영어가 기반이 되는 언어를 만들겠다는 스페리 랜드의 노력을 재차 강조했다.[37] 1980년에 그레이스 호퍼는 코볼 60이 95% FLOW-MATIC으로 되어 있으며 COMTRAN은 매우 적은 부분에서 영향을 주었다고 언급하였다. [38] 코볼에 포함된 COMTRAN의 기능들은 공식들,[39] PICTURE 절,[40] GO TO의 필요성을 제거하는 개선된 IF 문, 더 강력한 파일 관리 시스템을 포함하였다.[34]

이 위원회의 노고가 유용했는지에 대해서는 큰 논란의 대상이 되었다. 일부 구성원들이 이 언어가 너무 많은 절충이 있었고 위원회의 설계에 따른 결과물이라고 생각한 반면, 다른 구성원들은 조사된 세 개의 언어들 보다 더 낫다고 느꼈다. 일부는 이 언어가 너무 복잡하다고 생각했고 다른 이들은 너무 단순하다고 여겼다.[41] 논란이 되는 기능들은 일부분이 데이터 처리 사용자들에게 쓸모 없거나 너무 고급적인 기능들로 간주되었다. 이러한 기능들에는 불 대수, 공식, 테이블 서브스크립트(subscripts, indices)가 포함되었다.[42][43] 논란의 다른 관점으로는 키워드를 문맥에 대응할 것인지에 대한 것이었다.[42] 문맥에 의존적인 키워드들은 거부되었지만 이러한 접근은 나중에 PL/I에 사용되었고, 부분적으로는 2002년부터 코볼에 사용되었다.[44] 당시 일부 존재하였던 운영 체제와의 상호 작용과 기능(순수하게 수학적이었고 데이터 처리용은 아닌 것으로 간주)에 대한 고려가 거의 없었다.[45][46]

이 사양들은 9월 4일 집행 위원회에 제시되었으나, 기대에는 한참 못미쳤다. 조지프 웨그스타인은 "여기에 러프 스팟(rough spot)이 포함되어 있고 일부 추가가 필요하다"고 언급했고 나중에 밥 베머는 이들을 잡동사니로 기술하였다. 소위원회는 12월까지 그것을 개선하라는 지시를 받았다.[24]

9월 중순 회의에서 위원회는 새로운 언어의 이름을 논의하였다. 제안된 이름으로는 "BUSY" (비즈니스 시스템: Business System), "INFOSYL"(정보 시스템 언어: Information System Language), "COCOSYL"(공용 컴퓨터 시스템 언어: Common Computer Systems Language)를 포함하였다[47] 코볼(COBOL)이라는 이름은 밥 베머가 제안하였다.[48][49]

10월에 중기 위원회는 로이 넛이 만든 FACT 언어 사양의 사본을 받았다. 이 언어의 기능들은 위원회에 매우 큰 감명을 주었고, 그것으로 기본 코볼에 대한 결의안을 통과시켰다.[50] 이것은 사양에 대해 잘 진척시켜온 단기 위원회에게는 충격이었다. 기술적으로 우위에 있었음에도 FACT는 이식성을 염두에 두지도 않았고, 제조업체나 사용자 합의를 통해 만들어지지도 않았다. 증명할만한 구현체 또한 부족하였으므로,[24] FLOW-MATIC 기반 코볼의 지지자들이 이 결의안을 뒤집을 수 있었다. RCA 대표 하워드 브롬버그(Howard Bromberg) 또한 FACT를 차단함으로써 코볼 구현체에 대한 RCA의 노고가 물거품이 되지 않게 하였다.[51]

'그러면 어떠한 이름을 새기고 싶으십니까?'
나는 '당신을 위해 여기에 쓰겠습니다'라고 말했고 그 이름을 COBOL이라고 썼다.
'그 이름의 뜻이 무엇입니까?'
'글쎄요, 이것은 폴란드 이름입니다. 우리는 이름을 줄였고 불필요한 수많은 표기법을 없앴습니다.'

하워드 브롬버그 - 어떻게 코볼 묘비를 구매했는가[52]

곧 이 위원회는 너무 방대해져 진행 속도를 더 낼 수 없었다. 실망감을 느낀 하워드 브롬버그는 COBOL이라 새겨진 $15의 묘비를 구매하고 찰스 필립스에게 보내 그의 불만을 드러냈다.[b][52][54] 소위원회가 구성되어 기존 언어들을 분석하였는데, 여기에는 6명의 인원으로 이루어졌다:[20][55]

  • William Selden, Gertrude Tierney (IBM),
  • Howard Bromberg, Howard Discount (RCA),
  • Vernon Reeves, Jean E. Sammet (Sylvania Electric Products)

소위원회는 사양을 만드는 일로 대부분을 보냈고, 최종 사양을 생산하기 앞서 단기 위원회가 그들의 일을 검토하고 수정하는 일을 맡았다.[20]

COBOL. Report to Conference on Data Systems Languages including initial specifications for a Common Business Oriented Language (COBOL) for programming digital electronic computers. Department of Defense, April 1960.
코볼 60 보고서 표지

1960년 1월 3일 집행 위원회는 이 사양을 승인하였고 정부 인쇄소에 전달되어 "COBOL 60"으로 인쇄되었다. 이 언어에 언급된 목적은 효율적이고 이식 가능한 프로그램들이 쉽게 작성될 수 있게 함으로써 사용자들이 적은 노력과 비용을 들여 새로운 시스템으로 이전할 수 있게 하고 미숙한 프로그래머들도 적절히 쓸 수 있게 하기 위함이다.[56] CODASYL 집행 위원회는 사용자들과 업체들로부터의 질문에 답하고 사양을 확장하고 개선할 목적으로 나중에 코볼 유지보수 위원회를 창설하였다.[57]

1960년 동안 코볼 컴파일러를 만들 예정인 제조업체의 수가 늘어났다. 9월까지 다섯 곳 이상의 제조업체가 CODASYL (벤딕스, 컨트롤 데이터 코퍼레이션, 제너럴 일렉트릭(GE), 내셔널 캐시 레지스터, 필코)에 참여하였고 대표되는 모든 제조업체들이 코볼 컴파일러를 발표하였다. GE와 IBM은 코볼을 자신들의 언어들인 GECOM과 COMTRAN에 각각 통합하였다. 반면, 인터내셔널 컴퓨터스 앤드 태뷸레이터스(International Computers and Tabulators)는 그들의 언어인 CODEL을 코볼로 대체할 예정이었다.[58]

그 와중에 RCA와 스페리 랜드는 코볼 컴파일러를 만드는 일을 하였다. 최초의 코볼 프로그램은 8월 17일 RCA 501에서 수행되었다.[59] 12월 6일, 7일에 동일한 코볼 프로그램(사소한 변경사항이 있긴 하지만)이 RCA 컴퓨터, Remington-Rand 유니박 컴퓨터에서 실행되어 이들의 호환성을 입증하였다.[60]

오늘날 모든 코볼 참조 매뉴얼에는 다음과 같이 인쇄되어 있다:

코볼은 산업 표준이며 어떠한 컴퓨터나 회사 그룹의 재산도, 어느 단체나 단체 그룹의 소유도 아니다.

프로그래밍 시스템과 언어의 정확성과 기능에 관해 기여한 자나 CODASYL 코볼 위원회가 표현, 암시한 부분에 대해서는 어떠한 보증도 없다. 또, 이와 연관된 어떠한 기여자나 위원회에 의해 어떠한 책임도 물을 수 없다. 여기에 사용된, 저작권 보호를 받는 자료의 저자와 저작권자는 아래와 같다:

FLOW-MATIC (trademark of Unisys Corporation), Programming for the UNIVAC (R) I and II, Data Automation Systems, copyrighted 1958, 1959, by Unisys Corporation; IBM Commercial Translator Form No. F28-8013, copyrighted 1959 by IBM; FACT, DSI 27A5260-2760, copyrighted 1960 by Minneapolis-Honeywell.

이들은 코볼 사양의 일부나 전체에 대해 이 자료의 이용을 허가함. 이러한 권한은 프로그래밍 설명서나 비슷한 출판물의 코볼 사양의 재생산 및 이용으로 확장됨.[61]

코볼-61 ~ 코볼-65

코볼이 10년이 지나면 존재할 가능성은 없어 보인다.

익명 - 1960년 6월[62]

수많은 논리적 결함들이 코볼 60에 발견되었는데, GE의 찰스 캐츠는 이에 대해 모호하게 해석되지 않는다고 경고하였다. 마지못한 단기 위원회는 완전한 정리를 단행하였고 1963년 3월 코볼의 문법이 알골의 것처럼 정의가 가능해졌으나 의미적인 모호성(semantic ambiguities)은 여전히 남아있다고 보고되었다.[58]

초기 코볼 컴파일러들은 원시적이었고 속도가 느렸다. 1962년 미국 해군 평가는 분당 3-11개 문의 컴파일 속도를 지적했다. 1964년 중순에는 분당 11-1000개의 문으로까지 증가하였다. 메모리가 늘어나면서 속도가 급격하게 빨라졌고 컴파일 비용이 다양해졌다. 문 당 비용은 $0.23에서 $18.91 사이였다.[63]

1962년 말에 IBM은 코볼이 그들의 주 개발 언어가 되고 COMTRAN의 개발은 중단할 것이라 선언하였다.[63]

코볼 사양은 출판 이후로 5년 안에 3번 개정되었다. 코볼-60은 1961년에 코볼-61으로 대체되었다. 그 뒤 코볼-61 확장 사양으로 1963년에 대체되어 정렬 및 보고서 작성 기능이 도입되었다.[64] 추가된 기능들은 하니웰이 1959년 말 단기 위원회에 편지를 보내 확인된 결함들을 수정하였다.[59] 코볼 에디션 1965는 사양에 대해 더 명확히 하고 대용량 기억 장치의 파일들과 표를 다룰 수 있는 기능을 소개하였다.[65]

코볼-68

버전 간 비호환성을 극복하기 위해 코볼을 표준화하는 작업이 시작되었다. 1962년 말 ISO와 미국 스탠더드(현재의 ANSI)는 표준을 만드는 그룹들을 설립하였다. ANSI는 1968년 8월 《USA Standard COBOL X3.23》을 만듦으로써 차기 버전들의 주춧돌이 되었다.[66] 이 버전은 ANS(American National Standard) 코볼로 알려져 있으며 1972년에 ISO에 채택되었다.[67]

코볼-74

1970년에 코볼은 전 세계에서 가장 널리 쓰이는 프로그래밍 언어가 되었다.[68]

ANSI 위원회와 독립적으로 CODASYL 프로그래밍 언어 위원회는 언어 개선에 착수했다. 이들은 1968년, 1969년, 1970년, 1973년에 새로운 버전들을 기술하였고, 여기에 새로운 프로그램 간 통신, 디버깅, 파일 병합 기능, 개선된 문자열 관리, 라이브러리 포함 기능과 같은 변경 사항을 포함하였다.[69] CODASYL이 ANSI 위원회와 독립적이었으나, ANSI는 《CODASYL Journal of Development》를 사용하여 구현을 보증하는데 충분히 대중적인 기능들을 식별하게 하였다.[70] 프로그래밍 언어 위원회는 또한 ECMA와 일본 코볼 표준 위원회와도 연계하였다.[69]

그러나 프로그래밍 언어 위원회는 잘 알려지지 않았다. 부사장이었던 William Rinehuls는 코볼 커뮤니티의 2/3이 위원회의 존재조차 모르고 있다고 불평하였다. 또, 무료로 이용이 가능한 변경 사항 제안, 회의록과 같은 공용 문서를 만들 자금이 부족할 정도로 빈약했다.[71]

1974년 ANSI는 (ANS) 코볼의 개정판을 출판하였으며, 여기에는 파일 조직, DELETE 문[72], 세그먼트 모듈[73]과 같은 새로운 기능들이 포함되었다. NOTE 문, EXAMINE 문(INSPECT 문으로 대체), 구현자 정의 랜덤 액세스 모듈(새로운 순차 및 상대 입출력 모듈로 대체)과 같은 기능들이 제거되었다. 44개의 변경 사항으로 이루어져 있고 새로운 표준과 호환되지 않은 기존의 문들을 나열하였다.[74] 보고서 작성 기능은 혹평을 받아 코볼에서 물러났지만 표준이 출판되기 전에 복귀되었다.[75][76] 나중에 ISO는 1978년에 갱신된 표준을 채택하였다.[67]

코볼-85

1978년 7월, 코볼 74를 개정하는 작업이 시작되었다. 제안된 표준(일반적으로 코볼-80으로 알려져 있음)은 이전 것과는 상당히 달랐으므로 비호환성 및 변환 비용에 대한 걱정을 야기하였다. 1981년 1월, 트래블러스 인슈런스(Travelers Insurance)의 수석 부사장 조지프 T 브로피(Joseph T. Brophy)는 표준 위원회를 고소하겠다고 위협하였는데 그 까닭은 코볼-74와 상위 호환이 되지 않았기 때문이다. 브로피는 그들의 40,000,000줄이나 되는 코드의 변환을 "비생산적"이고 "프로그램 자원 중 완전한 쓰레기"라고 기술하였다.[77] 그 해의 나중에 DPMA(Data Processing Management Association)는 이것은 새로운 표준에 강하게 반하는 것이며, 엄두도 못 낼 정도로 높은 변환 비용과 기능 강화가 사용자에게 강제되었다고 언급하였다.[78][79]

공식적인 최초 검토 기간 동안 위원회는 2,200개의 응답을 받았으며 이 가운데 1,700개가 부정적인 형태의 편지들이었다.[80] 그 밖의 응답들은 코볼-80이 그들의 시스템에 설치할 수 있는지의 상세한 영향도 분석에 대한 것이었다. 변환 비용이 코드 한 줄에 적어도 50 센트가 들 것으로 예측되었다. 12개도 채 안 되는 응답에서는 제안된 표준을 선호한다는 의견이었다.[81]

1983년 DPMA는 새로운 표준에 대한 반대를 철회하고 대중이 걱정하는 사항들에 대한 위원회의 응답을 언급하였다. 같은 해에 미국 국립표준국의 연구에 따르면 제안된 표준은 문제점이 거의 없을 것으로 결론을 내렸다.[79][82] 한 해 더 지나 코볼-80 컴파일러가 코볼-74 프로그램들의 변환에 일부 문제가 있었던 DEC VAX 사용자들에게 공개되었다. 새로운 EVALUTE 문과 인라인 PERFORM이 단순해진 흐름 제어디버깅 덕분에 특히 잘 받아들여져 생산성이 향상되었다.[83]

1985년 말에 ANSI는 개정된 표준을 출판하였다. 60개의 기능들이 변경되거나 사용을 권장하지 않는 쪽으로 바뀌었고 다음과 같은 기능들이 포함되었다:[84][85]

  • 범위 종단자 (END-IF, END-PERFORM, END-READ 등)
  • 내포된 프로그램(nested programs)
  • CONTINUE 문 - no-operation 문
  • EVALUTE 문 - switch 문
  • INITIALIZE 문
  • 인라인 PERFORM 루프 - 이전에 반복체는 별도의 프로시저에 정의하여야 했음
  • 참조 수정 - 부분열(substring) 접근 허용
  • 입출력 상태 코드

이 표준은 같은 해에 ISO에 채택되었다.[67] 두 개의 개정안이 1989년(내장 함수 도입)과 1993년(기타 수정 사항 제공)에 공개되었다. ISO는 표준의 주 소유권과 개발을 최종적으로 취득하기 전에 1991년과 1994년에 각각 개정안들을 채택하였다.[67]

코볼 2002 및 객체 지향 코볼

1990년대 초에 완전한 리비전의 차기 코볼에 객체 지향을 추가하는 작업이 시작되었다.[1][2] 객체 지향 기능들은 C++스몰토크로부터 가져왔다. 초기에는 1997년에 이 리비전이 완수될 것으로 예측했으며 ISO 위원회 초안(Committee Draft)은 1997년에 이용이 가능하게 되었다. 마이크로 포커스, 후지쯔, IBM을 포함한 일부 업체들은 완전한 리비전의 초안에 기반한 객체 지향 문법을 도입하였다. 마지막으로 승인된 ISO 표준은 2002년 말에 승인되어 출판되었다.[86]

후지쯔/GT소프트웨어[87], 마이크로 포커스, 레인코드(RainCode)는 닷넷 프레임워크를 대상으로 한 객체 지향 코볼 컴파일러를 도입하였다.

기타 수많은 기능들이 있었으며, 이 가운데 다수가 《CODASYL COBOL Journal of Development since 1978》에 언급되었고 코볼-85에 포함될 기회는 놓치게 되었다.[88] 이러한 다른 기능들은 다음을 포함한다:[89][90]

3개의 정정 사항이 표준에 출판되었다. (2006년에 2개, 2009년에 1개)[91]

코볼 2014

2003년과 2009년 사이에 3개의 기술 보고서가 생산되었으며, 코볼을 위한 오브젝트 완성(object finalization), XML 처리, 콜렉션 클래스를 기술하고 있다.[91]

코볼 2002의 지원 수준은 매주 낮았다. 즉, 이 표준을 온전히 지원하는 컴파일러가 전무했다. 마이크로 포커스는 그 이유를 새로운 기능에 대한 사용자 수요가 적고 컴파일러 적합성을 테스트하는데 쓰였던 미국 국립표준기술연구소(NIST) 테스트 제품군이 철폐되었기 때문으로 보았다. 표준화 과정 또한 속도가 느렸고 자원이 부족했다.[92]

코볼 2014는 다음의 변경 사항을 포함한다:[93]

  • 이식 가능한 산술 결과물들은 IEEE 754 자료형으로 치환됨
  • 주된 기능이 선택 사항이 됨. (예: 객체 지향, VALIDATE 기능, 보고서 작성 기능, 화면 핸들링 기능)
  • 메소드 오버로딩
  • 동적 캐퍼시티 테이블 (코볼 2002 초안으로부터 제거된 기능)[94]

레거시

코볼 프로그램들은 정부와 기업체에 고루 사용되며 z/OS, VME, 유닉스, 윈도우와 같은 다양한 운영 체제에서 구동된다. 1997년 가트너 그룹은 전 세계 비즈니스의 80%가 200,000,000,000줄 이상의 코드의 코볼을 실행하였고 한 해에 5,000,000,000줄 이상이 작성되고 있다고 보고했다.[95]

20세기 말 무렵, 2000년 문제(Y2K) 해결을 위해 코볼 프로그래밍 노력이 상당 부분 집중되었으며 가끔은 10년 전에 시스템을 개발했던 동일 프로그래머들에 의해 수행되었다. 코볼 코드를 고치는데 필요한 일정 수준의 노력이 상당량의 비즈니스 지향 코볼에 전가되었는데, 사무 응용 프로그램들이 날짜를 사용하는 정도가 심했기 때문이다. 그 외에 고정 길이 데이터 필드에도 영향을 주었다.

2006년과 2012년에 컴퓨터월드 조사에 따르면 조직 중 60%가 코볼을 (C++, 비주얼 베이직 닷넷보다 더) 사용하였으며 코볼은 자사 내부 소프트웨어 다수에 사용되었다.[8][96] 관리자 중 36%가 코볼로부터 이관할 예정이라고 언급했으며, 25%는 값이 더 저렴해진다면 그러할 의향이 있다고 밝혔다. 일부 기업체는 그들의 코볼 프로그램들을 유지보수하면서도 그들의 시스템을 값비싼 메인프레임에서 더 값싼 더 현대적인 시스템으로 이관해오고 있다.[8]

기능

문법

코볼은 영어와 같은 문법을 가지고 있으며, 프로그램 안의 거의 모든 것을 기술하는데 사용된다. 예를 들어, 조건은 x IS GREATER THAN y로 표현할 수 있고, 더 간결하게는 x GREATER yx > y로 표현할 수 있다. 더 복잡한 조건들은 반복되는 조건과 변수들을 제거하여 축약할 수 있다. 이를테면 a > b AND a > c OR a = da > b AND c OR = d로 줄일 수 있다. 영어와 같은 문법을 지닌 코볼은 300개의 예약어가 있다.[97][c] 일부 예약어는 대체가 가능하고 단복수를 표현하는 낱말도 마치 영어의 구문처럼 바꾸어 사용할 수 있다. 이를테면 IN과 OF 키워드는 번갈아 사용할 수 있는데, 이는 IS와 ARE, VALUE와 VALUES도 그러하다.

각 코볼 프로그램은 4개의 어휘 항목을 이룬다; 워드, 리터럴, 픽처(PICTURE) 문자, 구분자(separator). 워드에는 예약어와 사용자 정의 식별자를 포함한다. 이들은 최대 31개 문자 길이로 되어 있으며 문자, 숫자, 하이픈(-), 언더바(_)를 포함할 수 있다. 리터럴은 숫자(예: 12)와 문자(예: 'Hello!')를 포함한다.[99] 구분자는 공백 문자와 콤마, 세미콜론을 포함하고 그 뒤에 공백이 온다.[100]

코볼 프로그램은 4개의 구역으로 나뉜다: IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA DIVISION, PROCEDURE DIVISION. IDENTIFICATION DIVISION은 소스 요소의 이름과 종류를 정의하며 여기서 클래스와 인터페이스가 지정된다. ENVIRONMENT DIVISION은 이를 실행하는 시스템에 의존하는 프로그램 기능을 정의하는데, 이를테면 파일문자 집합을 들 수 있다. DATA DIVISION은 변수매개변수를 선언하는데 쓰인다. PROCEDURE DIVISION은 프로그램의 을 포함한다. 각 구역은 섹션으로 다시 구분되며 섹션은 여러 문단으로 이루어진다.

코드 포맷

코볼은 두 가지 포맷으로 작성할 수 있다: 고정 포맷 (기본값), 자유(free) 포맷. 고정 포맷의 경우 코드는 특정 이름에 맞추어 정렬하여야 한다. 코볼 2002까지는 아래와 같았다:

이름 컬럼 용도
시퀀스 번호 영역 1–6 본래 카드/줄 번호에 사용되었으나 컴파일러는 이 영역을 무시한다.
지시자 영역 7 여기에는 다음의 문자가 허용된다:
  • * – 주석
  • / – 새로운 문서의 소스 목록에 출력할 주석
  • - – 계속행(continuation line). 이전 줄의 워드나 리터럴을 계속하여 처리한다.
  • D – 디버그 모드에서 사용되는 줄, 그 밖의 이용에서는 무시됨
영역 A 8–11 여기에는 다음을 포함한다: DIVISION, SECTION, 프로시저 헤더; 01과 77 레벨 번호, 파일/보고서 서술자
영역 B 12–72 영역 A에 허용되지 않는 기타 코드
프로그램 이름 영역 73– 역사적으로는 천공 카드에 최대 80컬럼까지 사용했으며, 카드에 속하는 프로그램이나 시퀀스를 식별하는데 사용된다.

코볼 2002에서 영역 A와 B는 컬럼 255로 병합, 확장되었으며 프로그램 이름 영역은 제거되었다.[101]

코볼 2002는 또한 자유 포맷 코드를 도입하였다.[101] 자유 포맷 코드는 마치 더 새로운 프로그래밍 언어들에서처럼 파일의 어느 열에나 위치할 수 있다. 주석은 *>을 이용하여 지정하며 어느 곳에서 위치해도 되고 고정 포맷 소스 코드에도 사용할 수 있다. 계속행은 존재하지 않으며 >>PAGE라는 지시자는 / 지시자를 대체한다.[102]

Hello world

코볼의 Hello world 프로그램은 다음과 같다.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. hello-world.
       PROCEDURE DIVISION.
           DISPLAY "Hello, world!"
           .

HELLO, WORLD

지금은 유명한 《C 프로그래밍 언어》(The C Programming Language)라는 책의 Hello world 프로그램 예제가 1978년 첫 출판되었을 때, 비슷한 메인프레임 코볼 프로그램 예제가 80컬럼의 천공 카드와 천공 카드 리더를 사용할 가능성이 매우 높은 JCL을 통해 제출되었다.

아래는 DATA DIVISION이 비어있으며 MVS 3.8J이 구동되는 시스템/370 허큘리스 에뮬레이터와 GNU/리눅스를 통해 테스트되었다. 2015년 7월에 작성된 이 JCL은 제이 무슬리(Jay Moseley)의 허큘리스 강좌와 샘플에서 가져온 것이다.[103] 동시대의 코볼 프로그래밍을 유지한 채 HELLO, WORLD은 모두 대문자로 표시된다.

//COBUCLG  JOB (001),'COBOL BASE TEST',                                 00010000
//             CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)                        00020000
//BASETEST EXEC COBUCLG                                                 00030000
//COB.SYSIN DD *                                                        00040000
 00000* 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
//                                                                      00220000

JCL을 제출한 뒤 MVS 콘솔은 다음을 보여주었다:

    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  ENDED

콘솔의 10번째 줄에 결과를 위해 색으로 강조 표시되었으며, 이 강조 표시 색은 실제 콘솔 출력의 일부분은 아니다.

비평

구조의 결여

1970년대에 프로그래머들은 구조적이지 않은 스파게티 코드구조적 프로그래밍 패러다임으로 옮기기 시작하였다. 컴퓨터 과학자이자 튜링상을 받은 에츠허르 데이크스트라는 "코볼을 이용하는 일은 마음을 무력하게 만든다. 이에 대한 교리는 범죄 공격으로 여겨진다."고 강조하면서 편집장에게 보내는 "어떻게 우리가 상처를 줄 수 있는 진실을 이야기하는가?"라는 제목의 1975년 편지에서 동시대 코볼의 일부를 비평하였다.[104]

스파게티 코드의 한 가지 이유는 GO TO 문이다. GO TO 문을 코볼 코드에서 제거하려는 시도는 그러나 난해한 프로그램들을 만들고 코드 품질을 떨어트렸다.[105] GO TO 문은 대체적으로 PERFORM 문과 프로시저로 대체되었는데 이로 말미암아 모듈식 프로그래밍을 촉진시켰고[105], 강력한 반복 기능으로 손쉬운 접근을 가능케 했다. 그러나 PERFORM 문은 오직 프로시저와 함께 쓰일 수 있으므로 반복문은 이들이 사용하는 곳에 위치되지 않아 프로그램을 이해하기 더 어렵게 만들게 된다.[106]

코볼 프로그램들은 이음매가 없고 모듈성이 결여된 점으로 악명이 높았다.[107] 코볼 코드는 프로시저를 통해서만 모듈성을 이룰 수 있어 대형 시스템에서는 부적절한 것으로 알려져 있었다. 데이터로의 접근을 제한하는 것이 불가능하였는데, 다시 말해 프로시저 하나가 어떠한 데이터 항목이라도 접근하여 수정할 수 있었다. 게다가 매개변수를 프로시저에 보내는 방법이 없었는데, 이를 빠트린 것을 두고 Jean Sammet는 위원회의 최대 실수로 간주하였다.[108] 또다른 복합적 문제는 PERFORM THRU 기능에서 비롯한다. 제어권이 어떠한 프로시저로 점프할 수 있고 어떠한 프로시저로부터 반환을 받을 수 있다는 것을 말하며, 이는 난해한 제어 흐름을 만들고 프로그래머가 하나의 입구, 하나의 출구(single entry, single exit) 규칙을 무너뜨릴 가능성이 있다.[109]

이러한 상황은 코볼이 더 많은 기능을 채용하면서 개선되었다. 코볼-74는 하부 프로그램들을 추가하여 프로그래머들에게 각 프로그램 부분이 접근할 수 있는 데이터를 제어하는 기능을 제공하였다. 그 뒤로 코볼-85는 내재형 하위 프로그램(nested subprogram)을 추가하여 프로그래머들이 하위 프로그램들을 숨길 수 있게 하였다.[110] 데이터와 코드의 추가적인 제어는 2002년에 도입되어 객체 지향 프로그래밍, 사용자 지정 함수, 사용자 지정 자료형이 포함되었다.

참고

  1. Specifically influenced COBOL 2002's object-oriented features.[1][2]
  2. 묘비는 현재 컴퓨터 역사 박물관에 있다.[53]
  3. Vendor-specific extensions cause many implementations to have far more: one implementation recognizes over 1,100 keywords.[98]

각주

  1. Saade, Henry; Wallace, Ann (October 1995). “COBOL '97: A Status Report”. 《Dr. Dobb's Journal》. 2014년 4월 21일에 확인함. 
  2. Arranga, Edmund C.; Coyle, Frank P. (February 1998). 《Object-Oriented COBOL》. Cambridge University Press. 15쪽. ISBN 978-0132611404. Object-Oriented COBOL's style reflects the influence of Smalltalk and C++. 
  3. Imajo, Tetsuji; 외. (September 2000). 《COBOL Script: a business-oriented scripting language》. Enterprise Distributed Object Computing Conference. Makuhari, Japan: IEEE. doi:10.1109/EDOC.2000.882363. ISBN 0769508650. 
  4. Radin, George (1978). Wexelblat, Richard L., 편집. 《The early history and characteristics of PL/I》. History of Programming Languages. Academic Press (1981에 출판됨). 572쪽. doi:10.1145/800025.1198410. ISBN 0127450408. 
  5. Oliveira, Rui (2006). 《The Power of Cobol》. City: BookSurge Publishing. ISBN 0-620-34652-3. 
  6. Robinson, Brian (2009년 7월 9일). “Cobol remains old standby at agencies despite showing its age”. 《FCW》. Public Sector Media Group. 2014년 4월 26일에 확인함. 
  7. Mitchell, Robert L. (2012년 3월 14일). “Brain drain: Where Cobol systems go from here”. 《Computerworld》. 2015년 2월 9일에 확인함. 
  8. Mitchell, Robert L. (2006년 10월 4일). “Cobol: Not Dead Yet”. 《Computerworld》. 2014년 4월 27일에 확인함. 
  9. Porter Adams, Vicki (1981년 10월 5일). “Captain Grace M. Hopper: the Mother of COBOL”. 《InfoWorld》 3 (20): 33. ISSN 0199-6649. 
  10. Betts, Mitch (1992년 1월 6일). “Grace Hopper, mother of Cobol, dies”. 《Computerworld》 26 (1): 14. ISSN 0010-4841. 
  11. Lohr, Steve (2008). 《Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, and Iconoclasts--The Programmers Who Created the Software Revolution》. Basic Books. 52쪽. ISBN 978-0786730766. 
  12. Ensmenger, Nathan L. (2009). 《The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise》. MIT Press. 100쪽. ISBN 978-0262050937. LCCN 2009052638. 
  13. “ISO/IEC 1989:2014”. ISO. 2014년 5월 26일. 2014년 6월 7일에 확인함. 
  14. Beyer 2009, 282쪽.
  15. Beyer 2009, 281–282쪽.
  16. Sammet 1978a, 200쪽.
  17. Beyer 2009, 283쪽.
  18. Beyer 2009, 284쪽.
  19. “Early Meetings of the Conference on Data Systems Languages”. 《IEEE Annals of the History of Computing》 7 (4): 316. 1985. doi:10.1109/MAHC.1985.10047. 
  20. Sammet 2004, 104쪽.
  21. Beyer 2009, 286쪽.
  22. Conner 1984, ID/9쪽.
  23. Sammet 1978a, 201쪽.
  24. Bemer 1971, 132쪽.
  25. Beyer 2009, 288쪽.
  26. Sammet 1978a, 203쪽.
  27. CODASYL 1969, § I.2.1.1.
  28. Sammet 1978a, 204쪽.
  29. CODASYL 1969, § I.1.2.
  30. Beyer 2009, 290쪽.
  31. Sammet, Jean (1978). “The Early History of COBOL”. 《ACM SIGPLAN Notices》 (Association for Computing Machinery, Inc.) 13 (8): 121–161. doi:10.1145/960118.808378. 2010년 1월 14일에 확인함. 
  32. Sammet 1978a, 217쪽.
  33. Beyer 2009, 296쪽.
  34. Beyer 2009, 292쪽.
  35. Bemer 1971, 131쪽.
  36. Sammet 1978a, 221쪽.
  37. Beyer 2009, 291쪽.
  38. “Oral History of Captain Grace Hopper” (PDF). 컴퓨터 역사 박물관. December 1980. 37쪽. 2014년 6월 28일에 확인함. 
  39. Sammet 1978a, 218쪽.
  40. Marcotty 1978, 268쪽.
  41. Sammet 1978a, 205–206쪽.
  42. Sammet 1978a, Figure 8.
  43. Sammet 1978a, 230–231쪽.
  44. ISO/IEC JTC 1/SC 22/WG 4 2001, 846쪽.
  45. Sammet 1978a, 220쪽.
  46. Sammet 1978a, 228쪽.
  47. Sammet 1978a, 210쪽.
  48. Sullivan, Patricia (2004년 6월 25일). “Computer Pioneer Bob Bemer, 84”. 《The Washington Post》. B06면. 2014년 6월 28일에 확인함. 
  49. Bemer, Bob. “Thoughts on the Past and Future”. 2014년 5월 16일에 보존된 문서. 2014년 6월 28일에 확인함. 
  50. Beyer 2009, 293쪽.
  51. Beyer 2009, 294쪽.
  52. “The Story of the COBOL Tombstone” (PDF). 《The Computer Museum Report》 (The Computer Museum) 13: 8–9. Summer 1985. 2014년 4월 3일에 보존된 문서 (PDF). 2014년 6월 29일에 확인함. 
  53. “COBOL Tombstone”. 컴퓨터 역사 박물관. 2014년 6월 29일에 확인함. 
  54. Bemer 1971, 130쪽.
  55. Beyer 2009, 289쪽.
  56. CODASYL 1969, § I.1.1.
  57. Brown 1976, 47쪽.
  58. Bemer 1971, 133쪽.
  59. Beyer 2009, 297쪽.
  60. Williams, Kathleen Broome (2012년 11월 10일). 《Grace Hopper: Admiral of the Cyber Sea》. US Naval Institute Press. ISBN 978-1612512655. OCLC 818867202. 
  61. Compaq Computer Corporation: Compaq COBOL Reference Manual, Order Number: AA–Q2G0F–TK October 2000, Page xviii; Fujitsu Corporation: Net Cobol Language Reference, Version 15, January 2009; IBM Corporation: Enterprise COBOL for z/OS Language Reference, Version 4 Release 1, SC23-8528-00, December 2007
  62. Garfunkel, Jerome (1984년 11월 11일). “In defense of Cobol”. 《Computerworld》 18 (24): ID/19. 
  63. Bemer 1971, 134쪽.
  64. Brown 1976, 48쪽.
  65. CODASYL 1969, § I.2.2.4.
  66. CODASYL 1969, § I.2.3.
  67. Follet, Robert H.; Sammet, Jean E. (2003). Ralston, Anthony; Reilly, Edwin D.; Hemmendinger, David, 편집. 《Programming language standards》. 《Encyclopedia of Computer Science》 4판 (Wiley). 1467쪽. ISBN 0470864125. 
  68. Beyer 2009, 301쪽.
  69. Brown 1976, 49쪽.
  70. Brown 1976, 52쪽.
  71. Taylor, Alan (1972년 8월 2일). “Few Realise Wasted Resources of Local DP Schools”. 《Computerworld》 6 (31): 11. 
  72. Triance, J. M. (1974). 《Programming in COBOL: A Course of Twelve Television Lectures》. Manchester University Press. 87쪽. ISBN 0719005922. 
  73. Klein 2010, 16쪽.
  74. Baird, George N.; Oliver, Paul (May 1977). 〈1974 Standard (X3.23–1974)〉. 《Programming Language Standards — Who Needs Them?》 (PDF) (기술 보고서). 19–21쪽. 2014년 1월 7일에 보존된 문서 (PDF). 2014년 1월 7일에 확인함. 
  75. Culleton, John R., Jr. (1975년 7월 23일). 'Spotty' Availability A Problem...”. 《Computerworld》 9 (30): 17. ISSN 0010-4841. 
  76. Simmons, Williams B. (1975년 6월 18일). “Does Cobol's Report Writer Really Miss the Mark?”. 《Computerworld》 9 (25): 20. ISSN 0010-4841. 
  77. Shoor, Rita (1981년 1월 26일). “User Threatens Suit Over Ansi Cobol-80”. 《Computerworld》 15 (4): 1, 8. ISSN 0010-4841. 
  78. Shoor, Rita (1981년 10월 26일). “DPMA Takes Stand Against Cobol Draft”. 《Computerworld》 15 (43): 1–2. ISSN 0010-4841. 
  79. Gallant, John (1985년 9월 16일). “Revised Cobol standard may be ready in late '85”. 《Computerworld》 19 (37): 1, 8. ISSN 0010-4841. 
  80. “Expert addresses Cobol 85 standard”. 《Computerworld》 19 (37): 41, 48. 1985년 9월 16일. ISSN 0010-4841. 
  81. Paul, Lois (1982년 3월 15일). “Responses to Cobol-80 Overwhelmingly Negative”. 《Computerworld》 16 (11): 1, 5. ISSN 0010-4841. 
  82. Paul, Lois (1983년 4월 25일). “Study Sees Few Problems Switching to Cobol-8X”. 《Computerworld》 17 (17): 1, 6. 
  83. Gillin, Paul (1984년 11월 19일). “DEC users get head start implementing Cobol-80”. 《Computerworld》 18 (47): 1, 6. ISSN 0010-4841. 
  84. Garfunkel 1987, 150쪽.
  85. Roy, M. K.; Dastidar, D. Ghost (1989년 6월 1일). 〈Features of COBOL-85〉. 《COBOL Programming: Problems and Solutions》 2판. McGraw-Hill Education. 438–451쪽. ISBN 978-0074603185. 
  86. “COBOL Standards”. Micro Focus. 2004년 3월 31일에 원본 문서에서 보존된 문서. 2014년 9월 2일에 확인함. 
  87. “NetCOBOL for .Net”. 《netcobol.com》. GTSoftware. 2013. 2014년 7월 8일에 원본 문서에서 보존된 문서. 2014년 1월 29일에 확인함. 
  88. “A list of Codasyl Cobol features”. 《Computerworld》. 1984년 9월 10일. ID/28쪽. ISSN 0010-4841. 2014년 6월 8일에 확인함. 
  89. ISO/IEC JTC 1/SC 22/WG 4 2001, Annex F.
  90. Klein 2010, 21쪽.
  91. “JTC1/SC22/WG4 - COBOL”. ISO. 2010년 6월 30일. 2014년 4월 27일에 확인함. 
  92. Billman, John; Klink, Huib (2008년 2월 27일). “Thoughts on the Future of COBOL Standardization” (PDF). 2014년 8월 14일에 확인함. 
  93. ISO/IEC JTC 1/SC 22/WG 4 2010, Annex E.
  94. Schricker, Don (1998년 12월 2일). “J4: COBOL Standardization”. Micro Focus. 1999년 2월 24일에 원본 문서에서 보존된 문서. 2014년 7월 12일에 확인함. 
  95. Kizior, Ronald J.; Carr, Donald; Halpern, Paul. “Does COBOL Have a Future?” (PDF). 《The Proceedings of the Information Systems Education Conference 2000》 17 (126). 2012년 9월 30일에 확인함. 
  96. “Cobol brain drain: Survey results”. 《Computerworld》. 2012년 3월 14일. 2014년 4월 27일에 확인함. 
  97. ISO/IEC JTC 1/SC 22/WG 4 2010, § 8.9.
  98. “Reserved Words Table”. 《Micro Focus Visual COBOL 2.2 COBOL Language Reference》. Micro Focus. 2014년 3월 3일에 확인함. 
  99. ISO/IEC JTC 1/SC 22/WG 4 2010, § 8.3.1.
  100. ISO/IEC JTC 1/SC 22/WG 4 2010, § 8.3.2.
  101. ISO/IEC JTC 1/SC 22/WG 4 2001, § F.2.
  102. ISO/IEC JTC 1/SC 22/WG 4 2010, § D.2.
  103. Moseley, Jay (2015년 1월 17일). “COBOL Compiler from MVT”. 2015년 7월 19일에 확인함. 
  104. Dijkstra, Edsger W. (2006). “E. W. Dijkstra Archive: How do we tell truths that might hurt? (EWD498)”. University of Texas at Austin. 2007년 8월 29일에 확인함. 
  105. Riehle 1992, 125쪽.
  106. Shneiderman 1985, 349–350쪽.
  107. Coughlan, Michael (2014년 3월 16일). 《Beginning COBOL for Programmers》. Apress. 4쪽. ISBN 1430262532. 2014년 8월 13일에 확인함. 
  108. Sammet 1978b, 258쪽.
  109. Riehle 1992, 126쪽.
  110. Riehle 1992, 127쪽.

바깥 고리

  • (영어) 코볼 - 공식 웹사이트
  • (영어) 코볼 - Curlie