Cobol 문법 (4) : MOVE

yoneeki·2023년 8월 9일

cobolGrmr

목록 보기
4/11

집단기억장소

집단기억장소(Group Data Item)는 COBOL에서 데이터 항목들을 그룹화하고 구조화하기 위해 사용되는 개념입니다. 이를 통해 관련 있는 데이터를 하나의 논리적인 단위로 묶어서 처리할 수 있습니다. 집단기억장소는 레코드(Record)나 구조체(Structure)와 유사한 역할을 하며, 데이터 아이템을 보다 구조적으로 조직화하는데 사용됩니다.

집단기억장소는 주로 다음과 같은 상황에서 활용됩니다:

  • 레코드: 여러 개의 데이터 아이템들을 논리적인 그룹으로 묶어 하나의 레코드로 나타낼 때 사용됩니다.
  • 구조체: 여러 데이터 아이템들을 하나의 구조체로 정의하여 코드를 보다 의미있게 구조화할 때 사용됩니다.
    중첩된 데이터: 데이터의 계층 구조를 나타내거나 중첩된 형태로 표현할 때 사용됩니다.

집단기억장소는 01 레벨의 수준 수식자로 시작하며, 그 아래에 하위 레벨의 데이터 아이템들을 포함할 수 있습니다. 각 데이터 아이템은 고유한 이름과 데이터 타입을 가지며, 해당 집단기억장소를 구성하는 일부입니다.

  • 코드 예시
       IDENTIFICATION            DIVISION.
       PROGRAM-ID.               06_GROUP_DATA_ITEM.

       DATA                      DIVISION.
       WORKING-STORAGE           SECTION.
       01  EMPLOYEE-INFO.             *> 집단기억장소 선언
           05  EMPLOYEE-ID       PIC 9(6) VALUE 123456.
           05  FIRST-NAME        PIC X(20) VALUE 'John'.
           05  LAST-NAME         PIC X(20) VALUE 'Doe'.
           05  SALARY            PIC 9(7)V99 VALUE 50000.00.

       PROCEDURE                 DIVISION.
       SiJak-P.
           DISPLAY 'Employee ID: ' EMPLOYEE-ID.
           DISPLAY 'Name: ' FIRST-NAME ' ' LAST-NAME.
           DISPLAY 'Salary: ' SALARY.

           STOP                      RUN.     *> 프로그램 실행 종료

****결과
Employee ID: 123456
Name: John Doe
Salary: 50000.00

독립기억장소

코볼(COBOL)에서 독립기억장소(Independent Data Item)란, 다른 데이터 아이템의 하위 항목으로 나타나지 않고 독립적으로 데이터를 저장하거나 처리하기 위해 사용되는 변수나 데이터 아이템을 의미합니다. 독립기억장소는 보통 그 자체로 하나의 값을 나타내며, 더 큰 데이터 구조의 일부로 사용되지 않는 독립적인 데이터를 다루기 위해 사용됩니다.

독립기억장소는 일반적으로 77 레벨의 수준 수식자로 시작하며, 변수의 이름과 데이터 타입을 정의합니다. 독립기억장소는 다른 레벨의 데이터 아이템을 포함하지 않으며, 해당 변수 자체로 데이터를 표현합니다.

독립기억장소는 주로 아래와 같은 상황에서 활용됩니다:

  • 단일 값 저장: 하나의 값만을 저장하고 처리할 때 사용됩니다.
  • 임시 변수: 임시적으로 데이터를 저장하거나 처리할 때 사용됩니다.
  • 간단한 데이터: 다른 복잡한 데이터 구조 없이 간단한 데이터를 다룰 때 사용됩니다.
  • 코드 예시
       IDENTIFICATION            DIVISION.
       PROGRAM-ID.               06_INDEPENDENT_DATA_ITEM.

       DATA                      DIVISION.
       WORKING-STORAGE           SECTION.
       77  AGE                    PIC 99 VALUE 30.  *> 독립기억장소로 정의된 변수

       PROCEDURE                 DIVISION.
       SiJak-P.
           DISPLAY 'Age: ' AGE.

           ADD 10 TO AGE.  *> 독립기억장소 변수의 값을 변경
           DISPLAY 'New Age: ' AGE.

           STOP                      RUN.     *> 프로그램 실행 종료

*** 결과
Age: 30
New Age: 40

MOVE (자료 수록)

코볼의 MOVE

COBOL에서 MOVE 문은 데이터를 한 위치에서 다른 위치로 복사하는데 사용되는 기본적인 연산입니다. 이를 통해 변수, 상수, 그리고 데이터 아이템을 다른 변수나 아이템에 할당하거나 복사할 수 있습니다. MOVE 문은 데이터의 값 자체를 복사하며, 할당된 메모리 영역이나 아이템의 크기 및 형식은 동일해야 합니다.

기본구문

MOVE source TO target

** source: 값을 복사하고자 하는 원본 데이터입니다.
** target: 값을 복사하여 저장하고자 하는 대상 변수나 데이터 아이템입니다.

코드 예시

       IDENTIFICATION            DIVISION.
       PROGRAM-ID.               06_MOVE_EXAMPLE.

       DATA                      DIVISION.
       WORKING-STORAGE           SECTION.
       01  SOURCE-DATA            PIC X(10) VALUE 'Hello'.
       01  DESTINATION-DATA       PIC X(10).

       PROCEDURE                 DIVISION.
       SiJak-P.
           MOVE SOURCE-DATA TO DESTINATION-DATA.  *> SOURCE-DATA 값을 DESTINATION-DATA로 복사

           DISPLAY 'Source Data: ' SOURCE-DATA.
           DISPLAY 'Destination Data: ' DESTINATION-DATA.

           STOP                      RUN.     *> 프로그램 실행 종료

독립기억장소에 자료를 MOVE

MOVE 자료 TO 기억장소1 기억장소2 ...

  • 자료를 지정한 각 기억장소에 수록한다.
  • 자료는 리터럴 또는 기억장소 (연산식 불가능)
  • 당연히 자료는 기억장소의 PIC 구에 맞추어 수록된다.
77	Num1	PIC	999.99.
77	Num2	PIC +99.9.
77	Char01	PIC	X(7).

[코드 예시]

       IDENTIFICATION            DIVISION.
       PROGRAM-ID.               06_MOVE_DATA_INDEPENDENT.

       DATA                      DIVISION.
       WORKING-STORAGE           SECTION.
       01  SOURCE-DATA            PIC X(10) VALUE 'Hello'.
       01  DESTINATION-ARRAY.
           05  DESTINATION-1      PIC X(10).
           05  DESTINATION-2      PIC X(10).
           05  DESTINATION-3      PIC X(10).

       PROCEDURE                 DIVISION.
       SiJak-P.
           MOVE SOURCE-DATA TO DESTINATION-ARRAY.  
           *> SOURCE-DATA 값을 DESTINATION-ARRAY로 복사

           DISPLAY 'Source Data: ' SOURCE-DATA.
           DISPLAY 'Destination 1: ' DESTINATION-1.
           DISPLAY 'Destination 2: ' DESTINATION-2.
           DISPLAY 'Destination 3: ' DESTINATION-3.

           STOP                      RUN.     
           *> 프로그램 실행 종료

집단기억장소(계층기억장소)에 자료를 MOVE

[코드 예시]

       IDENTIFICATION            DIVISION.
       PROGRAM-ID.               06_MOVE_GROUP_DATA_ITEM.

       DATA                      DIVISION.
       WORKING-STORAGE           SECTION.
       01  PERSONAL-INFO.               *> 집단기억장소 선언
           05  FIRST-NAME        PIC X(20) VALUE 'John'.
           05  LAST-NAME         PIC X(20) VALUE 'Doe'.
           05  AGE               PIC 99 VALUE 30.

       01  COPIED-PERSONAL-INFO.        *> 또 다른 집단기억장소 선언
           05  COPIED-FIRST-NAME  PIC X(20).
           05  COPIED-LAST-NAME   PIC X(20).
           05  COPIED-AGE         PIC 99.

       PROCEDURE                 DIVISION.
       SiJak-P.
           MOVE PERSONAL-INFO TO COPIED-PERSONAL-INFO.  *> PERSONAL-INFO 데이터를 COPIED-PERSONAL-INFO로 복사

           DISPLAY 'Original First Name: ' FIRST-NAME ' Last Name: ' LAST-NAME ' Age: ' AGE.
           DISPLAY 'Copied First Name: ' COPIED-FIRST-NAME ' Last Name: ' COPIED-LAST-NAME ' Age: ' COPIED-AGE.

           STOP                      RUN.     *> 프로그램 실행 종료
profile
Working Abroad ...

0개의 댓글