1. SORT

SORT statement는 한 개 이상의 파일로부터 레코드를 받아서 기술된 KEY에 따라서 정렬한다.

figure pd sort
SORT Statement Format1
figure pd sort2
SORT Statement Format2

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

  • file-name-1

    • 정렬될 레코드가 포함된 file name으로 SD entry에 기술되어 있는 이름이다.

  • identifier-1

    • 정렬될 레코드가 포함된 data description으로 GROUP 타입이며 하위에 정렬할 데이터를 포함하고 있어야 한다.

  • ASCENDING KEY and DESCENDING KEY phrases

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

      항목 설명

      data-name-1

      SORT statement에서 사용될 KEY 데이터 항목을 기술한다.

      data-name-1은 file-name-1에 대한 레코드에 포함된 데이터 항목이어야 한다. data item이 기술된 순서에 따라 좌측부터 중요도가 높은 키가 된다. 즉 처음 기술된 데이터 항목이 가장 중요한 키가 되고, 그 다음 나오는 데이터 항목이 그 다음 중요한 키가 된다.

      • 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

      file-name-3가 색인 파일(indexed file)을 참조한다면 , data-name-1은 ASCENDING phrase로 기술되어야 하고, data-item은 색인 파일의 major record key와 동일한 위치를 지정해야 한다.

  • DUPLICATES phrase

    • DUPLICATES phrase가 기술되지 않는다면 동일한 key를 가진 레코드들의 순서는 예측할 수 없다.

    • 이 phrase가 지정되면 key가 같은 레코드들에 대해서 정렬된 이후 레코드 순서는 다음과 같다.

      • 입력파일의 레코드 순서와 동일한 순서

      • INPUT PROCEDURE가 있을 때는, RELEASE statement에 사용된 레코드 순서

  • COLLATING SEQUENCE phrase

    • 문법 검사만 이루어진다.

  • USING phrase

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

      항목 설명

      file-name-2,...

      입력 파일들을 정의한다. USING phrase가 사용되면 입력 파일들(file-name-2,...,)의 모든 레코드들이 자동적으로 file-name-1으로 전송된다. 모든 입력 파일들은 data division의 FD entries에 기술되어 있어야 한다.

  • INPUT PROCEDURE phrase

    • INPUT PROCEDURE에는 RELEASE statement이 있어, 한번에 하나의 레코드를 file-name-1이 참조하는 파일로 전송한다.

    • 이외에 다양한 구문(OPEN, READ, CLOSE, ...)을 사용함으로써 입력 레코드를 선택, 복사, 수정할 수 있다. 정렬 작업을 수행하기 전에 입력 레코드를 선택하고 수정하는 procedure 이름을 기술한다.

      항목 설명

      procedure-name-1

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

      procedure-name-2

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

  • GIVING phrase

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

      항목 설명

      file-name-3,...

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

  • OUTPUT PROCEDURE phrase

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

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

      항목 설명

      procedure-name-3

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

      procedure-name-4

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