ページのトップに戻る
PowerSORT V6.0  ユーザーズガイド

B.4 英字と数字の連結データに関する留意事項

キーフィールドの操作にNを指定して、英字と数字の連結データを並べ換える場合、以下の注意が必要です。

キーフィールドの指定例1

キーフィールドの操作にNを指定して英字と数字の連結データを並べ換える場合、数字部分の並びは数値の大小だけを比較します。
したがって、以下のようなデータでは出力される順序が特定できません。

0.9ascaN

入力データ

出力結果のケース1

出力結果のケース2

data001

data001

data00001

data2

data00001

data1

data1

data1

data001

data00001

data2

data2

ポイント

数字部分の“1”、“001”、および“00001”は、どれも1という値のため、data1、data001、およびdata00001は全て同一のキーと判断されます。先入力先出力(FIFO)機能オプション(fifo(-option)、または-f)を指定している場合は入力順を保って出力されますが、先入力先出力(FIFO)機能オプション(fifo(-option)、または-f)の指定がない場合は、上記の出力結果のケース1、ケース2にあるように出力順は不定となります。

キーフィールドの指定例2

キーフィールドの指定例1に対して、数字部分の桁数も考慮して並べ換えたい場合は、以下のように指定します。

0.9ascaN0.9ascr

入力データ

出力結果

data001

data1

data2

data001

data1

data00001

data00001

data2

ポイント

以下の順で出力順が決まります。

  1. 第1キー(0.9ascaN)の比較により、data001、data1、およびdata00001とdata2の順序が決まります。第1キーの比較によって大小関係が確定したdata2については、以降の第2キーによる比較は行われません。

  2. data001、data1、およびdata00001は、キーの値が等しいため、第2キー(0.9ascr)で比較します。

  3. 第2キーは文字列として比較し、大きい順に並べます。この例では、dataの次の文字で最初の大小関係が決まります。したがって、data1がdata001、およびdata00001よりも大きい値となり、最初に出力されます。同様にdata001とdata00001ではdata001の1の部分がdata00001では0なので、data001が大きい値と判断され、2番目に出力されます。残ったdata00001と既に順序が決定したdata2が順に出力され、上記の出力結果が得られます。