OpenVMS
ユーザーズ・マニュアル


前へ 次へ 目次 索引


9.9.1 入力ファイル修飾子

次の入力修飾子は,SORT または MERGE コマンド行に入力ファイル指定を指定した直後に指定しなければなりません。

/FORMAT=(RECORD_SIZE:n,FILE_SIZE:n)

入力ファイルの特性を定義する。レコード・サイズやファイル・サイズを指定または変更できる。入力ファイル修飾子は,Sort または Merge コマンド行の出力ファイル指定の直後に指定します。

Sort では,必要なメモリ量を判断するとき,Sort 操作に使用する作業ファイルのサイズの他に,入力ファイル・サイズの情報が使用される。このファイル・サイズが未知の場合(たとえばディスクや標準 ANSI 磁気テープ上にないファイルをソートしている場合),非常に大きなファイル・サイズが想定される。

次の修飾子の値を指定することができる。

RECORD_SIZE:n 入力ファイルの最長レコード長(LRL)をバイト単位で指定する。指定できる最長のレコード長は,ファイル編成により異なる。

順次 32,767
相対 16,383
索引順次 16,362

  これらの値には,固定長制御付き可変(VFC)形式レコードの制御バイトが含まれる。
FILE_SIZE:n 入力ファイル・サイズをブロック単位で指定する。指定できる最大ファイル・サイズは,4,294,967,295 ブロックになる。


出力ファイルの修飾子としても /FORMAT を使用することができる。詳細は 第 9.9.2 項 を参照。


$ SORT/KEY=(POS:40,SIZ:2,DESC)- 
_$CRA0:YRENDAVG.DAT/FORMAT=(RECORD_SIZE:41,FILE_SIZE:3)- 
_$DESCYRAVG.LIS 


入力ファイル YRENDAVG.DAT は,ディスク・デバイス上にも ANSI 磁気テープ上にもないため,ファイル編成を /FORMAT 修飾子で記述する必要がある。

9.9.2 出力ファイル修飾子

次の出力修飾子は,SORT および MERGE コマンドに対して使用できます。出力ファイル修飾子を使用するには,SORT または MERGE コマンド行の出力ファイル指定の直後に指定します。

/ALLOCATION=n

最適化のための出力ファイルに事前に割り当てておくブロック数に,1 から 4,294,967,295 の値を指定する。出力ファイルの割り当てと入力ファイルの割り当てとが大きく異なることが分かっている場合(たとえば,データのフォーマットを変更する場合やレコードを省略する場合)にこの修飾子を使用する。

/CONTIGUOUS 修飾子が使用されている場合,/ALLOCATION 修飾子が必要になる。


$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT - 
_$ SUMMARY.LIS/ALLOCATION=1000/CONTIGUOUS 


この SORT コマンドにより,出力ファイル SUMMARY.LIS に 1000 の連続ブロックが割り当てられる。

/BUCKET_SIZE=n

最適化のために,相対編成出力ディスク・ファイルや索引順編成出力ディスク・ファイルで使用する,OpenVMS RMS バケット・サイズ(バケットあたりの 512 バイト・ブロック数)を指定する。1 から 32 までの値が指定できる。

出力ファイルの編成が入力ファイルと同じ場合,省略時の値は,最初の入力ファイルのバケット・サイズと同じ値になる。出力ファイルの編成が異なる場合,省略時の値は 1 になる。


$ SORT/KEY=(POS:1,SIZ:80)STATS1.DAT,STATS2.DAT - 
_$ SUMMARY.LIS/BUCKET_SIZE=16/RELATIVE 


この SORT コマンドにより,バケット・サイズが 16 の出力ファイル SUMMARY.LIS が,相対編成で作成される。

/CONTIGUOUS

出力ファイルを連続するディスク・ブロックに格納してアクセス時間を短縮することを要求する。/ALLOCATION 修飾子と一緒に使用しなければならない。省略時の設定では,Sort/Merge は,出力ファイルに連続ディスク・ブロックを割り当てない。


$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT - 
_$ SUMMARY.LIS/ALLOCATION=1000/CONTIGUOUS 


この SORT コマンドにより,出力ファイル SUMMARY.LIS に 1,000 の連続ブロックを割り当てる。

/FORMAT=(type:n[,...])

出力ファイルのレコード形式が入力ファイル形式と異なるときに,出力ファイルのレコード形式(FIXED:n,VARIABLE:n,CONTROLLED:n)を指定する。ファイル・レコードのサイズ(SIZE:n)またはブロック・サイズ(BLOCK_SIZE:n)も指定できる。

Sort 操作がレコード・ソートまたはタグ・ソートの場合,省略時の出力レコードの形式は,最初の入力ファイル・レコードの形式と同じになる。Sort 操作がアドレス・ソートまたは索引ソートの場合,省略時の出力レコードの形式は,固定レコード形式になる。入力ファイルにさまざまなレコード形式がある場合,出力レコード・サイズは,入力ファイルにある最大のレコードを収められるだけの大きさになる。

次の修飾子の値を指定することができる。

BLOCK_SIZE: n ファイルを磁気テープに出力する場合,出力ファイルのブロック・サイズをバイト単位で指定する。入力ファイルがテープ・ファイルの場合,出力ファイルのブロック・サイズは,省略時の設定で入力ファイルと同じサイズになる。それ以外の場合,出力ファイルのブロック・サイズは,省略時の設定でテープがマウントされたときに使用されるサイズになる。
  n の値は,20 から 65,532 のいずれかになる。ただし,弊社の他のシステムとデータ交換を正しく行えるようにするためには,512 バイト以上のブロック・サイズは指定できない。また弊社製以外のシステムと互換性を保つためには,そのブロック・サイズに,2,048 バイト以下の値を指定するようにする。
CONTROLLED: n 出力ファイルに,固定長制御付き可変(VFC)レコードを指定する。
FIXED: n 出力ファイルに固定長レコードを指定する。
SIZE: n VFC(CONTROLLED)レコードの固定部分のサイズを,255 バイト以下のバイト数で指定する。SIZE を指定していない場合,省略時の値として,最初の入力ファイルの固定部分のサイズになる。サイズに 0 を指定した場合,OpenVMSRMSは,省略時の値として,2 バイトになる。
VARIABLE: n 出力ファイルに可変長レコードを指定する。


オプションとして,上記の修飾子の値に,出力レコードの最大レコード・サイズ n を(バイト単位で)指定することができる。指定できる最大レコード・サイズは,ファイル編成によって異なる。

順次ファイル 32,767
相対ファイル 16,383
索引順次ファイル 16,362


これらの最大レコード・サイズの値には,固定長制御付き可変(VFC)形式レコードの制御バイトが含まれる。


$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT SUMMARY.LIS/FORMAT=FIXED:80 


入力ファイル STATS.DAT は,長さ 80 バイトの可変長のレコードで構成される。/FORMAT 修飾子には,固定長レコードで構成される出力ファイル SUMMARY.LIS を指定する。

/INDEXED_SEQUENTIAL

出力ファイルのファイル編成を索引順編成として定義する。出力ファイルはあらかじめ存在し,かつ空でなければならない。また,空のファイルは,/OVERLAY 修飾子を使用してソート済みレコードが上書きされるように指定しなければならない。


$ CREATE/FDL=NEW.FDL AVERAGE.DAT 
$ SORT/KEY=(POS:1,SIZ:80)DATA.DAT,STATS.DAT - 
_$ AVERAGE.DAT/INDEXED_SEQUENTIAL/OVERLAY 


CREATE/FDLコマンドを使用することにより,空のファイルAVERAGE.DATが作成される。SORTコマンドは,出力ファイルが索引順次編成になり,空のファイルAVERAGE.DATに書き出されることを指定する。

/OVERLAY

出力ファイルによってオーバレイされたり,直接書き込まれたりする,既存の空のファイルを指定する。/INDEXED_SEQUENTIAL 修飾子を使用するとき,/OVERLAY 修飾子が必要になる。

入力ファイル編成が索引順次になっている場合,出力ファイルがすでに存在しており,空になっている必要がある。出力ファイルが空でない場合も,/OVERLAY により,そのファイルが上書きされることはない。その代わり,ソートの結果が既存の出力ファイルに追加される。

CREATE/FDL ユーティリティを使用すると,空のデータ・ファイルを作成することができる。空のファイルを作成するときに指定する属性は,その後 Sort の出力ファイルの属性になる。


$ CREATE/FDL=NEW.FDL AVERAGE.DAT 
$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT AVERAGE.DAT/OVERLAY 


FDL ファイル NEW.FDL は,ファイル AVERAGE.DAT に対して特殊な属性を指定する。そのファイルに出力が書き込まれるとき,Sort の出力ファイルは,FDL ファイルによって指定された属性になる。

/RELATIVE

出力ファイルのファイル編成を相対編成として定義する。


$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT SUMMARY.LIS/RELATIVE 


入力ファイル STATS.DAT が相対ファイルでなく,出力ファイル SUMMARY.LIS が相対ファイルになるため,/RELATIVE で,出力ファイル指定を修飾する。

/SEQUENTIAL

出力ファイルのファイル編成を順編成として定義する。アドレス・ソート操作および索引ソート操作の場合,これが省略時の設定になる。レコード・ソート操作およびタグ・ソート操作の省略時の設定は,最初の入力ファイルの編成になる。


$ SORT/KEY=(POS:1,SIZ:80)STATS.DAT SUMMARY.LIS/SEQUENTIAL 


入力ファイル STATS.DAT が順次ファイルでなく,出力ファイル SUMMARY.LIS が順次ファイルになるため,/SEQUENTIAL で,出力ファイル指定を修飾する。

9.9.3 指定ファイル修飾子

次の修飾子は指定ファイルの中で使用されます。(高性能 Sort/Merge ユーティリティでは,指定ファイルはサポートされていません。この機能は,OpenVMS Alpha の将来のリリースでサポートされる予定です。)これらの修飾子は Sort/Merge 指定ファイルの中でのみ有効であることに注意してください。

/CDD_PATH_NAME="cdd-path-name"

CDD/Repository コマンドを使用して,共通データ・ディクショナリ(CDD/Plus)で使用するために定義されたフィールドと属性を識別する。一度フィールドを識別したら,/KEY,/CONDITION,/INCLUDE,/OMIT などの他の指定ファイル修飾子でもそのフィールドを使用できる。

/CDD_PATH_NAME は,/FIELD 文の代わりに使用したり,/FIELD 文と一緒に使用したりすることができる。

"cdd-path-name" の値は,CDD/Plus 内の CDD/Plus レコード定義になる。/CDD_PATH_NAME 修飾子は,システムに CDD/Plus がインストールされている場合のみ使用できる。


/CDD_PATH_NAME="employee" 


/CDD_PATH_NAME 修飾子は,前に CDD/Plus で定義されている employee レコードを識別する。

/[NO]CHECK_SEQUENCE

(MERGE コマンドでのみ適用。)入力ファイル内のレコードの順序をチェックするかどうか指定する。省略時の設定では,レコードの順序をチェックする。


/NOCHECK_SEQUENCE 


/NOCHECK_SEQUENCE 修飾子は,Merge ユーティリティの省略時の動作を指定変更する。

/COLLATING_SEQUENCE=(SEQUENCE=sequence-type
[,MODIFICATION=("char1" operator "char2")] [,IGNORE=文字または文字範囲,...] [,FOLD] [,[NO]TIE_BREAK])

文字キー・フィールドに定義済みの 3 つの照合シーケンス ASCII,EBCDIC,MULTINATIONAL のうちいずれか 1 つ,またはユーザが定義するシーケンスを指定する。定義済みの照合シーケンスまたは前もって定義されたユーザ定義シーケンスを変更できるようにする。

ASCII,EBCDIC,MULTINATIONAL の各照合順序についての詳細は,第 9.3 節 を参照。

次の修飾子の値を指定することができる。

SEQUENCE 指定ファイルは,ASCII,EBCDIC,MULTINATIONALの各照合順序の他,ユーザ定義照合順序もサポートする。これらの照合順序についての詳細は,第 9.3 節 を参照。
MODIFICATION SEQUENCE オプションで指定した照合順序を変更するよう指定する。ASCII,EBCDIC,MULTINATIONAL の各照合順序の他,ユーザ定義照合順序も変更することができる。たとえ順序が省略時の値(ASCII)であっても,変更する順序は,SEQUENCE 修飾子で指定されているものでなければならない。

character 照合順序の文字を指定する。
operator 文字を比較するときに使用する演算子を指定する。大なり(>),小なり(<),等号(=)を指定することができる。

  MODIFICATIONオプションでは,次の種類の変更が認められている。

-- 単一文字または二重文字が,すでに照合値の割り当てられている単一文字と等しくなる("a"="A")。
-- 単一文字または二重文字が,すでに照合値の割り当てられている単一文字の後に照合される("CH">"C")。
-- 単一文字または二重文字が,すでに照合値の割り当てられている単一文字の前に照合される("D"<"A")。
-- 二重文字が,前に定義されている二重文字と等しくなる("CH" ="SH")。
-- 単一文字が,二重文字の順序と等しくなる("C" = "CH")。

IGNORE 最初に比較を行うとき,照合順序内の 1 つまたは複数の文字が無視されるよう指定する。タイブレークが発生するとき,IGNORE 値で指定されている文字についても考慮される。
FOLD すべての小文字に対して,大文字に相当する照合値が定義されるよう指定する。ASCII,EBCDIC,ユーザ定義順序の場合,小文字はaからzになる。
  MULTINATIONAL 順序の小文字には,大文字に相当する照合値がすでにあるため,FOLD を使用する必要はない。
[NO]TIE_BREAK 同等の値を持つ文字でタイブレークの比較を行うとき,数値を使用するかどうか指定する。省略時の場合,MULTINATIONAL 順序ではタイブレークが発生する。NOTIE_BREAK を指定すると,この省略時の設定が指定変更され,最初の比較が行われた後は比較が行われなくなる。
  ASCII,EBCDIC,ユーザ定義順序でタイブレークが発生するようにしたい場合,TIE_BREAK オプションを指定する必要がある。これらの順序で FOLD 値または MODIFICATION 値を指定するとき,TIE_BREAK を使用する。


指定ファイルにおける照合順序の使用例については,第 9.3 節 および 第 9.7 節 を参照。

/CONDITION=(NAME=condition-name,
TEST=(field-name operator test-condition [logical-operator...]))

レコードの相対順序を変更したり,レコード内の特定のフィールドの内容を変更したりするときは,指定ファイルを使用することができる。最初に /CONDITION 修飾子で条件テストを定義する。/CONDITIONAL 修飾子を使用してテストを定義したら,レコードの順序を変更するときに,/KEY 修飾子や /DATA 修飾子でその同じテストを使用することができる。またレコードの内容を変更するときに,/OMIT 修飾子や /INCLUDE 修飾子でこのテストを使用することもできる。

出力ファイルのレコードの順序を変更したい場合,最初に /CONDITION 修飾子で条件名を指定し,その条件に適合するかどうかを試すテストを設定する。次にその形式の /KEY 修飾子で相対順序を指定する。


/KEY=(IF condition-name THEN value ELSE value)


レコードの相対順序を指定するとき,任意の値を使用することができる。

/CONDITION 修飾子を使用すると,出力レコードのフィールドの内容も変更することができる。最初に条件名を指定し,次にその条件に適合するかどうかを試すテストを設定する。その形式の /DATA 修飾子で,フィールドに入れる内容を指定する。


/DATA=(IF condition-name THEN "new-contents" 
       ELSE "new-contents")


次の修飾子の値を指定することができる。

NAME テストする条件の名前を指定する。この条件名は,/CONDITION修飾子で定義した後,/KEY,/DATA,/OMIT,/INCLUDEのそれぞれの修飾子で使用することができる。
TEST 条件テストを指定する。

field-name テストするフィールドの名前を指定する。このフィールド名は,/FIELD修飾子であらかじめ定義しておく必要がある。
operator 条件テストで使用する論理演算子または相対演算子を指定する。使用できる論理演算子には,ANDとORがある。指定できる相対演算子には,次のようなものがある。
EQ = 等しい
NE = 等しくない
GT = より大きい
GE = より大きいか等しい
LT = より小さい
LE = より小さいか等しい
test-condition テストを行う,定数またはフィールド名を指定する。定数は次の形式で指定する。
Decimal_digits(省略時)
%Ddecimal_digits
%Ooctal_digits
%Xhexadecimal_digits
"character"
  基数演算子(%D)の場合,通常指定する必要はない。ただしテスト条件では,フィールド名と同じデータ型が想定される。


指定ファイルにおける/CONDITION修飾子の使用例については,第 9.7 節 を参照。

/DATA=field-name
/DATA=(IF condition THEN "new contents" ELSE "new contents")

出力レコードからフィールドを除去したり,並べ替え直したりするときは,/DATA 修飾子を使用する。出力レコードに表示させたい順序でデータ・フィールドを指定する。/DATA 修飾子では,出力フィールドに指定する,レコード内のすべてのフィールドを識別する必要がある。/DATA修飾子で識別されたフィールドのみが,出力ファイルに出力される。

/CONDITION 修飾子で設定した条件を指定することにより, 出力レコードのフィールドの内容を条件によって変更することができる。/DATA 修飾子のフィールドに設定したい内容を指定する。


/DATA=(IF condition-name THEN "new-contents" ELSE "new-contents")


次のような修飾子の値を設定できる。

field-name レコードのフィールド名を指定する。フィールド名は事前に /FIELD 修飾子で定義されていなければならない。
condition-name 事前に /CONDITION 修飾子で定義されている条件名を指定する。
new-contents レコードをどのように変更するかを指定する。定数値でも /FIELD 修飾子で定義されたフィールド名でも可。


指定ファイル内での /DATA 修飾子の使用例については,第 9.7 節 を参照。


前へ 次へ 目次 索引