4.カンパニ
- 
A−VXのセキュリティは機密コードで行いますが、カンパニという特殊なものもあります。 
 
- (1)マルチカンパニ機能
- 
簡単に説明すると、1台のサーバを複数領域に分割して複数台のサーバがあるように見せる機能です。 
 例えば、AAとBBという2つのカンパニを作ると、1台のサーバに(イメージ的に)「AAというサーバ」と「BBというサーバ」の2台のサーバがあるような運用を行うことができます。
  
 業務開始時には、まず最初に端末をサーバに接続すると思います。複数のサーバがあると、どのサーバに接続するか指定するはずです。一方1台のサーバだけならば、接続先のサーバを選択する必要はありません。ところが、このマルチカンパニ機能では、操作開始時にどのカンパニに接続するか指定することになります。要するに1台のサーバを仮想的に複数のサーバに分割したように見せることができるわけです。
 例えばあるカンパニ上で作ったファイルは、別のカンパニ上のオペレータからは見ることができません。あるカンパニ上で作られて、他のカンパニ上のオペレータから見ることのできないファイルのことをローカルファイルといいます。あるカンパニと別のカンパニで同じファイル名で別々のファイルを作ることができます。これは「別のカンパニ=別のサーバ」と考えてみれば、簡単に理解できます。 
 あるサーバ上にあるファイルは、(ネットワーク接続されていなければ)別のサーバ上のオペレータからは見ることができません。別のサーバ上に自分のサーバにあるファイルと同じ名前のファイルががあったとしても、それは自分のサーバのファイルとは別のファイルです。それぞれ自分のサーバのファイルをアクセスすることになります。 
  
 あるカンパニ上で作られたローカルファイルは、別のカンパニで接続しているオペレータからは見ることができません。別のカンパニ上に自分が接続しているカンパニ上にあるローカルファイルと同じ名前のローカルファイルがあったとしても、それは自分が接続しているカンパニ上にあるローカルファイルとは別のファイルです。
 実際に操作した画面で説明すると、以下の画面のように、オペレータコード、パスワードを入力した後に、カンパニコード(部門コード、カンパニID)を入力することになります。つまりここで特定のカンパニ上に「接続」することになります。 
  
 
 
- (2)カンパニコード
- 
カンパニコードは、説明書によってカンパニID、、会社コード、部門コード、カンパニ名、会社標識名、カンパニ標識などと書かれていますが、皆同じ意味です。ここではカンパニコードで統一します。 
 は、1つのカンパニに複数のオペレータを設定することができます。また、1人が複数の部門を兼務できるように、1つのオペレータに複数のカンパニを設定することもできます。
 カンパニコードは英数字2桁、例えば「AA」「BB」「ZZ」「A1」「B9」といった文字列で表されます。しかし機密コードと混同しないよう「英字1字+数字1字」の組み合わせは避けるべきでしょう。 
 各オペレータは1カンパニにつき最大10個の機密コードを設定することができます。 
 オペレータにカンパニなしという設定もでき、このカンパニなしのオペレータが管理者扱いとなります。以降このようなオペレータのことをグローバルオペレータと呼びます。 
 例えば、以下の組織の場合、 
 「A01さん」のカンパニコードは「AA」、「B01さん」のカンパニコードは「BB」、兼務の「A02さん」のカンパニコードは「AA」と「BB」となります。
 逆にカンパニコードの方から見ると、カンパニ「AA」を使用(接続)できるオペレータは「A01さん」「A02さん」「A03さん」「A04さん」の4人、カンパニ「BB」を使用(接続)できるオペレータは「B01さん」「A02さん」の2人ということになります。
   
 なおそもそもシステムでマルチカンパニ機能を使わないという設定もあります。おそらく世間的にはほとんどがマルチカンパニ機能を使わないシステムでしょう。この場合は、全オペレータがカンパニなしの状態になります。 
 前述したように、オペレータ、ファイル、DBの表、IJCCがカンパニコードでカンパニ毎に分けることができます。DBの表に関しては別に説明します。IJCCの説明は今回は割愛します。ここではオペレータとファイルに対してカンパニコードを割当てた場合について説明します。 
 
- (3)オペレータのカンパニコードとファイルのカンパニコードの関係
- 
オペレータとファイルにカンパニコードを割当てた場合、
 - あるカンパニに所属するファイルは、別のカンパニのオペレータから一切見ることができない。
- 同じファイル名でもカンパニが異なれば別のファイルとして扱われる。
- どのカンパニからもアクセス可能なグローバルファイルがある。
- グローバルオペレータは、どのカンパニ上のファイルでもアクセスでき、どのカンパニ上のファイルでも作成したり削除したりできる。
 
 「見る」と書きましたが、この「見る」の意味は、- ユーティリティのボリューム詳細表示、ファイル一覧表示、ファイルの詳細表示で該当のファイルが表示される
- ファイルの移動やコピー、削除、作成ができる
- ファイルの内容を参照したり、書き換えたり、追記したりできる
 
 例えば、あるカンパニ「A」のオペレータが「FILEX」というファイルを作成したとします。このファイルは、別のカンパニ「B」のオペレータは参照することはできません。それどころか存在すら知ることができません。一方カンパニBのオペレータは、同じ「FILEX」というファイル名のファイルを作成することができます。そしてカンパニ「A」の「FILEX」とカンパニ「B」の「FILEX」は全く別のファイルとして扱われます。 グローバルオペレータからは、カンパニ「A」のファイルもカンパニ「B」のファイルも見ることができます。グローバルオペレータは、誰でも参照することができるグローバルファイルを作ることができます。カンパニ「A」のオペレータだけ見ることのできるローカルファイル、カンパニ「B」のオペレータだけが見ることのできるローカルファイルも作ることができます。 
 <例> 
 グローバルオペレータは、カンパニ「AA」領域内のファイルもカンパニ「BB」領域内のファイルも見ることができる。
   
 カンパニ「AA」のオペレータは、カンパニ「AA」領域内の2つのファイルしか見ることができない。
   
 カンパニ「BB」のオペレータは、カンパニ「BB」領域内の2つのファイルしか見ることができない。
   
 
- (4)ファイルのカンパニコード
- 
システムファイル(SYS@〜)にはカンパニコードを付けることはできません。システムファイルは必ず「カンパニなし」つまりグローバルファイルとなります。その他のユーザファイル、つまり順編成ファイルや相対編成ファイルなどのデータを入れるためのファイルやソースユニットライブラリやロードモジュールライブラリ、ジョブストリームライブラリのようなライブラリファイルなど、おおよそ全ての種類のファイルにカンパニコードを付けることができます。 
 システムファイルには1個だけ例外があり、SYS@PML(システムのパラメータライブラリ)だけにはカンパニコードを付けることができます。
 機密コードはファイルの他にプログラム(LM)にも付けることができましたが、カンパニコードはプログラムには付けることはできません。プログラムをカンパニ毎に分けるならば、ユーザのロードモジュールライブラリをカンパニ毎に作り、その中にプログラムを入れることになります。 
 グローバルファイルは、誰からでも見ることができます。一般的には誰でも共通して使用するようなファイルをグローバルファイルにします。 
 カンパニは完全に領域を分けて、複数のサーバがあるように見せる機能です。このため、次のような注意が必要になります。 カンパニ「AA」「BB」「CC」という3つのカンパニがあり、鈴木さんが「AA」「BB」の2つのカンパニコードを持ち、山田さんが「CC」というカンパニコードを持っているとします。 鈴木さんはカンパニコード「AA」でサーバに接続します。そうするとカンパニ「AA」のファイルにアクセスできます。カンパニが「BB」や「CC」のファイルにはアクセスできません。 
 たとえ鈴木さんが「AA」と「BB」のカンパニコードを持っていても、「AA」に接続した場合には、カンパニ「BB」のファイルは見ることができません。「BB」領域のファイルを見るためには、カンパニコード「BB」で接続する必要があります。
 ここの事情は、「カンパニ=サーバ(LANで繋がっていない独立したサーバ)」と考えてみればよく理解できます。サーバ「AA」のハードディスク内にあるファイルは、サーバ「AA」上でのみ見ることができます。サーバ「BB」上のファイルはサーバ「AA」からは見ることはできません。「BB」のサーバのハードディスク内のファイルは、サーバ「BB」から見るしかありません。
 (LANで繋がっていないので)サーバ「AA」のハードディスク内のファイルをサーバ「BB」のハードディスクに直接コピーすることはできません。このような場合にファイルをコピーするならば、例えばフロッピーディスクを介してファイルをコピーしたりするのではないでしょうか。このフロッピーディスクの役を行うのが、「グローバルファイル」の役目の1つになります。
 別々のカンパニコードのオペレータはお互いに相手のローカルファイルはアクセスすることはできません。このため別のカンパニのオペレータにデータを渡すには、グローバルファイルを介して渡さなければなりません。(別の方法として、グローバルオペレータは両方のファイルを見ることができるので、グローバルオペレータがファイルをコピーしてあげるという方法もある。) 
 ただし、グローバルファイルは誰でも見ることができます。鈴木さんがカンパニ「AA」から「BB」にファイルをコピーする為に使ったグローバルファイルは、カンパニコード「CC」で接続した山田さんからも見ることができてしまいます。 
 この辺りは、機密コードと組み合わせるなど、若干の工夫が必要になるかもしれません。
 
- (5)マルチカンパニ機能の使い方
- 
マルチカンパニ機能はもともと計算センターなどでの使用を想定したもののようです。 
 カンパニ同士のデータが完全に独立するので、カンパニ間でデータの受け渡しが無い場合はセキュリティを高めることができます。逆にカンパニ間でデータの受け渡しが必要な場合は、ちょっと使いにくいかもしれません。
 セキュリティ用途にも使用しますが、この機能を利用するとサーバ内を複数の領域に分けることができるので、複数のオフコン(サーバ)を1台にまとめるといったこともできます。 
 マルチカンパニ機能は、完璧にデータをグループ別に分けることができるのでセキュリティを考えると理想的と言えます。しかし実際の運用は例外が多いことが普通である為、そういった例外を許さないマルチカンパニ機能は使い辛い、というのが私の正直な感想です。 
 今回はファイルを例にして説明しましたが、データベースの表やIJCCと呼ばれるものなどもカンパニで分けることができます。 
 
2つのカンパニ「AA」「BB」を持つオペレータ「A02」さんが、操作開始コマンド実行時にカンパニ「AA」を選択したら、その後実行する全てのジョブはカンパニ「AA」上で動きます。もしカンパニ「BB」上でジョブを動かしたいのならば、カンパニ「BB」で操作開始コマンドを実行しなおさなければなりません。複数のカンパニを持っていても、ある時点で使えるカンパニは1つだけです。
例えばA社、B社、C社から業務を委託されても、それぞれの会社用にプログラムを作る必要がない。A社用のカンパニで入れば、アプリケーションが使用するファイルは全てA社用のものになり、B社用のカンパニならファイルは全部B社用のものになる。




