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


前へ 次へ 目次 索引


11.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で,出力ファイル指定を修飾する。

11.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="customer" 


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

/[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の各照合順序についての詳細は, 第 11.3 節 を参照。
次の修飾子の値を指定することができる。

SEQUENCE 指定ファイルは,ASCII,EBCDIC,MULTINATIONALの各照合順序の他,ユーザ定義照合順序もサポートする。これらの照合順序についての詳細は, 第 11.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を使用する。



指定ファイルにおける照合順序の使用例については, 第 11.3 節 および 第 11.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修飾子の使用例については, 第 11.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 修飾子の使用例については, 第 11.7 節 を参照。

/FIELD=(NAME=field-name,POSITION:n,SIZE:N,[DIGITS:n,]data-type /FIELD=(NAME=field-name,VALUE:n,SIZE:N,[DIGITS:n,]data-type)

出力レコードのフィールドの順序を変更したりフォーマットを変更する場合は,入力ファイルのフィールドを定義する。これらのフィールドには,キー・フィールド,比較されるフィールド,出力ファイルに転送されるフィールドがある。それぞれのフィールドは,その名前,レコード上での位置とサイズ,データ・タイプを指定することにより識別する。
フィールド名は一意でなければならない。また,フィールド定義の数は 255 以内でなければいけない。
また, /FIELD 修飾子を使用して定数値を定義し, /CONDITION, /DATA,および/KEY 文で使用するデータ・タイプの値に割り当てることができる。
次のような修飾子の値を指定できる。

NAME フィールド名を指定する。フィールド名にはスペースを含めることはできない。英字で始まり, 31 文字以内でなければいけない。
POSITION: n レコード内でのこのフィールドの位置を指定する。
VALUE: n /CONDITION, /DATA, /KEY 文で使用される定数フィールドに値を割り当てる。 VALUE: n を指定した場合, /POSITION: n を指定してはいけない。これは,このフィールドは定数フィールドであり,入力レコードのフィールドではないからである。
SIZE: n 文字あるいはバイナリ・データを含むフィールドのサイズをバイト数で指定する。データ・タイプにより,以下のように指定可能なサイズが決まっている。

-- 文字データ---32,767 以内
-- バイナリ・データ---1, 2, 4, 8, 16
-- 浮動小数点データ---サイズは指定しない

DIGITS: n 10 進データを含むフィールドのサイズを指定する。ここで指定するサイズは 31 以内でなければいけない。 DIGITS:n は 10 進データを含んだフィールドを表現するときのみ使用する。
data-type データ・タイプを指定する。文字型の場合は指定する必要はない。省略時の設定では,Sort は文字データ・タイプを想定する。 Sort/Merge により認識されるデータのタイプについては 第 11.2.1 項 を参照。


前へ 次へ 目次 索引