ページの先頭行へ戻る
PowerSORT (64bit) V8.0 ユーザーズガイド
FUJITSU Software

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

キーフィールドの操作に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)機能(環境変数BSORT_FIFO、スタートアップファイルのBSORT_FIFO、bsortexコマンドにおける実行環境オプション(-option)のfifoオペランド、またはbsortコマンドにおける先入力先出力(FIFO)機能オプション(-f))を指定している場合は入力順を保って出力されますが、先入力先出力(FIFO)機能の指定がない場合は、上記の出力結果のケース1、ケース2にあるように出力順は不定となります。

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

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

0.9ascaN,0.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」が順に出力され、上記の出力結果が得られます。