COBOL이란 무엇인가요?

사무실 건물 천장의 금속 지붕 구조

작성자

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Michael Goodwin

Staff Editor, Automation & ITOps

IBM Think

COBOL이란 무엇인가요?

일반 비즈니스 지향 언어(COBOL)는 비즈니스 데이터 처리 요구 사항에 맞게 특별히 개발된 컴파일된 고급 프로그래밍 언어로서 영어와 유사한 구문을 사용합니다.

COBOL은 최적의 활용성을 염두에 두고 설계되었습니다. 장황하다는 특징이 있어 프로그래머가 읽고 유지 관리하기 쉬운 프로그래밍 언어이며 메인프레임 컴퓨터와 운영 체제 전반에서 작동할 수 있습니다. 실제로 미국 국립표준기술연구소(ANSI)와 국제표준화기구(ISO)가 표준화한 최초의 프로그래밍 언어 중 하나입니다.

COBOL의 큰 강점 중 하나는 많은 기존 프로그래밍 언어에 들어있지 않은 고정밀 고정 소수점 십진수 계산을 강력하게 지원한다는 것입니다. 이 기능은 많은 대형 금융 기관이 COBOL을 채택하는 데 일조한 차별점입니다.

COBOL은 레거시 시스템으로 간주되지만 많은 정부 및 민간 부문 조직에서 재무, 관리 및 비즈니스 애플리케이션을 실행하는 데 계속 사용하고 있습니다. 실제로 COBOL의 명령형, 절차적 및 객체 지향(최신 버전) 구성은 모든 온라인 뱅킹 시스템의 40% 이상을 차지하는 기반을 이루고 있습니다.1

또한 대면 신용카드 거래의 80%를 지원하고 전체 ATM 거래의 95%를 처리하며 매일 30억 달러 이상의 상거래를 창출하는 시스템을 지원합니다.1 안정성과 처리 능력이 뛰어나 기업이 기존 아키텍처에서 앱과 프로그램을 유지 관리하도록 지원하는 데 계속해서 중요한 역할을 하고 있습니다.

전문가의 인사이트를 바탕으로 한 최신 기술 뉴스

Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.

감사합니다! 구독이 완료되었습니다.

구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.

COBOL의 역사

COBOL은 1959년에 결성된 정부 및 비즈니스 조직 컨소시엄인 데이터 시스템 언어 회의(CODASYL)에 의해 개발되었습니다. 컴퓨터 과학의 선구자인 Grace Hopper 박사가 만든 언어인 FLOW-MATIC에서 일부 파생된 COBOL은 여러 운영 체제(Linux, Windows, Unix, z/OS 등) 및 하드웨어 환경에서 작동하는 프로그래밍 언어를 추진한 미국 국방부(DoD) 이니셔티브의 일환으로 탄생했습니다.

COBOL 프로그래밍 언어의 첫 번째 버전은 1960년에 출시되었습니다. COBOL 프로그래밍은 원래 임시방편으로 사용하기 위한 것이었지만 DoD는 곧 그 유용성을 깨닫고 컴퓨터 제조업체에 제공을 의무화했습니다.

결국 COBOL은 1968년에 컴퓨터 언어로 표준화되었으며, 그 후 COBOL 프로그래머는 COBOL-61, COBOL-68, COBOL-74, COBOL-85를 포함한 여러 수정 및 현대화를 구현했습니다. COBOL 2002는 객체 지향 기능 및 기타 고급 프로그래밍 패러다임을 언어에 도입하여 COBOL 애플리케이션이 최신 소프트웨어 개발 방식과 더욱 호환되도록 하는 것을 목표로 했습니다. 그러나 이 버전은 새로운 기능에 대한 지원 부족과 사용자 요구로 어려움을 겪었습니다. 

COBOL 14는 휴대용 연산 결과를 IEEE 754 데이터 유형으로 대체하는 것을 비롯한 새로운 변화를 도입했으며, 최신 표준인 COBOL 2023은 최신 시스템과 COBOL의 상호 운용성을 개선하는 데 초점을 맞춰 새 기능을 추가로 제공했습니다.

애플리케이션 개발

시작하기: 클라우드에서 기업용 애플리케이션 개발

이 영상에서 Peter Haumer 박사는 IBM Z Open Editor, IBM Wazi 및 Zowe 등 다양한 구성 요소와 사례를 시연하며 오늘날 하이브리드 클라우드에서의 최신 기업용 애플리케이션 개발이 어떤 모습인지 설명합니다. 

COBOL 구조

COBOL 프로그램은 구역, 섹션, 단락, 문장, 동사 및 문자열로 구성된 계층 구조로 되어 있습니다. COBOL 시스템은 구역으로 나뉘기 때문에(4개 구역으로 구성) COBOL 프로그램 내에서 관련 부분을 명확하게 분리할 수 있습니다.

COBOL 구역은 다음과 같습니다.

식별 구역

식별 구역은 COBOL 프로그램의 첫 번째 구역이며 필수 구역입니다. 프로그램에 이름을 지정하고 작성자, 작성 날짜, 프로그램 목적에 대한 간략한 설명과 같은 기타 식별 정보를 제공합니다.

COBOL 프로그램에서는 식별 구역 내에 반드시 PROGRAM-ID 단락이 필요합니다. 예를 들면 다음과 같습니다.

IDENTIFICATION DIVISION.

PROGRAM-ID. YourProgramName

AUTHOR. Your name

DATE-WRITTEN. YYYYMMDD

COMMENT. "Short description of the program"

환경 구역

환경 구역은 프로그램의 런타임 환경을 지정하고 사용할 인풋 및 아웃풋 리소스를 정의합니다. 이 구역은 두 섹션으로 나뉩니다.

구성 섹션은 이름에서 알 수 있듯이 사용 중인 컴퓨터 및 컴파일러 기능을 포함한 시스템 구성에 대한 정보를 제공합니다. 그러나 컴파일러 도구의 발전으로 최신 COBOL 시스템이 일반적으로 환경에 맞게 추론하고 자동으로 적응할 수 있게 되면서 구성 섹션은 다소 쓸모가 없어졌습니다.

인풋-아웃풋 섹션은 프로그램이 상호 작용할 수 있는 파일 및 관련 디바이스를 지정합니다. 여기에는 프로그램 내의 파일 이름을 외부 파일에 매핑하는 FILE-CONTROL 단락과 일반적으로 인풋-아웃풋 작업에 대한 최적화 또는 시퀀싱 정보가 포함되는 I-O-CONTROL 단락이 포함됩니다.

데이터 구역

데이터 구역에는 프로그램에 대한 모든 변수, 파일 및 상수 정의가 포함됩니다. 환경 구역과 마찬가지로 데이터 구역도 세분화됩니다.

파일 섹션에는 프로그램이 읽거나 쓸 모든 파일이 나열됩니다. 파일 설명 항목은 각 파일을 정의하고 파일의 레코드 구조를 설명합니다.

작업 스토리지 섹션은 카운터, 누산기, 상수 및 I-O 파일과 관련이 없는 기타 데이터 리포지토리를 포함하여 프로그램 실행 전반에 걸쳐 값을 유지하는 변수를 정의합니다.

이후 버전의 COBOL에서 도입된 로컬 스토리지 섹션은 프로그램 또는 메서드 배포 시 할당되고 종료 시 할당 취소되는 변수를 정의하므로 재귀 알고리즘 및 재진입 프로그램에 특히 유용합니다.

마지막으로 연결 섹션은 한 프로그램에서 다른 프로그램으로 전달되는 데이터 항목을 정의합니다.

프로시저 구역

프로시저 구역에는 프로그램의 실행 코드가 포함되며, 이는 가독성을 높이고 유지 관리를 용이하게 하기 위해 코드를 코드 블록으로 구조화하는 단락 및 섹션으로 나뉩니다.

추가 구성 요소

COBOL 시스템의 모든 구역은 인간 언어의 섹션 및 단락과 유사한 섹션 및 단락을 포함할 수 있습니다. 섹션은 각 구역 내에서 하나 이상의 단락을 포함하는 명명된 논리적 하위 구역입니다. 프로그램 내에서 호출하거나 실행할 수 있는 모듈식 코드 단위 역할을 합니다.

단락은 COBOL 프로그램에서 가장 작은 실행 단위인 문장의 모음이며 특정 기능을 수행하고 고유한 이름으로 식별됩니다. 단락 내의 각 COBOL 문 또는 문장은 코드 실행 방법을 나타내는 COBOL 동사(예: MOVE, DISPLAY, ADD)로 시작합니다.

COBOL 언어에서 나눌 수 없는 가장 기본적인 단위는 문자입니다. 문자열은 구분 기호로 구분되어 COBOL 단어(리터럴 또는 주석 항목)를 구성하는 문자 또는 연속 문자의 시퀀스입니다.

COBOL 구문

COBOL은 영어와 유사한 구문을 사용하며 장황함과 가독성에 중점을 두어 자체 문서화되고 설명이 거의 필요하지 않습니다. 이러한 특징 때문에 FORTRAN과 같은 간결한 언어와 차별화됩니다. 또한 여러 가지 다른 데이터 유형(예: 숫자, 영숫자, 편집된 데이터)을 지원할 수 있지만 프로그램을 실행하기 위해 몇 가지 추가 구문 구성 요소를 사용합니다.

문장 및 문

문장은 하나 이상의 문으로 구성된 COBOL 코드 행으로서 마침표로 끝납니다. 반면 문은 파일 처리 및 데이터 처리 프로세스를 조율하는 개별 명령어입니다(ADD, START, DISPLAY, WRITE 등의 동사 사용).

예를 들어, MOVE 문은 시스템 메모리의 한 부분에서 다른 부분으로 데이터를 전송합니다. COMPUTE 문은 산술 연산을 수행하고 결과를 변수로 저장합니다. READ 문은 인풋 파일에서 레코드를 검색합니다.

절은 문이 실행되는 방법을 수정하거나 규정할 수 있는 문의 구성 요소입니다. 한 가지 예로, "PIC 9(3)"과 같은 PIC 절은 최대 3자리 숫자를 포함할 수 있는 숫자 변수를 정의합니다.

제어 구조

COBOL의 반복 및 조건부 제어 구조를 통해 시스템은 데이터 흐름을 제어할 수 있습니다.

예를 들어 IF ... ELSE 구조는 프로그램이 시스템 조건 평가에 따라 다양한 코드 블록을 실행할 수 있도록 COBOL에서 조건부 로직을 구현합니다. PERFORM 문은 다른 프로그래밍 언어의 루프와 유사하게 지정된 횟수만큼 또는 조건이 충족될 때까지 단락이나 섹션을 실행합니다.

서브프로그램

COBOL은 기본 프로그램 또는 기타 서브프로그램에서 배포되는 서브프로그램을 사용하여 모듈식 프로그래밍을 지원할 수 있습니다. 내부 서브프로그램은 호출 프로그램(프로시저 구역에 작성됨)과 동일한 소스 코드 내에서 정의되는 반면, 외부 서브프로그램은 별도로 컴파일되고 필요에 따라 연결됩니다.

COBOL 프로그램 구축

COBOL을 사용하여 프로그램을 구축하는 프로세스는 조직 환경에 따라 다릅니다. 그러나 몇 가지 주요 단계가 있습니다.

프로그램 작성. 예를 들어 소프트웨어 엔지니어가 기본적인 "Hello, world!" 프로그램을 작성하려면 다음과 같이 작성할 것입니다.

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

COBOL 호환 통합 개발 환경(IDE) 또는 텍스트 편집기를 프로세스에 이용할 수 있습니다.

프로그램 컴파일. 다른 고급 프로그래밍 언어와 마찬가지로 COBOL 코드는 실행하기 전에 컴파일해야 합니다. COBOL 컴파일러(예: GnuCOBOL, Micro Focus, IBM® COBOL Complier Family)는 컴퓨터의 CPU가 이해하고 실행할 수 있도록 프로그램을 기계 코드로 변환합니다.

프로그램 실행. 프로그램이 컴파일되면 프로그래머는 대상 시스템에서 프로그램을 실행할 수 있습니다. 버그가 없다면 프로그램은 프로시저 구역에 정의된 데이터 처리 로직에 따라 데이터를 처리합니다. 실행 프로세스에는 일반적으로 파일 및 데이터베이스에서 데이터를 읽고 데이터 계산 또는 변환을 수행한 후, 결과를 파일 또는 데이터베이스에 쓰는 작업이 수반됩니다.

프로그램 디버깅(필요한 경우). 프로그램에 오류나 버그가 있는 경우 프로그래머는 이를 식별하고 수정해야 합니다(디버깅이라고 하는 프로세스). 디버깅 도구와 기술을 이용하면 이 프로세스를 간소화할 수 있습니다.

COBOL 프로그래밍의 이점

지금은 Python, Java 및 JavaScript와 같은 최신 언어보다 덜 인기가 있지만 COBOL은 한때 비즈니스 애플리케이션을 위한 컴퓨터 프로그래밍에서 가장 널리 사용되는 언어였습니다. 그러나 COBOL 개발은 아직까지도 특히 금융 기관, 보험 회사, 정부 기관에서 글로벌 기술 인프라의 중요한 기능적 요소로 남아 있습니다.

이와 같은 지속력으로 입증되었듯이, COBOL 프로그래머의 상대적인 부족에도 불구하고1 COBOL 프로그래밍을 이용하는 조직은 다음과 같은 다양한 이점을 얻을 수 있습니다.

안정성

COBOL은 미션 크리티컬 애플리케이션에 안정적이고 신뢰할 수 있는 성능을 구현하는 것으로 잘 알려져 있습니다. COBOL로 작성된 시스템은 가동 시간이 길고 오류가 거의 발생하지 않아 금융 기관 및 정부 서비스를 중단 없이 운영하는 데 매우 중요한 역할을 합니다.

확장성

개발자는 코드베이스를 크게 변경하지 않고도 증가하는 워크로드를 처리하도록 COBOL 애플리케이션을 확장할 수 있습니다. 이를 통해 조직은 자주 재작성하거나 다른 언어로 마이그레이션하지 않고도 비즈니스에 맞게 COBOL 기반 시스템을 확장할 수 있습니다.

데이터 처리 및 파일 처리

COBOL은 탁월한 파일 처리 기능을 제공합니다. 복잡한 대규모 트랜잭션 데이터를 처리할 수 있으며 순차, 인덱싱 및 상대 데이터 파일 처리를 포함한 여러 파일 액세스 방법을 지원할 수 있습니다. 프로세스 자동화에 강력한 기능을 제공하므로 COBOL은 금융 거래 처리, 데이터베이스 관리, 보고서 생성과 같은 일괄 처리 작업에 이상적입니다.

상호 운용성

오늘날의 COBOL 시스템은 HTML, JSON, XML, 생성형 AI2 등 다른 언어 및 기술과 상호 운용할 수 있습니다. 현대화 업데이트를 통해 COBOL은 Amazon Web Services(AWS), Microsoft Azure 및 IBM® Cloud와 같은 가상 및 클라우드 서비스, SQL 데이터베이스 및 기타 최신 DevOps 인프라와도 상호 운용할 수 있습니다.

관련 솔루션
IBM Power 서버  

IBM Power는 IBM Power 프로세서 기반 서버 제품군으로 IBM AIX, IBM i 및 Linux를 실행할 수 있습니다.

Power 살펴보기
IBM 클라우드. 하이브리드. 개방형. 복원력.

IBM Cloud는 규제 대상 산업을 위해 설계된 엔터프라이즈 클라우드 플랫폼으로, AI를 지원하는 안전한 하이브리드 솔루션을 제공합니다.

클라우드 솔루션 살펴보기
클라우드 컨설팅 서비스

IBM Cloud 컨설팅 서비스를 통해 새로운 역량을 개발하고 비즈니스 민첩성을 향상하세요. 하이브리드 클라우드 전략 및 전문가 파트너십을 통해 솔루션을 공동으로 개발하고, 디지털 혁신을 가속화하고, 성능을 최적화하는 방법을 알아보세요.

클라우드 서비스 살펴보기
다음 단계 안내

IBM® Cloud: AI 지원, 보안, 하이브리드 설계. 가장 규제가 심한 산업에서도 사용할 수 있는 엔터프라이즈 클라우드 플랫폼으로, 복원력과 성능, 보안이 뛰어나고 규정을 준수하는 클라우드를 제공합니다.

클라우드 솔루션 살펴보기 자세한 정보 보기