ソート基準の指定

SORT ステートメントでは、レコードをソートする基準となるキーを指定します。 そのキーは、ソートされるレコードのレコード記述の中に定義されていなければなりません。 次の例では、SORT-GRID-LOCATION と SORT-SHIFT を SORT ステートメント中で使用する前に、それらを DATA DIVISION で定義していることに注目してください。

 DATA DIVISION.
        
·
·
·
SD SORT-FILE. 01 SORT-RECORD. 05 SORT-KEY. 10 SORT-SHIFT PIC X(1). 10 SORT-GRID-LOCATION PIC X(2). 10 SORT-REPORT PIC X(3). 05 SORT-EXT-RECORD. 10 SORT-EXT-EMPLOYEE-NUM PIC X(6). 10 SORT-EXT-NAME PIC X(30). 10 FILLER PIC X(73). PROCEDURE DIVISION.
·
·
·
SORT SORT-FILE ON ASCENDING KEY SORT-GRID-LOCATION SORT-SHIFT INPUT PROCEDURE 600-SORT3-INPUT OUTPUT PROCEDURE 700-SORT3-OUTPUT.
·
·
·

上記の例のように、複数のキーをソートする場合には、重要性の順で降順にキーを指定してください。 上記の例には、入力プロシージャーと出力プロシージャーの使用方法も示されています。 レコードを処理してからソートしたい場合は入力プロシージャーを使用し、 レコードをソートしてから追加の処理を行いたい場合は出力プロシージャーを使用してください。

ソート・キーの長さに関する制約事項

キーの最大数は制限されていませんが、キーの全長が 2000 バイトを超えてはなりません。

浮動小数点数に関する考慮事項

SORT (および MERGE 操作) のキー・データ項目が浮動小数点数である場合があります。 キーが外部浮動小数点項目の場合は、文字データとして扱われます。 したがって、レコードのソート順序は、使用する照合順序によって決まります。 キーが内部浮動小数点項目の場合は、順序は数値順になります。

日時データ・タイプに関する考慮事項

キー・データ項目は、SORT および MERGE の両操作の場合、日時クラスのデータ項目であることがあります。 一般に、日時クラスの項目は、項目が iSeries DDS の日付、時刻、およびタイム・スタンプの形式と一致している、 日付、時刻、およびタイム・スタンプ項目としてのみソートされます。 その他の場合はすべて、文字データとして処理されます。 文字データとして扱われる日時クラスの項目は、SORT または MERGE の操作中には有効な照合順序を無視します。 ILE COBOL プログラムで日時データ・タイプを使用する際の詳細については 日時データ・タイプを処理するを参照してください。

ソートの場合に日時項目として扱われる DDS データ・タイプを、以下に示します 。

ヌル値に関する考慮事項

キー・データ項目は、SORT および MERGE の両操作の場合、ヌル値を持つことがあります。 データベース・ファイルでは、照合順序の最高値をヌル値が占めます。 ただし、ヌル値を含むヌル可能ファイルの SORT および MERGE を行えるようにするには、 まず、ASSIGN 文節に ALWNULL キーワードを指定して、ファイルをヌル可能と定義する必要があります。

代替照合順序

EBCDIC、ASCII、または他の照合順序に基づいてレコードをソートできます。 デフォルトの照合順序は EBCDIC か、CONFIGURATION SECTION に指定した PROGRAM COLLATING SEQUENCE です。 SORT ステートメントの COLLATING SEQUENCE 句を使用すると、PROGRAM COLLATING SEQUENCE で名前を指定した照合順序を指定変更できます。 その結果、さまざまな照合順序を使用して、プログラム中で複数のソートを行えます。

プログラムが実行時に使用する照合順序を、ILE COBOL ソース・プログラムのコンパイル時に指定することもできます。 使用される照合順序を指定するには、CRTCBLMOD コマンドおよび CRTBNDCBL コマンドの SRTSEQ パラメーターと LANGID パラメーターを使用します。 コンパイル時に照合順序を指定する方法の説明については CRTCBLMOD の国別言語ソート・シーケンスの指定を参照してください。 コンパイル時に指定された照合順序を指定変更するには、OBJECT-COMPUTER 段落に PROGRAM COLLATING SEQUENCE 文節を指定するか、 または SORT ステートメントの COLLATING SEQUENCE 句を使用します。

ASCII ファイルをソートする際には、ASCII 照合順序を要求する必要があります。 この要求を行うには、SORT ステートメントの COLLATING SEQUENCE 英字名 句を使用してください (英字名 は SPECIAL-NAMES 段落で STANDARD-1 として定義されているものです)。 SORT ステートメントまたは SORT ステートメントを指定変更する MERGE ステートメントに COLLATING SEQUENCE 句が指定されていない場合は、OBJECT-COMPUTER 段落の PROGRAM COLLATING SEQUENCE 文節に名前を指定することもできます。