topics COBOL COBOL이란 무엇인가요?
IBM의 메인프레임 애플리케이션 현대화 솔루션 살펴보기 AI 주제 업데이트 구독
기어, 로봇 팔, 휴대폰 픽토그램이 콜라주된 일러스트

 

게시일:  2024년 4월 19일
기고자: Chrystal R. China, Michael Goodwin

COBOL이란 무엇인가요?

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

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

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

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

라이브 데모 예약하기

IBM watsonx Code Assistant for Z 직접 확인하기

관련 내용

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 구조

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

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

식별 구역

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

COBOL 프로그램에서는 식별 구역 내에 반드시 PROGRAM-ID 단락이 필요합니다. 예:

```

IDENTIFICATION DIVISION.

PROGRAM-ID. 프로그램 이름

AUTHOR. 작성자 이름

DATE-WRITTEN. YYYYMMDD

COMMENT. "프로그램에 대한 간단한 설명"

환경 구역

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

구성 섹션은 이름에서 알 수 있듯이 사용 중인 컴퓨터 및 컴파일러 기능을 포함한 시스템 구성에 대한 정보를 제공합니다. 그러나 컴파일러 도구의 발전으로 최신 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과 새로운 프로그래밍 언어 인터페이스의 도입으로 오늘날의 COBOL 시스템은 다른 언어 및 기술(예: HTML, JSON, XML, 생성형 AI2)과 상호 운용할 수 있습니다. 또한 객체 지향 언어이므로 Amazon Web Services(AWS), Microsoft Azure, IBM® Cloud 같은 가상 및 클라우드 서비스, SQL Database, 기타 최신 DevOps 인프라와 COBOL 앱을 통합하기가 용이합니다.

관련 솔루션
IBM watsonx Code Assistant for Z

IBM® watsonx Code Assistant for Z는 메인프레임 애플리케이션 현대화를 현재 대안 제품보다 저렴한 비용과 적은 위험 부담으로 가속화하도록 구축된 생성형 AI 지원 제품입니다. 이 제품은 애플리케이션 검색 및 분석, 자동화된 코드 리팩토링, COBOL에서 Java로의 변환을 포함하는 엔드투엔드 애플리케이션 개발자 라이프사이클을 제공합니다.

IBM watsonx Code Assistant for Z 살펴보기

IBM watsonx Code Assistant

IBM watsonx Code Assistant는 생성형 AI를 활용해 신뢰성, 보안, 규정 준수 원칙에 중점을 두고 개발 속도를 높여줍니다. 개발자와 IT 운영자는 애플리케이션 현대화 작업을 가속화하고 자동화를 생성해 IT 환경을 빠르게 확장할 수 있습니다.

IBM watsonx Code Assistant 살펴보기

IBM COBOL Compiler Family

IBM COBOL 컴파일러는 IBM® z/OSIBM® AIX 및 Linux® 운영 체제를 지원합니다. 프로그램 개발을 확대하고 기존 애플리케이션을 사용할 수 있는 도구를 얻을 수 있습니다. 오늘날 급변하는 시장에 맞춰 애플리케이션 개발 프로세스를 전략적으로 포지셔닝할 수 있습니다.

IBM COBOL Compiler Family 살펴보기
 리소스 Code Assistant for Z를 통해 메인프레임 앱 현대화에 생성형 AI 도입

AI가 메인프레임 애플리케이션 현대화를 어떻게 가속화하는지 알아보려면 온디맨드 녹화 영상을 시청하세요.

생성형 AI로 애플리케이션 현대화 및 IT 자동화 수준을 한 단계 높이기

하이브리드 클라우드 관리 플랫폼에 생성형 AI 기반 자동화를 통합하면 기업에서 새로운 기술을 활용하고 비용 절감 및 효율성을 실현하고 IT 성능을 개선하고 새로운 서비스를 더 빠르게 제공 및 확장하는 데 어떻게 도움이 되는지 알아보세요.

생성형 AI를 위한 CEO 가이드

생성형 AI 도입의 중요성과 생성형 AI 도입이 현재와 미래의 비즈니스 방식에 가져오는 이점에 대해 알아보세요.

다음 단계 안내

생성형 AI로 메인프레임 애플리케이션 현대화를 가속화할 준비가 되셨나요? 라이브 데모를 예약하거나 IBM 제품 전문가와 상담하여 watsonx Code Assistant for Z가 어떤 기능을 제공하는지 알아보세요.

IBM watsonx Code Assistant for Z 살펴보기 라이브 데모 예약하기
각주

1 The World Depends on 60-Year-Old Code No One Knows Anymore(ibm.com 외부 링크), PC Mag, 2023년 12월 1일

2 Generative AI In Code Generation(ibm.com 외부 링크), Inc42 Media, 2024년 3월 24일