前へ | 次へ | 目次 | 索引 |
/FIELD=(NAME=SALARY,POSITION:10,DIGITS:8,DECIMAL) |
この /FIELD 修飾子により,レコード内のこのフィールドは SALARY により認識され,フィールドは 10 バイト目から 8 桁の長さ,10 進データであることが指定される。
/INCLUDE=(CONDITION=condition[,KEY=...] [,DATA=...])
条件により,あるフィールドを出力レコードに出力することを指定することができる。 /CONDITION 修飾子により条件を定義したのち, /INCLUDE 修飾子で選択するレコードを定義する。 /INCLUDE 修飾子は,出力ファイルに出力すべき条件を満たすレコードを選択する。
1つのファイルに対して,複数の /INCLUDE,/OMIT 修飾子を指定することができる。それらを指定した順序により,入力レコードがテストされる。最後の /INCLUDE 修飾子のあとで,選択対象とならなかったレコードまたは明示的に削除されたレコードがすべて削除される。
事前に削除されなかったレコード,または条件を指定せずに/INCLUDE 修飾子を指定することにより選択されたレコードを,出力に含めることもできます。
複数の形式のレコードをソートする場合は,ソートするそれぞれの形式のレコード形式に対して /INCLUDE 修飾子を指定する。 /INCLUDE 修飾子で KEY オプションを指定しない場合は, Sort は省略時のキー定義を使用する。 /INCLUDE 修飾子で KEY オプションを指定した場合は,省略時のキー定義は使用されない。 /INCLUDE 修飾子の KEY フィールドの順序により,ソートのための内部キーが作成される。 /INCLUDE 修飾子の DATA フィールドの順番により,出力レコードのフォーマットが決定される。 /INCLUDE 修飾子で1つでも KEY フィールドまたは DATA フィールドを指定した場合は,出力したいすべての KEY フィールドまたは DATA フィールドを指定する必要がある。
以下のような修飾子の値を指定できる。
CONDITION /CONDITION 修飾子で既に定義されている条件名を指定する。 KEY /KEY 修飾子で定義された省略時のレコード・タイプが使用されないので,キー・フィールドを定義する。 DATA /DATA 修飾子で定義された省略時のレコード・タイプが使用されないので,データ・フィールドを定義する。
例
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6) /CONDITION=(NAME=LOCATION, TEST=(ZIP EQ "01863")) /INCLUDE=(CONDITION=LOCATION)
/CONDITION および /INCLUDE 修飾子を使用して,出力ファイルに zip コードが 01863 のレコードを含めることを指定している。
/KEY=field-name
/KEY=(field-name,order) /KEY=([IF condition THEN value ELSE]...) value [,order]
ソート処理で使用するキー・フィールドを指定する。文字データを使用しているレコードすべてをソートする場合は,キー・フィールドを指定する必要はない。そうでない場合は,その優先順位に従って,それぞれのキーを /KEY修飾子で指定する。最大 255 キーでソートすることができる。
3 種類の /KEY 修飾子の使用方法がある。
- キー・フィールド名を指定する。
- キー・フィールド名,およびソート順を指定する。この場合,フィールド名およびソート順は括弧で囲む。
- 条件修飾子のように,出力ファイルのレコード順序を変更する。まず /CONDITION 修飾子で条件名を指定し,この条件を照合するための準備をする。その後,/KEY 修飾子でソートの前後関係を指定する。
/KEY=(IF condition-name THEN value ELSE value)
レコードの相対順序を指定するするためには,任意の値を使用することができる。
以下の修飾子の値を指定できる。
field-name キー・フィールド名を指定する。フィールド名は,事前に/FIELD 修飾子で定義されている。 order ソート順を指定する。ASCENDING は昇順, DESCENDING は降順にソートする。省略時の設定は ASCENDING。 value キーを指定する。値は,定数値でも /FIELD 修飾子で定義されたフィールド名でも可。
例
/FIELD=(NAME=SALARY,POSITION:10,DIGITS:8,DECIMAL) /KEY=(SALARY,DESCENDING)
この /KEY 修飾子は,キーは SALARY で,降順にソートすることを示す。
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6) /CONDITION=(NAME=LOCATION, TEST=(ZIP EQ "01863")) /KEY=(IF LOCATION THEN 1 ELSE 2)
この例では, zip コードが 01863 のすべてのレコードがソート済みの出力ファイルの最初にくる。 /CONDITION で定義された条件 LOCATION は, ZIP フィールドが判定の対象であることを示す。この /KEY 句における 1 と 2 は,この条件を満たすレコードとそうでないレコードの順序を明示する。
/OMIT=(CONDITION=condition-name)/CONDITION 修飾子で定義された条件に基づいて,出力ファイルから除外するレコードを指定する。
はじめに /CONDITION 修飾子で条件を定義しなければならない。ソート処理から除外される条件を満たすレコードを指定するために, /OMIT 修飾子を指定する。省略時の設定では,条件に該当しないすべてのレコードは出力ファイルに出力される。
指定ファイルで,複数の /OMIT と /INCLUDE 修飾子を指定できる。指定の順序により,除外のための入力レコードのチェックの順序が決定される。まだ出力されていないすべてのレコード,または最後の /OMIT 修飾子の後まで除外されていないすべてのレコードが出力される。 /OMIT 修飾子のみを指定することにより,除外されていなかったレコードを無条件に取り除くこともできる。
例
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6) /CONDITION=(NAME=LOCATION, TEST=(ZIP EQ "01863")) /OMIT=(CONDITION=LOCATION)
この /CONDITION と /OMIT 修飾子は, zip コードが 01863 のレコードを出力ファイルに出力しないことを指定している。
/PAD=single-characterレコード形式を変更したり,長さの等しくないレコードを比較する際に,領域を拡張するために埋め込む文字を指定する。省略時の設定では,前バージョンとの互換性を保証するために空(null)を使用する。 1 文字として定義可能な 2 文字("ch" > "c")は,埋めこみ文字として使用できない。文字,10 進数,8 進数,16 進数が使用可。
埋めこみ文字は以下のように指定する。
- 文字に対しては引用符を使用する。たとえば " # "は番号記号を指定する。
- 10 進数には 10 進記号を使用する。たとえば %D35 は 10 進数の 35 を示す。
- 8 進数には 8 進記号を使用する。たとえば %O043 は 8 進数の 043 を示す。
- 16 進数には 16 進記号を使用する。たとえば %X23 は 16 進数の 23 を示す。
例
/PAD="."
この /PAD 修飾子の例では,レコードをピリオドで埋め込むことを指定している。
/PROCESS=type(SORT コマンドにのみ適用される。) ソート・プロセスの方法(レコード,タグ,アドレス,または索引)を指定する。出力されたレコードを再書式化する場合は,アドレス・ソートやインデックス・ソートを使用することはできない。プロセス・タイプには RECORD, TAG, ADDRESS, INDEX のいずれかを指定する。
4 タイプのプロセスの比較については 第 11.8.1 項 を参照。
例
/PROCESS=tag
この /PROCESS 修飾子の例では,タグ・ソート・プロセスを使用することを指定している。
/[NO]STABLE同じキーのレコードがあった場合,出力ファイルに出力する順序を指定する。省略時の設定は /NOSTABLE。
省略時の設定では,同一キーでレコードがソートされた場合,出力ファイルでのレコードの順序は,必ずしも入力ファイルでの順序と同じではない。指定ファイルで /STABLE 修飾子を指定すると,キーの同じレコードがあった場合,入力ファイルの順序で出力ファイルに出力される。複数の入力ファイルがある場合にこの修飾子を使用した場合,キーが同じレコードは, 1 番目の入力ファイルが最初に,次に 2 番目の入力ファイルのレコードが出力される。
例
/STABLE
この /STABLE 修飾子の例では,キーが同じレコードがあった場合,出力ファイルには入力ファイルと同じ順序で整列されることが保証される。
/WORK_FILES=(device[,...])(SORT コマンドにのみ適用される。) 処理速度を向上させるために,異なったディスク構造のデバイスに作業ファイルを割り当てる。作業ファイルで /WORK_FILES 修飾子を使用することにより,コマンドあるいはプログラムレベルでソートを呼び出す前に論理名を割り当てる必要がなくなる。
DCL での修飾子 /WORK_FILES=n と異なり,指定ファイル修飾子 /WORK_FILES=(device[,...]) は,作業ファイルの数ではなく作業ファイルの割り当てを指定する。
作業ファイルについての詳細は, 第 11.8.3 項 を参照。
例
/WORK_FILES=("WRKD$:")
この /WORK_FILES 修飾子の例では,ソートの作業ファイルの 1 つをデバイス WRKD$ を割り当てる。これは,このデバイスがもっとも使用可能スペースが多いからである。
本章では,デバイスを個人的に使用するために割り当てたり,初期化したり,マウントしたりする方法を説明します。以下の情報が含まれています。
補足説明については,以下を参照してください。
作成するファイルや使用するファイルがすべてシステム管理者によって管理されるデバイス上にあれば,テープやディスク・ドライブにアクセスする方法を学習する必要はありません。使用するデバイスを表す論理名をシステム管理者が設定してくれるので,その論理名を使用して,デバイスとの間でファイルを読み書きしたり,コピーしたりすることができます。ほとんどの場合,シテスム管理者は,ユーザをグループに分け,そのグループごとに共用されるデバイスを設定して管理しています。
個人的に使用できるテープやディスク・ドライブがある場合 (たとえば,私用のワークステーションにテープ・ドライブやディスケット・ドライブが直結されている場合) には,そのようなデバイスにアクセスするためのコマンドを知っておいた方がよいでしょう。ディスケットとディスケット・ドライブはディスク・デバイスの一種です。説明の便宜上,本章では,一般的な「ディスク」という用語をすべてのタイプのディスクに当てることにします。
ディスクやテープ装置は,占有して使用する装置ですが,メディアに物理的に触れることができるユーザであれば内容を読めるシステムもあります。ディスクやテープ・メディアは安全な場所に保管し,再利用するときはあらかじめ機密データを消去して,他のユーザが内容を読めないようにしてください。 |
本章では,場合によっては,記憶メディアのことを ボリューム と称しています。記憶メディアという言葉自体はハードウェアの一部分を指しますが,記憶メディアをそこに格納されたデータという意味でとらえても差し支えないでしょう。ディスクまたはテープは,ボリュームと呼ばれるデータの集合です。
他のユーザがアクセスできないデバイス上で作業を行うには,プライベート・ボリュームを作成して,自分専用のデバイスにそれをマウントします。プライベート・ボリュームを設定するには,次の手順に従ってください。
手順 | 操作 |
---|---|
1 | DCL の ALLOCATE コマンドを使用して,デバイス (ディスクまたはテープ) ドライブをユーザのプロセスに割り当てる。 |
2 | DCL の INITIALIZE コマンドを使用して,ディスクまたはテープ・ボリュームをフォーマットしてから,そのボリュームに識別用のラベルを書き込む。 |
3 | DCL の MOUNT コマンドを使用して,ボリュームまたはボリュームに含まれているファイルやデータをプロセスがアクセスできるようにする。 |
個人的に所有されているボリュームからでもファイルを印刷することはできますが,ファイルの印刷が完了するまで,印刷しようとするファイルが格納されているボリュームを,マウント状態にしておかなくてはなりません。ファイルが印刷を完了する前にボリュームをディスマウントしたい場合には,次のようにして,ファイルを直接プリンタで印刷します。
$ COPY MYPHILE.DAT LPA0: |
システム上にあるボリュームについての情報を表示するには, SHOW DEVICES コマンドを使用します。さらに詳しい情報や特定のデバイスについての情報を得るには,次のいずれかの方法で SHOW DEVICES コマンドを入力します。
次の例では, SHOW DEVICES コマンドは使用可能なデバイス DMA1: と MTA1: を表示しています。
$ SHOW DEVICES Device Device Error Volume Free Trans Mnt Name Status Count Label Blocks Count Cnt DMA2: Mounted 0 BACKUP_FILE 4442 7 1 MTA1: Online 0 . . . |
デバイスを割り当てると,そのデバイスはそのユーザ・プロセス専用となります。このデバイスは,DCL コマンドの DEALLOCATE によって明示的にデバイスの占有を解除するまで,またはログアウトするまでプロセスに割り当てられたままになります。
プライベート・ボリュームでファイルやデータを使用するには, DCL コマンドのALLOCATE を使用してディスクやテープ・ドライブを自分のプロセスに割り当てなくてはなりません (ローカル割り当て)。 ALLOCATE コマンドの形式は,次のとおりです。
ALLOCATE デバイス名[:] [論理名] |
要素の意味は次のとおりです。
デバイス名 | ボリュームをロードするドライブを表す。デバイス名には物理名,汎用名,または論理名を指定できる。 |
論理名 | デバイスに関連付ける論理名を指定する。この名前は省略可能である。 |
表 12-1 は,デバイスを割り当てる方法についてまとめたものです。
例 | 説明 |
---|---|
特定の物理デバイスを割り当てる:
$ ALLOCATE DMB2: |
物理デバイス名 (DMB2) を使用して,特定のディスク・ドライブ RK06 または RK07 (コントローラ B のユニット2) の割り当てを要求する。 |
最初の使用可能なデバイスを割り当てる:
$ ALLOCATE DM: DISK |
汎用デバイスコード DM を使用して,最初に使用可能な RK06 または RK07 ディスク・デバイスを割り当てる。また,プロセス論理名テーブルに論理名 DISK を作成して,割り当てたデバイスの名前にそれを割り当てる。 |
論理名によってデバイスを割り当てる:
$ ALLOCATE DRIVE1: D1 |
DRIVE1 (物理デバイス DBA3 に対応する論理名) を割り当て,そのデバイスに新しい論理名 D1 を割り当てる。 |
特定のデバイス・タイプを選択する:
$ ALLOCATE/GENERIC RK07 MYDISK |
/GENERIC 修飾子を使用して,特定タイプのデバイス (RK07 ディスク) を割り当てる。 |
汎用デバイスのリストを指定する:
$ ALLOCATE MF,MT,MS DRIVE |
汎用デバイス名のリストを指定する。最初に使用可能なデバイス (MTA0) だけが割り当てられる。また,論理名 DRIVE を MTA0 に割り当てる。
ALLOCATE コマンドは 1 つのプロセスに 1 つのデバイスだけを割り当てるため,リスト内の各要素が固有の汎用デバイス・タイプを表していても,指定された汎用デバイスのうちの 1 つだけが割り当てられる。 |
前へ | 次へ | 目次 | 索引 |