일반 비즈니스 지향 언어(COBOL)는 비즈니스 데이터 처리 요구 사항에 맞게 특별히 개발된 컴파일된 고급 프로그래밍 언어로서 영어와 유사한 구문을 사용합니다.
COBOL은 최적의 활용성을 염두에 두고 설계되었습니다. 장황하다는 특징이 있어 프로그래머가 읽고 유지 관리하기 쉬운 프로그래밍 언어이며 메인프레임 컴퓨터와 운영 체제 전반에서 작동할 수 있습니다. 실제로 미국 국립표준기술연구소(ANSI)와 국제표준화기구(ISO)가 표준화한 최초의 프로그래밍 언어 중 하나입니다.
COBOL의 가장 큰 강점 중 하나는 고정 소수점 기반의 고정밀 십진수 계산을 강력하게 지원한다는 점이며, 이는 많은 기존 프로그래밍 언어에서 기본적으로 제공되지 않는 기능입니다. 이 기능은 많은 대형 금융 기관이 COBOL을 채택하는 데 일조한 차별점입니다.
COBOL은 레거시 시스템으로 간주되지만 많은 정부 및 민간 부문 조직에서 재무, 관리 및 비즈니스 애플리케이션을 실행하는 데 계속 사용하고 있습니다. 실제로 COBOL의 명령형, 절차적 및 객체 지향(최신 버전) 구성은 모든 온라인 뱅킹 시스템의 40% 이상을 차지하는 기반을 이루고 있습니다.1
또한 대면 신용카드 거래의 80%를 지원하고 전체 ATM 거래의 95%를 처리하며 매일 30억 달러 이상의 상거래를 창출하는 시스템을 지원합니다.1 안정성과 처리 능력이 뛰어나 기업이 기존 아키텍처에서 앱과 프로그램을 유지 관리하도록 지원하는 데 계속해서 중요한 역할을 하고 있습니다.
새로운 시스템과의 호환성을 유지하기 위해 COBOL 기반 시스템을 사용하거나 의존하는 많은 기업이 COBOL 현대화, 즉 COBOL 애플리케이션을 업데이트하거나 변환하는 과정을 진행하거나 검토하고 있습니다. 현대화는 COBOL의 신뢰성, 안정성, 대용량 데이터 처리 역량을 가능하게 하는 핵심 로직을 유지하면서도 최신 기술 스택과의 상호 운용성을 향상시키는 데 도움을 줄 수 있습니다.
경우에 따라 COBOL 현대화는 COBOL 코드를 더 새로운 프로그래밍 언어로 변환하는 작업을 포함할 수 있습니다. 하지만 언어 변환에만 집중하면 플랫폼 요소, 즉 애플리케이션이 무엇 위에서 실행되고 어떤 시스템과 통합되는지를 간과하게 됩니다. 포괄적인 COBOL 현대화 전략에는 데이터 아키텍처 재설계, 런타임 교체, 트랜잭션 처리 무결성 확보 등 플랫폼 관련 요소를 포함한 시스템 수준의 엔지니어링이 반드시 포함되어야 합니다.
Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.
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의 상호 운용성을 개선하는 데 초점을 맞춰 새 기능을 추가로 제공했습니다.
COBOL 프로그램은 구역, 섹션, 단락, 문장, 동사 및 문자열로 구성된 계층 구조로 되어 있습니다. COBOL 시스템은 구역으로 나뉘기 때문에(4개 구역으로 구성) COBOL 프로그램 내에서 관련 부분을 명확하게 분리할 수 있습니다.
COBOL 구역은 다음과 같습니다.
식별 구역은 COBOL 프로그램의 첫 번째 구역이며 필수 구역입니다. 프로그램에 이름을 지정하고 작성자, 작성 날짜, 프로그램 목적에 대한 간략한 설명과 같은 기타 식별 정보를 제공합니다.
COBOL 프로그램에서는 식별 구역 내에 반드시 PROGRAM-ID 단락이 필요합니다. 예를 들면 다음과 같습니다.
환경 구역은 프로그램의 런타임 환경을 지정하고 사용할 인풋 및 아웃풋 리소스를 정의합니다. 이 구역은 두 섹션으로 나뉩니다.
구성 섹션은 이름에서 알 수 있듯이 사용 중인 컴퓨터 및 컴파일러 기능을 포함한 시스템 구성에 대한 정보를 제공합니다. 그러나 컴파일러 도구의 발전으로 최신 COBOL 시스템이 일반적으로 환경에 맞게 추론하고 자동으로 적응할 수 있게 되면서 구성 섹션은 다소 쓸모가 없어졌습니다.
인풋-아웃풋 섹션은 프로그램이 상호 작용할 수 있는 파일 및 관련 디바이스를 지정합니다. 여기에는 프로그램 내의 파일 이름을 외부 파일에 매핑하는 FILE-CONTROL 단락과 일반적으로 인풋-아웃풋 작업에 대한 최적화 또는 시퀀싱 정보가 포함되는 I-O-CONTROL 단락이 포함됩니다.
데이터 구역에는 프로그램에 대한 모든 변수, 파일 및 상수 정의가 포함됩니다. 환경 구역과 마찬가지로 데이터 구역도 세분화됩니다.
파일 섹션에는 프로그램이 읽거나 쓸 모든 파일이 나열됩니다. 파일 설명 항목은 각 파일을 정의하고 파일의 레코드 구조를 설명합니다.
작업 스토리지 섹션은 카운터, 누산기, 상수 및 I-O 파일과 관련이 없는 기타 데이터 리포지토리를 포함하여 프로그램 실행 전반에 걸쳐 값을 유지하는 변수를 정의합니다.
이후 버전의 COBOL에서 도입된 로컬 스토리지 섹션은 프로그램 또는 메서드 배포 시 할당되고 종료 시 할당 취소되는 변수를 정의하므로 재귀 알고리즘 및 재진입 프로그램에 특히 유용합니다.
마지막으로 연결 섹션은 한 프로그램에서 다른 프로그램으로 전달되는 데이터 항목을 정의합니다.
프로시저 구역에는 프로그램의 실행 코드가 포함되며, 이는 가독성을 높이고 유지 관리를 용이하게 하기 위해 코드를 코드 블록으로 구조화하는 단락 및 섹션으로 나뉩니다.
COBOL 시스템의 모든 구역은 인간 언어의 섹션 및 단락과 유사한 섹션 및 단락을 포함할 수 있습니다. 섹션은 각 구역 내에서 하나 이상의 단락을 포함하는 명명된 논리적 하위 구역입니다. 프로그램 내에서 호출하거나 실행할 수 있는 모듈식 코드 단위 역할을 합니다.
단락은 COBOL 프로그램에서 가장 작은 실행 단위인 문장의 모음이며 특정 기능을 수행하고 고유한 이름으로 식별됩니다. 단락 내의 각 COBOL 문 또는 문장은 코드 실행 방법을 나타내는 COBOL 동사(예: MOVE, DISPLAY, ADD)로 시작합니다.
COBOL 언어에서 나눌 수 없는 가장 기본적인 단위는 문자입니다. 문자열은 구분 기호로 구분되어 COBOL 단어(리터럴 또는 주석 항목)를 구성하는 문자 또는 연속 문자의 시퀀스입니다.
COBOL은 영어와 유사한 구문을 사용하며 장황함과 가독성에 중점을 두어 자체 문서화되고 설명이 거의 필요하지 않습니다. 이러한 특징 때문에 FORTRAN과 같은 간결한 언어와 차별화됩니다. 또한 여러 가지 다른 데이터 유형(예: 숫자, 영숫자, 편집된 데이터)을 지원할 수 있지만 프로그램을 실행하기 위해 몇 가지 추가 구문 구성 요소를 사용합니다.
문장은 하나 이상의 문으로 구성된 COBOL 코드 행으로서 마침표로 끝납니다. 반면 문은 파일 처리 및 데이터 처리 프로세스를 조율하는 개별 명령어입니다(ADD, START, DISPLAY, WRITE 등의 동사 사용).
예를 들어, MOVE 문은 시스템 메모리의 한 부분에서 다른 부분으로 데이터를 전송합니다. COMPUTE 문은 산술 연산을 수행하고 결과를 변수로 저장합니다. READ 문은 인풋 파일에서 레코드를 검색합니다.
절은 문이 실행되는 방법을 수정하거나 규정할 수 있는 문의 구성 요소입니다. 한 가지 예로, "PIC 9(3)"과 같은 PIC 절은 최대 3자리 숫자를 포함할 수 있는 숫자 변수를 정의합니다.
COBOL의 반복 및 조건부 제어 구조를 통해 시스템은 데이터 흐름을 제어할 수 있습니다.
IF ... ELSE 구조는 예를 들어 COBOL에서 조건 논리를 구현하여 시스템 조건을 평가한 결과에 따라 프로그램이 서로 다른 코드 블록을 실행할 수 있도록 합니다. 또한 PERFORM 문은 다른 프로그래밍 언어의 반복문과 유사하게 특정 횟수만큼 또는 특정 조건이 충족될 때까지 단락이나 섹션을 실행합니다.
COBOL은 기본 프로그램 또는 기타 서브프로그램에서 배포되는 서브프로그램을 사용하여 모듈식 프로그래밍을 지원할 수 있습니다. 내부 서브프로그램은 호출 프로그램(프로시저 구역에 작성됨)과 동일한 소스 코드 내에서 정의되는 반면, 외부 서브프로그램은 별도로 컴파일되고 필요에 따라 연결됩니다.
COBOL을 사용하여 프로그램을 구축하는 프로세스는 조직 환경에 따라 다릅니다. 그러나 몇 가지 주요 단계가 있습니다.
프로그램 작성. 예를 들어 소프트웨어 엔지니어가 기본적인 "Hello, world!" 프로그램을 작성하려면 다음과 같이 작성할 것입니다.
COBOL 호환 통합 개발 환경(IDE) 또는 텍스트 편집기를 프로세스에 이용할 수 있습니다.
프로그램 컴파일. 다른 고급 프로그래밍 언어와 마찬가지로 COBOL 코드는 실행하기 전에 컴파일해야 합니다. COBOL 컴파일러(예: GnuCOBOL, Micro Focus, IBM® COBOL Complier Family)는 컴퓨터의 CPU가 이해하고 실행할 수 있도록 프로그램을 기계 코드로 변환합니다.
프로그램 실행. 프로그램이 컴파일되면 프로그래머는 대상 시스템에서 프로그램을 실행할 수 있습니다. 버그가 없다면 프로그램은 프로시저 구역에 정의된 데이터 처리 로직에 따라 데이터를 처리합니다. 실행 프로세스에는 일반적으로 파일 및 데이터베이스에서 데이터를 읽고 데이터 계산 또는 변환을 수행한 후, 결과를 파일 또는 데이터베이스에 쓰는 작업이 수반됩니다.
프로그램 디버깅(필요한 경우). 프로그램에 오류나 버그가 있는 경우 프로그래머는 이를 식별하고 수정해야 합니다( 디버깅이라고 하는 프로세스). 디버깅 도구와 기술을 이용하면 이 프로세스를 간소화할 수 있습니다.
지금은 Python, Java 및 JavaScript와 같은 최신 언어보다 덜 인기가 있지만 COBOL은 한때 비즈니스 애플리케이션을 위한 컴퓨터 프로그래밍에서 가장 널리 사용되는 언어였습니다. 그러나 COBOL 개발은 아직까지도 특히 금융 기관, 보험 회사, 정부 기관에서 글로벌 기술 인프라의 중요한 기능적 요소로 남아 있습니다.
지속적인 사용 사례에서 확인할 수 있듯이 COBOL은 COBOL 개발자가 상대적으로 부족함에도 불구하고1 다음과 같은 여러 장점을 제공합니다.
COBOL은 미션 크리티컬 애플리케이션에 안정적이고 신뢰할 수 있는 성능을 구현하는 것으로 잘 알려져 있습니다. COBOL로 작성된 시스템은 가동 시간이 길고 오류가 거의 발생하지 않아 금융 기관 및 정부 서비스를 중단 없이 운영하는 데 매우 중요한 역할을 합니다.
개발자는 코드베이스를 크게 변경하지 않고도 증가하는 워크로드를 처리하도록 COBOL 애플리케이션을 확장할 수 있습니다. 이를 통해 조직은 자주 재작성하거나 다른 언어로 마이그레이션하지 않고도 비즈니스에 맞게 COBOL 기반 시스템을 확장할 수 있습니다.
COBOL은 탁월한 파일 처리 기능을 제공합니다. 복잡한 대규모 트랜잭션 데이터를 처리할 수 있으며 순차, 인덱싱 및 상대 데이터 파일 처리를 포함한 여러 파일 액세스 방법을 지원할 수 있습니다. 프로세스 자동화에 강력한 기능을 제공하므로 COBOL은 금융 거래 처리, 데이터베이스 관리, 보고서 생성과 같은 일괄 처리 작업에 이상적입니다.
현대화 업데이트를 통해 COBOL은 최신 웹 애플리케이션 및 마이크로서비스와 통신하고, 최신 형식으로 데이터를 교환하며, 데이터베이스 호환성을 유지하고, 가상 및 클라우드 서비스(Amazon Web Services (AWS), Microsoft Azure 및 IBM® Cloud)와 상호 운용할 수 있습니다. 또한 DevOps 툴과 워크플로와 통합하고 TLS 암호화나 OAuth와 같은 최신 보안 표준도 지원할 수 있습니다.
IBM zSystems는 z/OS, Linux, z/VSE, z/TPF, z/VM 및 zSystems 소프트웨어를 실행하는 최신 z/Architecture 하드웨어 제품군입니다.
미션 크리티컬 워크로드를 처리하는 동시에 전체 IT 인프라의 보안, 안정성 및 제어를 유지하도록 설계되었습니다.
IBM으로 메인프레임 애플리케이션을 현대화하여 디지털 혁신을 가속화하세요.
1 Serain, JD. “The World Depends on 60-Year-Old Code No One Knows Anymore”, PCMag, 2023년 12월.