高度な操作

ここでは、Fileshare で使用できる高度な機能について説明します。


注:Mainframe Express では、Fileshare がサポートされるのは Mainframe Express の構成要素で使用する場合のみです。 そのため、Fileshare を使用する書き込みアプリケーションに関する次の情報の一部は、Mainframe Express ユーザには該当しません。


シングルユーザモード

Fileshare の構成によっては、Fileshare をシングルユーザモードで実行できます。 すべてのネットワーク通信はバイパスされ、Fileshare クライアントは、Fileshare サーバモジュールを直接呼び出します。 この操作モードでは、Fileshare サーバが別のプロセスとして動作するわけではありません。

Fileshare をシングルユーザモードで使用すると、次の場合に便利です。

Fileshare をシングルユーザモードで実行するには、FSCOMMS 環境変数を $local に設定します。次に例を示します。

Windows
set FSCOMMS=$local

UNIX
set FSCOMMS="\$local"
export FSCOMMS

Fileshare をシングルユーザモードで実行している場合でも、Fileshare クライアントに対して使用する Fileshare サーバを通知する必要があります。その場合は、プログラムファイル名の一部として Fileshare サーバ名を指定する、または Fileshare クライアントの構成ファイルで Fileshare サーバ名を指定します。

Fileshare サーバは、Fileshare サーバの構成ファイルで通常の方法により構成します。 この構成ファイルには、最低でも Fileshare サーバ名を定義する必要があります。


注:Fileshare サーバは、シングルユーザモードで動作している場合には、画面を制御できません。 すべての画面出力は、現在の Fileshare クライアントディレクトリのファイル fsscreen.lst に送信されます。 プログラムに障害が発生した場合は、このファイルでメッセージを確認してください。


ファイル名マッピング

ファイル名マッピングを使用すると、プログラムの実行時に 1 つのデータファイルに対する入出力要求を別のデータファイルにマップできます。 たとえば、ファイル名マッピングを使用すると、DOS のファイル命名規則を使用するアプリケーションから、UNIX や NetWare のような別のファイル命名規則を使用するオペレーティングシステムで動作中の Fileshare サーバにより制御されるデータファイルへアクセスできます。

ファイル名マッピングを使用するために、Fileshare クライアントの構成を変更する必要はありません。

Fileshare サーバ

ファイル名マッピングを使用可能にするには、データベース参照ファイルで /f オプションと /af (代替ファイル名) オプションを使用します。

/af オプションと /fs (ファイル名の文字列) オプションを同時に指定すると、ファイル名の先頭にある文字列を置換できます。 このオプションは、パス名をマップする場合に非常に便利です。

たとえば、次のように記述します。

fs /d dbase.ref /f old.dat /af new.dat
fs /d dbase.ref /fs c: /af e:

この例では、データベース参照ファイル dbase.ref に対して、次のような指定を行います。

代替ファイル名が指定されている場合には、/fs オプションで指定する文字列の置換は、新しいファイル名に対して適用されます。

/fs オプションで指定する文字列の置換を処理した後で、Fileshare サーバが、新しいファイル名を指定した /f オプションをデータベース参照ファイルで検索することはありません。

/f オプションの後にファイルの完全パスを指定していない場合、または、Fileshare クライアントからファイルの完全パスが渡されていない場合には、Fileshare は、すべてのファイル名を Fileshare サーバの現在のディレクトリに対する相対パスとして処理します。

Fileshare サーバが UNIX オペレーティングシステム以外で実行されている場合は、すべてのファイル名とパスに大文字を使用する必要があります。また、この場合には、すべてのファイル名とパスは、ファイルを完全に一致させるために完全パス名を含むように拡張されます。 ただし、/af オプションを指定したファイル名は、変更されません。

例 1

fs /d dbase.ref /f file1.dat /af c:\data\file2.dat

この例では、データベース参照ファイル dbase.ref に対して、ファイル file1.dat へのアクセスを代替ファイル file2.dat にマップするエントリを指定しています。

例 2

fs /d dbase.ref /f file1.dat /af c:\data\file2.dat
fs /d dbase.ref /fs c: /af e:

この例では、データファイル file1.dat への要求をすべて代替ファイルにリダイレクトし、さらに、文字列の置換を使用して代替ファイルのドライブ名を e: ドライブに変更するエントリを、データベース参照ファイル dbase.ref に対して指定しています。

データとキーの圧縮

Fileshare サーバの構成によっては、データ圧縮とキー圧縮を使用してデータファイルを作成できます。

データファイルのデータ圧縮やキー圧縮を使用するために、Fileshare クライアントの構成を変更する必要はありません。

データとキーの圧縮 - Fileshare サーバ

データファイルのデータ圧縮やキー圧縮を使用可能にするには、データベース参照ファイルで /k オプションを指定します。 /k オプションと d オプションを同時に指定すると、データ圧縮を使用可能にします。/k オプションと i オプションを指定すると、キー圧縮を使用可能にします。

d オプションと i オプションの後に指定する値は、DATACOMPRESS コンパイラ指令と KEYCOMPRESS コンパイラ指令で指定する値と同じになります。

データベース参照ファイルのデータ圧縮とキー圧縮に関する指定は、Fileshare サーバがデータファイルを作成するときのみに有効になります。 これらの指定は、既存のデータファイルには影響しません。 既存のファイルについては、データファイルのヘッダーからデータ圧縮とキー圧縮の情報を取得します。 プログラムやデータベース参照ファイルでの設定は、無視されます。

fs /d dbase.ref /f file1.dat /k d001
fs /d dbase.ref /f file2.dat /k d001i7

この例では、Fileshare サーバが、データファイル file1.dat の作成時にはデータ圧縮を適用し、データファイル file2.dat の作成時にはデータ圧縮とキー圧縮の両方を適用するように指定します。

仮想ファイルハンドラインターフェイス

Fileshare サーバは、Micro Focus のファイルハンドラでなく、ユーザが指定したプログラムへ入出力要求を渡すことができます。ただし、そのプログラムは、ファイルハンドラが使用する呼び出しインターフェイスに準拠している必要があります。

仮想ファイルハンドラインターフェイスを使用するために、Fileshare クライアントの構成を変更する必要はありません。

Fileshare サーバ

仮想ファイルハンドラを指定するには、データベース参照ファイルで /f オプションと /ap (アプリケーションプログラム) オプションを指定します。なお、このデータベース参照ファイルでは、Fileshare サーバが特定のデータファイルに対する入出力要求を渡すプログラムを指定します。

例:

fs /d dbase.ref /f user1.dat /ap myprog

この例では、Fileshare サーバが、データファイル user1.dat への入出力要求をすべてプログラム myprog に渡すように指定するエントリをデータベース参照ファイル dbase.ref に対して追加します。

Windows
ユーザプログラムは .obj 形式である必要があります。また、ユーザプログラムは、Fileshare のメインモジュールである FS.DLL にリンクする必要があります。詳細については、『Windows での Fileshare サーバのリンク』の項を参照してください。

UNIX
ユーザプログラムをコンパイルして中間コード、生成コード、または呼び出し可能な共有オブジェクトを作成する必要があります。ユーザプログラムは、Fileshare プロセスから呼び出し可能でなければなりません。

Fileshare のモニタ

Fileshare サーバの動作中に、F2 キーを押すと、トレースオプションのオン / オフを切り替えることができます。 トレースオプションがオンに設定されていると、Fileshare サーバはファイルアクセス要求が発生するたびに、それをコンソールに表示します。 各行に表示される内容は次のとおりです。


注:トレースオプションを使用すると、性能が低下することがあります。 このオプションは、問題調査の診断補助として使用する場合以外は、指定しないでください。


Fileshare サーバの起動時に /tr f オプションを指定すると、トレースオプションを有効化できます。 この場合は、トレース状況が画面に表示されるのみでなく、fsscreen.lst ファイルにも書き込まれます。 ただし、トレースオプションが有効化されていると、Fileshare サーバの性能に重大な影響を与えます。 トレースオプションが解除されている場合は、情報メッセージのみが画面とファイルに出力されます。 この方法は、Fileshare メッセージの記録をディスクに保存して、その保存を永久的なものにするには便利です。

シングルユーザモードで Fileshare を使用している場合は (『シングルユーザモード』の項を参照)、表示されたトレース情報は、通常 Fileshare サーバのコンソール画面に表示される他の出力と一緒に、Fileshare サーバの現在のディレクトリにある fsscreen.lst ファイルに書き込まれます。

Fileshare マネージャ

Fileshare マネージャ (fsmgr) を使用すると、Fileshare スーパーバイザモードの機能を自動化できます。Fileshare マネージャを使用するには、fsmgr を呼び出す COBOL プログラムを作成します。 Fileshare マネージャを呼び出すと、Fileshare サーバに対し、次の処理を実行するように命令します。


注:この命令の実行時には、Fileshare サーバに接続しているすべての Fileshare クライアントがログオフされ、クライアントが開いたすべてのファイルが閉じられます。


呼び出しインターフェイス

Fileshare マネージャ (fsmgr) プログラムは、次のように COBOL プログラムから呼び出されます。

call "fsmgr" using parameter-block
パラメータ

parameter-block        次のパラメータを含む集団項目
   function-code         pic xx comp-x.
   error-status          pic xx comp-x.
   fileshare-name        pic x(16).
   supervisor-passwd     pic x(20).
   reserved              pic x(24).

起動時の設定
function-code 必要な Fileshare マネージャプログラムの関数

1 = 回復ログファイルをバックアップする
2 = 開かれているデータファイルをすべて閉じる
3 = 接続しているクライアントをすべてログオフする
4 = Fileshare をシャットダウンする
5 = Fileshare をシャットダウンしてから再起動する

fileshare-name 操作の対象となる Fileshare サーバの名前 (Fileshare の起動時に使用した名前)
supervisor-passwd スーパバイザパスワード。 詳細については、『セキュリティ』の章にある『スーパーバイザモード』の項を参照してください。
reserved 将来のために予約されています。 バイナリの 0 を格納する必要があります。
終了時の設定
error-status 呼び出し結果 (成功、失敗など) が格納されます。 error-status の値は、次のとおりです。

説明
0 関数が正常に完了しました。
1 通信エラー。 Fileshare クライアントが、指定された通信プロトコルによりネットワークを通じて Fileshare サーバ fileshare-name に接続できなかったことを示します。 初期接続が確立した後で、関数の実行中にネットワークエラーが発生した場合にも、このエラーが返されます。

fileshare-name が正しく指定され、Fileshare ハンドラリダイレクタモジュール (FHRedir) が正しい通信プロトコルを使用するように構成されているかを確認してください。


2 初期接続中のファイルエラー。

Fileshare へ接続するために、Fileshare マネージャは fsmgr.ctl と呼ばれるファイルを開きます。 このファイルは存在せず、また、Fileshare マネージャが実際にこのファイルを作成することはありません。 このファイルが存在し、ファイルを閉じるときにエラーが発生すると、この状態が返されます。

3 supervisor-password に指定されたパスワードが無効であることを示します。

Fileshare がパスワードファイルを使用して実行されていること、およびsupervisor-password の値がパスワードファイルのスーパーバイザパスワードエントリと一致することを確認してください。 Fileshare パスワードでは、大文字と小文字が区別されるので注意してください。

詳細については、『セキュリティ』の章にある『スーパーバイザモード』の項を参照してください。

4 function-code に無効な値が指定されたことを示します。function-code の値は、1~5 の範囲でなければなりません。
5 Fileshare ログファイルがないことを示します。

回復ログファイルがないまま実行されている Fileshare サーバで、ログファイルのバックアップを試行したことを示します。

6 関数 2、または 3 を完了できなかったことを示します。

すべての Fileshare クライアントをログオフしようとしている間は (関数 3)、ログオフ処理が完了する前に、他のクライアントがログオンする可能性があります。 たとえば、4 つのクライアントがログオンしている場合には、Fileshare マネージャは「logoff client n」要求を 4 回送信する必要があります。 ただし、元の 4 つのクライアントすべてがログオフする前に、新しいクライアントがログオンすると、Fileshare マネージャは、新しいクライアントをログオフするために、「logoff client n」要求を再試行します。 10 回再試行を繰り返しても新しいクライアントがまだログオンしている場合は、エラー 6 を返します。関数 2 (すべてのデータファイルを閉じる関数) を処理するのと同時に、新しいファイルが連続して開かれる場合も、同様の状況が発生することがあります。

10 その他のエラー。

Fileshare マネージャの構成

他の Fileshare クライアントアプリケーションと同様に、Fileshare マネージャは、Fileshare ハンドラリダイレクタモジュール (FHRedir) を使用して Fileshare サーバにアクセスします。また、正しい通信プロトコルを使用するために Fileshare マネージャを構成する必要があります。 詳細については、『構成』の章にある『クライアントの構成』の項を参照してください。

Fileshare マネージャアプリケーションのリンク

ユーザプログラムで Fileshare マネージャを呼び出す場合は、作成した実行可能ファイルがあれば、Fileshare マネージャオブジェクトファイル (Windows では fsmgr.obj、UNIX では fsmgr.o) をリンクすることが必要です。

バイトストリーム入出力呼び出し

Fileshare は、この COBOL システムで使用できるバイトストリーム入出力ルーチンをサポートしています。 ほとんどのルーチンでは、対応する COBOL システム呼び出しと同じパラメータを使用し、同じ効果がありますが、Fileshare を介してリモートファイルにアクセスします。 プログラムで変更する必要があるのは、CBL_ のかわりに FS_ が先頭に付くルーチンを呼び出すようにする点のみです。 呼び出しインターフェイスが、対応する CBL_ ルーチンと完全に同じではないルーチンは、FS_LOCATE_FILE のみです。

Fileshare は、次に示すバイトストリーム入出力ルーチンをサポートしています。

これらのルーチンを使用すると、ローカルファイルのみではなく、リモートの Fileshare サーバにあるファイルへもアクセスできます。 ローカルファイルやリモートファイルを定義するには、通常の方法で Fileshare クライアントを構成してください。


注:


FS_LOCATE_FILE

FS_LOCATE_FILE の機能は、次の点を除き、CBL_LOCATE_FILE と同じです。

FS_SPLIT_FILENAME と FS_JOIN_FILENAME

FS_SPLIT_FILENAME と FS_JOIN_FILENAME の機能は、対応する CBL_ ルーチンの機能と同じです。 また、FS_SPLIT_FILENAME と FS_JOIN_FILENAME を使用すると、Fileshare サーバ名を指定するファイルの名前の先頭に $$server-name というプリフィックスを追加して処理できます。 このようなファイル名を処理すると、プリフィックス $$server-name の文字列が pathname パラメータの一部として含まれます。

Windows NT サーバとしての Fileshare の実行

Windows NT
この Micro Focus 製品のコマンドプロンプトで次のように入力すると、Fileshare サーバを Windows NT サービスとして実行するようにインストールできます。

fsservice -i

インストールの完了後に、次のように入力すると、サービスの状態を表示できます。

fsservice -v

さらに、次のように入力すると、NT サービスとしての Fileshare をアンインストールできます。

fsservice -u

Fileshare を NT サービスとしてインストールすると、次に示す手順で Fileshare をバックグラウンドプロセスとして起動できます。

  1. [コントロール パネル] から [サービス] アイコンを選択します。

  2. 表示されたサービスのリストから [Micro Focus Fileshare サービス] を選択します。

  3. [開始] をクリックします。

Fileshare サービスは、次の手順で停止できます。

  1. [コントロール パネル] から [サービス] アイコンを選択します。

  2. 表示されたサービスのリストから [Micro Focus Fileshare サービス] を選択します。

  3. [停止] をクリックします。

注:


次のように指定すると、Windows NT の起動時に、Fileshare サーバも自動起動できます。

  1. [コントロール パネル] から [サービス] アイコンを選択します。

  2. [Micro Focus Fileshare サービス] をダブルクリックします。

  3. スタートアップの種類として [自動] を選択します。

注:Windows NT の起動時に Fileshare サービスが自動起動するように指定しており、かつ、データファイルのログ処理を有効化している場合は、データベース参照ファイルで Fileshare バックアップディレクトリを指定しておくことをお奨めします。 詳細については、『データベースの完全性』の章にある『データベースの自動バックアップとロールフォワード回復』の項を参照してください。


Fileshare を起動する前に、Fileshare サーバオプションを指定できるように、Fileshare サーバの構成ファイルを作成する必要があります。 Fileshare サーバオプションの詳細については、『構成』の章にあるの『サーバの構成』の項を参照してください。

Fileshare サービスは、Windows のシステムディレクトリ (たとえば c:\winnt\system32) を現在のディレクトリとして継承するので、このディレクトリに Fileshare サーバの構成ファイルを格納する必要があります。 Fileshare で別の作業ディレクトリを使用するには、構成ファイルの最初のエントリとして /wd オプションを記述します。 その結果、Fileshare は、起動時に、作業ディレクトリを指定したディレクトリへ変更し、この作業ディレクトリに対する相対パスのみをもつファイル (たとえば、データベース参照ファイル) にアクセスします。

Fileshare は、バックグラウンドプロセスとして動作するため、生成したすべてのメッセージは、現在の作業ディレクトリの fsscreen.lst ファイルに書き込まれます。 このファイルの内容を確認して、問題を診断してください。

構成ファイルの例

次に Fileshare サーバの構成ファイル例を示します。

/wd d:\fsdir
/s server1
/d dbase.ref

最初の行では、Fileshare サーバの現在のディレクトリとして、ドライブ d: のディレクトリ fsdir を指定します。 完全パス名をもたないデータファイルは、すべてこのディレクトリに対する相対パスにより検索されます。 2 行目では、Fileshare サーバが server1 としてネットワークに名前を登録することを指定します。3 行目では、Fileshare でデータベース参照ファイル dbase.ref を使用することを指定します。 この名前は、完全パスではないため、Fileshare の現在のディレクトリである d:\fsdir で検索されます。

Windows での Fileshare サーバのリンク

Windows
仮想ファイルハンドラインターフェイスや Windows 上のユーザ独自のセキュリティモジュールを使用する場合は、fs.dll ファイルを再作成する必要があります。 次のようなコマンド行を入力すると、このファイルを再作成できます。

CBLLINK -ofs.dll -d -RE,2.0 -Mfscmd fscmd.obj fsserver.obj
   fhxscomp.obj fsseclog.obj fsinstpw.obj fsinst.obj fsrcvr.obj
   fspthnam.obj fssecopn.obj fsossec.obj cbldc001.obj _codeset.obj
   mfini.obj

必要に応じてオブジェクトモジュールを追加するか、セキュリティモジュールを置き換えて、目的に合うように上記のコマンド行を変更してください。

また、Fileshare を Windows NT サービスとして実行している場合には、次のようなコマンドを使用して、fsservice.exe モジュールを再リンクする必要があります。

cbllink -ofsservice.exe -Rm,+2.0 fssrvice.obj  CblNTService_Handler.obj
   CblNTService_SetStatus.obj CblNTService_ServiceRoutine.obj 
   servserv.obj fscmd.obj fsserver.obj fhxscomp.obj fsseclog.obj 
   fsinstpw.obj fsinst.obj fsrcvr.obj fspthnam.obj fssecopn.obj
   fsossec.obj cbldc001.obj _codeset.obj mfini.obj

さらに、古いバージョンの fsservice をアンインストールし、新しいバージョンをインストールします。

性能に関する考察

Fileshare を使用すると、ネットワーク全体で送信される COBOL の入出力要求数を減らすことができます。特に、次のようなある種類のデータファイルアクセスに対しては大きな効果があります。 Fileshare は、次の点でリモートデータに対するアクセス速度を改善できます。

その結果、速度の向上の度合いがアプリケーションによって非常に異なります。同じデータファイルへ同時にアクセスする Fileshare クライアントが増えるほど、Fileshare による速度の向上がはっきり実感できます。

UNIX
UNIX では、Fileshare サーバと Fileshare クライアントを同じマシンで実行する場合は、CCINAMPU CCI プロトコルを使用することをお奨めします。このような場合には、CCITCP プロトコルよりも処理が向上します。

UNIX での Fileshare の性能

複数のリモート COBOL アプリケーションがネットワークを通じて同時に共有データファイルにアクセスする場合には、Fileshare を使用することにより性能が向上しますが、COBOL データがアプリケーションと同じマシンに存在する場合には性能は向上しません。 このような構成では、標準呼び出し可能ファイルハンドラではなく Fileshare を使用することによって、性能上のオーバヘッドが発生します。

UNIX マシンはリモートデータサーバとして使用できますが、通常は、データの存在するマシンでアプリケーションを実行することはありません。 たとえば、ネットワークを介して、複数のユーザがあるマシンにログインし、同じデータを共有する複数のアプリケーションをそのマシンで実行するとします。 このような構成の場合は、Fileshare 使用のために性能上のオーバヘッドが発生します。そのため、標準呼び出し可能ファイルハンドラを使用した場合よりも処理が遅くなります。

Fileshare での大容量ファイルのサポート

デフォルトで Fileshare がサポートする最大のファイルサイズは 4 GB です。 オペレーティングシステムが大容量ファイルをサポートする場合は、Fileshare で使用するファイルハンドラで、デフォルトの最大容量である 4 GB を超える順、相対、および IDXFORMAT(8) 索引ファイルを使用できるように構成できます。

以前のリリースでは、このファイルサイズの制限を解決する暫定手段として、ファイルのストライプ化が導入されていました。 ファイルのストライプ化では、単一データファイルをディスク上の複数の物理ファイル (ストライプ) に格納するように指定できます。

後述するように、Fileshare でのストライプ化の指定が複雑なため、大容量ファイルはストライプ化しないで、ファイルハンドラで標準の大容量ファイルサポートを使用するように構成することをお奨めします。

Net Express を使用する場合は、マニュアル『ファイル処理』の『ファイルハンドラの構成』の章を参照してください。

Fileshare で大容量ファイルサポートを構成する場合は、次の点を考慮してください。

オペレーティングシステムが大容量ファイルをサポートしない場合に Fileshare でファイルのストライプ化を構成する方法を次に説明します。