1. MERGE

MERGE statement는 정렬된 파일들을 병합한다. 각 파일의 레코들은 KEY에 의해 정렬이 되어 있어야 한다.

figure pd merge
MERGE Statement Format

다음은 statement의 각 설정 항목에 대한 설명이다.

  • file-name-1

    • SD entry에 기술된 이름이다.

  • ASCENDING KEY and DESCENDING KEY phrases

    • merge key가 오름차순인지 내림차순인지를 지정한다.

      항목 설명

      data-name-1

      MERGE statement에서 사용될 KEY 데이터 항목을 기술한다. data-name-1은 file-name-1에 대한 레코드에 포함된 데이터 항목이어야 한다.

      데이터 항목이 기술된 순서에 따라 왼쪽부터 중요도가 높은 키가 된다. 즉, 처음 기술된 데이터 항목이 가장 중요한 KEY가 되고, 그 다음 나오는 데이터 항목이 그 다음 중요한 키가 된다.

      • KEY 데이터 항목은 각 입력 파일에 대해서 물리적으로 같은 위치에 있어야 하고 data format도 같아야 한다. data-name이 같을 필요는 없다.

      • file-name-1이 하나 이상의 레코드가 기술되어 있다면 KEY 데이터 항목은 그중 하나의 레코드에 기술될 필요가 있다.

      • KEY 데이터 항목은 OCCURS clause를 포함할 수 없고 OCCURS를 포함한 item에 종속될 수 없다.

      • KEY 데이터 항목은 qualified될 수 있다.

        KEY 데이터 항목은 다음 데이터 범주 중 하나가 된다.

        • Alphabetic, alphanumeric, alphanumeric-edited

        • Numeric

        • Numeric-edited (with usage DISPLAY)

        • Internal floating-point or display floating-point

  • COLLATING SEQUENCE phrase

    • MERGE statement 동작에서 key data 항목에 대한 alphanumeric 비교에 사용되는 조합 순서를 지정한다.

      항목 설명

      alphabet-name-1

      반드시 SPECIAL-NAMES paragraph 의 ALPHABET clause에 정의되어 있어야 한다.

  • USING phrase

    • 입력 파일들을 기술한다.

      항목 설명

      file-name-2,...

      입력 파일들을 정의한다. USING phrase가 사용되면 입력 파일들(file-name-2,...,)의 모든 레코드들이 자동적으로 file-name-1으로 전송된다.

      모든 입력 파일들은 Data division의 FD entries에 기술되어 있어야 한다.

  • GIVING phrase

    • 출력 파일들을 기술한다.

      항목 설명

      file-name-3,...

      출력 파일을 정의한다.

      GIVING phrase가 기술되면 모든 정렬된 레코드들은 자동적으로 출력 파일로 전송된다. 모든 출력 파일들은 Data division의 FD entries에 기술되어 있어야 한다.

  • OUTPUT PROCEDURE phrase

    • 병합 작업을 수행한 후 출력 레코드를 선택하고 수정하는 procedure 이름을 기술한다.

      항목 설명

      procedure-name-1

      OUTPUT PROCEDURE의 첫 번째(또는 유일한) section이나 paragraph를 기술한다.

      procedure-name-2

      OUTPUT PROCEDURE의 마지막 section이나 paragraph를 기술한다.

    • OUTPUT PROCEDURE에는 RETURN statement가 있어 한 번에 하나의 레코드를 file-name-1이 참조하는 파일로부터 전송받는다. 이외에 다양한 구문(OPEN, WRITE, CLOSE, ...)을 사용함으로써 출력 레코드를 선택, 복사, 수정할 수 있다.

MERGE statement가 실행되면 file-name2, file-name3,...에 포함된 모든 레코드들이 기술된 KEY에 따라서 병합된다.