코볼(COBOL)은 Common Business-Oriented Language의 약자로서, 1959년 개발된 사무용 프로그래밍 언어이다. 미국의 여성 해군 제독인 그레이스 호퍼(Grace Hopper)가 만든 플로우매틱(Flow-Matic)을 기반으로 개발되었다. 포트란(Fortran)이 주로 공학용으로 사용된 반면, 코볼(COBOL)은 비즈니스, 회계, 금융, 정부 관리 시스템 등에 널리 사용되었다. 이후 C, Java 등의 언어로 대체되어 거의 사용되지 않고 있다.
개요
코볼은 3세대 프로그래밍 언어로, 1959년 처음 발표되었다. 이후 여러 번 규격이 개정되었고 현재는 객체 지향도 지원한다.
배경
1950년대 말 컴퓨터 사용자와 제조업체는 프로그래밍의 비용이 치솟는 것을 걱정하기 시작했다. 새로운 프로그래밍 언어들이 빠르게 확산되는 가운데, 동일 조사에서 하나로 통일된 사무 지향 언어가 사용된다면 변환은 훨씬 저렴해지고 빨라질 것이라는 결과가 나왔다.
1959년 컴퓨터 사용자들, 제조업체들의 대표들이 통일된 사무 언어에 대한 정식 회의를 조성하게 되었고, 영어와 같은 데이터 처리 언어 FLOW-MATIC을 개발한 그레이스 호퍼 를 포함하여 Jean Sammet, Saul Gorn이 대표로 참석했다.
이 단체는 미국 국방부에 통일된 사무 언어를 만들기 위해 지원해줄 것을 요청하였고, 대표단은 미국 국방부의 데이터 시스템 연구 스태프 총괄을 맡던 찰스 A.필립스에게 감명을 주었는데, 그는 이들이 미국 국방부의 문제들을 꼼꼼하게 이해하였다고 생각하였다.
이러한 이유로 필립스는 이 회의를 지원하는데 동의하였고, 대표단에게 의제의 초안을 작성하는 일을 부여하였다.
역사
- 코볼-60 : 1959년 ~ 1960년 / 사무를 위한 공용 프로그래밍 언어 개발.
- 코볼-61~ 65 : 1961년 ~ 1965년 / 사양이 명확해지고, 대용량 기억 장치의 파일들과 표를 다룰 수 있는 기능 소개.
- 코볼-68 : 1968년 ~ 1972년 / 버전 간 비호환성을 극복하기 위해 코볼을 표준화. 1972년 ISO에 채택.
- 코볼-74 : 1970년 ~ 1978년 / 1970년 가장 널리 쓰이는 프로그래밍 언어, 1974년 ANIS (ANS)는 코볼의 개정판을 출판 파일 조직, DELETE 문, 세그먼트 모듈과 같은 새로운 기능들이 포함, 1978년 ISO는 갱신된 표준 채택.
- 코볼-85 : 1978년 ~ 1985년 / 범위 종단자, 내재된 프로그램, CONTINUE 문, EVALUTE 문, INITIALIZE 문, 인라인 PERFORM 루프, 참조 수정, 입출력 상태 코드 등과 같은 기능들이 ISO에 채택.
- 코볼-2002 : 1990년대 초 ~ 2002년 / 완전한 리비전의 차기 코볼에 객채 지향을 추가하는 작업.
- 코볼-2014 : 2003년 ~ 2009년 / 이식 가능한 산술 결과물들은 IEEE 754 자료형으로 치환, 메소드 오버로딩, 동적 캐퍼시티 테이블, 주된 기능들이 선택 사항이 됨.
문법
코볼은 영어와 같은 문법을 가지고 있으며, 프로그램 안의 거의 모든 것을 기술하는데 사용된다. 코볼은 300개의 예약어가 있으며, 일부 예약어는 대체가 가능하고 단수 복수를 표현하는 낱말도 마치 영어의 구문처럼 바꾸어 사용할 수 있다.
각 코볼은 4개의 어휘 항목을 이루는데 워드, 리터럴, 픽처 문자, 구분자가 포함되고, 워드에는 예약어와 사용자 정의 식별자를 포함한다.
IDENTIFICATION DIVISION
IDENTIFICATION DIVISION은 다음의 코드 개체를 식별하고 클래스 나 인터페이스 의 정의를 포함한다.
ENVIRONMENT DIVISION
ENVIRONMENT DIVISION에는 CONFIGURATION 섹션과 INPUT-OUTPUT 섹션이 포함되는데, CONFIGURATION 섹션은 통화 기호, 로케일, 문자 집합과 같은 변수 기능들을 지정하는데 사용되고, INPUT-OUTPUT 섹션은 파일 관련 정보를 포함한다.
DATA DIVISION
DATA DIVISION은 여섯 개의 섹션으로 나뉘며 각기 다른 항목들을 선언한다.
- FILE SECTION : 파일 레코드
- WORKING-STORAGE SECTION : 정적 변수
- LINKAGE SECTION : 매개 변수와 변환값
- REPORT SECTION, SCREEN SECTION : 텍스트 기반의 사용자 인터페이스
자료형
자료형
|
참고
|
영문자
|
레터와 공백만 포함
|
영숫자
|
어떠한 문자도 포함
|
불린
|
0과 1이라는 이진 숫자 형태로 저장된 데이터
|
색인
|
테이블 요소를 참조하는데 사용
|
내셔널
|
영숫자와 비슷하지만 확장 문자 집합을 이용
|
숫자
|
숫자만 포함할 수 있음
|
오브젝트
|
오브젝트나 NULL을 참조 할 수 있음
|
포인터
|
|
장점과 단점
장점
- 다른 언어들에 미친 영향 : 코볼의 자료 구조는 후에 만들어진 프로그래밍 언어들에 영향을 주었다. 데이터 베이스 관리 시스템의 개발보다 앞서나갔고, 수집된 데이터는 포트란 의 배열보다 훨씬 더 앞섰다. 또한 잘 정의된 디비전 구조는 외부 참조 정의를 제한함으로써 플랫폼 변경을 단순화하는 일에 기여하였다.
단점
- 호환성 문제 : 코볼-85는 이전의 버전들과 호환되지 못해 논란이 있었다.
- 문법의 문제 : 코볼 문법은 장황하다는 이유로 비판을 받았다.
- 설계 과정에 대한 걱정 : 코볼을 사용하는 작업자들은 설계 과정이 효과적인지에 대한 의구심이 많았다.
같이 보기
이 코볼 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 델파이 • 러스트 • 루비 • 루아 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 템플릿 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 노팔로우 링크 • 두팔로우 링크 • 디버깅 • 디코딩 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정적변수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 파라미터(매개변수) • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • join • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|