可変長順編成ファイルのキーの指定範囲が最小レコード長を超えていてもエラーにしません。また,テキストファイルのキーの指定範囲が実レコード長を超えていてもエラーにしません。
実レコード長を超えたキー部分には,NULL値(0x00)を仮定してキーを比較します。
このオプションを指定しない場合,環境変数「EXSORTMGTOPT(64ビット版は「EXSORT64MGTOPT」)」にVKEY_POS_NOCHKオプションが指定されていればPOSNOCHK指定ありと同じ扱いとなります。
- 注意事項
- キー属性に外部10進数または内部10進数を指定した場合に,仮定したNULL値が不正データとして扱われないように,KEYNOCHKオプションの指定を推奨します。
- テキストファイルの場合,入力レコード中の改行文字は,入力データおよびキーとして扱いません。キーの範囲内の改行文字については,NULL値を仮定します。
- CSVファイルの場合は,POSNOCHKの指定に関係なく次のとおりに扱います。
-csvkeyパラメタに指定した入力セルのデータがない場合,ナル文字列(nullキー)として扱います。
-csvkeyパラメタに指定した有効桁数が不足している場合,桁数を調整します。詳細については,「付録D CSVファイル内のナル文字列の扱い(SORT EEの機能)」を参照してください。
POSNOCHKオプションのキーの扱いについて次の表に示します。
POSNOCHK |
キーの扱い |
指定なし |
可変長順編成ファイルのキーの範囲が最小レコード長を超えている場合,KBLS1208-Eメッセージを表示し,exsortコマンドが異常終了します。
テキストファイルのキーの範囲が実レコード長を超えている場合,KBLS1208-Eメッセージを表示し,exsortコマンドが異常終了します。 |
指定あり※1 |
1. キー位置+キー長が実レコード長以下の場合 |
実レコード内のキーが,ソートキー,マージキー,または集約キーとなります。 |
2. キー位置が実レコード長より小さく,キー位置+キー長が実レコード長より大きく最大レコード長以下の場合
3. キー位置が実レコード長より小さく,キー位置+キー長が最大レコード長より大きい場合 |
実レコード内のキーと,実レコードを超えている部分にNULL値を仮定したキーがソートキー,マージキー,または集約キーとなります。 |
4. キー位置が実レコード長より大きく,キー位置+キー長が最大レコード長以下の場合
5. キー位置が最大レコード長より小さく,キー位置+キー長が最大レコード長より大きい場合
6. キー位置が最大レコード長より大きい場合 |
NULL値を仮定したキーが,ソートキー,マージキー,または集約キーとなります。 |
- (凡例)
レコード長※2 |
可変長順編成ファイル |
テキストファイル |
最小レコード長 |
COBOLでファイル作成時にユーザが指定した最小レコード長 |
1 |
実レコード長 |
実際の入力レコード長 |
実際の入力レコード長(改行文字を除く) |
最大レコード長 |
COBOLでファイル作成時にユーザが指定した最大レコード長 |
-inpfile,-splitinpまたは-catinpパラメタのreclenオペランドで指定したレコード長(改行文字を除く)※3 |
- 注※1
- 1.〜6.は,次の図の1.〜6.に対応しています。
![[図データ]](FIGURE/ZX010150.GIF)
- 注※2
- 入力レコード編集(-inpfile,-splitinpまたは-catinpパラメタのreorgオペランド)を指定した場合は,入力レコード編集後のレコード長となります。
- 注※3
- -inpfile,-splitinpまたは-catinpパラメタのreclenオペランドを省略した場合,入力ファイルの改行文字の種別がLFのときは65,535を,CRLFのときは65,534をreclenに仮定します。
- 入力ファイルの改行文字の種別は,-inpfile,-splitinp,または-catinpパラメタのrecsepaオペランド,または環境ファイル「EXS_RECSEPA」で指定します。詳細は,「5.8.7 recsepaオペランド」を参照してください。
- 指定例
- -cmdopt POSNOCHKオプションを指定したソート機能実行の例です。
- 網掛けは,入力レコード(実際のレコード)の範囲を示します。「LF」は,改行文字を示します。
![[図データ]](FIGURE/ZX010151.GIF)
- 【例1】キーの範囲が最小レコード長以下の場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK:DUP:重複レコードの入力順序保存機能を指定
- -key c+0-4:キー位置+0〜3 キー長4バイト 昇順ソート
- -inpfile fileorg=A reclen=8:テキストファイル(最大レコード長8バイト)
![[図データ]](FIGURE/ZX010152.GIF)
- 重複レコードの入力順序保存機能の指定によって,レコード2〜6の順番は変わりません。
- キーの範囲は最小レコード長以下なので,POSNOCHK指定なしと同じソート結果となります。
- 【例2】キー位置が最小レコード長より小さく,キー位置+キー長が最大レコード長以下の場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK:DUP:重複レコードの入力順序保存機能を指定
- -key c+2-4:キー位置+2〜5 キー長4バイト 昇順ソート
- -inpfile fileorg=A reclen=8:テキストファイル(最大レコード長8バイト)
![[図データ]](FIGURE/ZX010153.GIF)
- 重複レコードの入力順序保存機能の指定によって,レコード4〜6の順番は変わりません。
- 【例3】キー位置が最小レコード長より小さく,キー位置+キー長が最大レコード長より大きい場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK
- -key c+2-8:キー位置+2〜9 キー長8バイト 昇順ソート
- -inpfile fileorg=A reclen=8:テキストファイル(最大レコード長8バイト)
![[図データ]](FIGURE/ZX010154.GIF)
- 【例4】キー位置が最小レコード長より大きく,キー位置+キー長が最大レコード長以下の場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK
- -key c+2-6:キー位置+4〜9 キー長6バイト 昇順ソート
- -inpfile fileorg=A:テキストファイル(最大レコード長65,535バイトを仮定)
![[図データ]](FIGURE/ZX010156.GIF)
- 【例5】キー位置が最大レコード長より小さく,キー位置+キー長が最大レコード長より大きい場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK:DUP:重複レコードの入力順序保存機能を指定
- -key c+6-4:キー位置+6〜9 キー長4バイト 昇順ソート
- -inpfile fileorg=A:テキストファイル(最大レコード長65,535バイトを仮定)
![[図データ]](FIGURE/ZX010157.GIF)
- 重複レコードの入力順序保存機能の指定によって,レコード4〜6の順番は変わりません。
- 【例6】キー範囲が最大レコード長より大きい場合
- (exsortコマンド指定内容)
- -cmdopt POSNOCHK:DUP:重複レコードの入力順序保存機能を指定
- -key c+8-4088:キー位置+8〜4,095 キー長4,088バイト 昇順ソート
- -inpfile fileorg=A:テキストファイル(最大レコード長65,535バイトを仮定)
![[図データ]](FIGURE/ZX010158.GIF)
- 重複レコードの入力順序保存機能の指定によって,レコード1〜6の順番は変わりません。
All Rights Reserved. Copyright (C) 2008, 2016, Hitachi, Ltd.