Home news&trend 02 IBM iを知る6つの基本用語

02 IBM iを知る6つの基本用語

by kusui

オブジェクト

「オブジェクト」と聞いて、プログラミング言語のJavaを思い浮かべる人は多いだろう。Javaに限らず、オブジェクト指向プログラミングの世界では、データ(属性)と機能(手続き)をひとかたまりにした実体を「オブジェクト」と呼び、定義されたコンストラクタ(関数・メソッド)を通じて、決められたとおりに、決められた属性をもってしか作成できないようになっている。

一見するとWindowsもオブジェクト指向のように見えるが、名前の一部(拡張子)を識別し、それにより表示されるアイコンや起動されるプログラムを結び付けているにすぎない。そのため、テキストファイルの拡張子を.exeに変えるだけで実行ファイルになる、ということが起きる。このメカニズムは、Windowsでウイルスを実行させる原理の1つである。

IBM iにおけるオブジェクトとは、記憶域に存在する(スペースを占める)名前付きの単位であり、各オブジェクトはそれに対して用意されているコマンド(メソッド)を通してしか操作されない(図表1)。この「オブジェクトの種類を変更できない」というオブジェクト指向の世界では当然のメカニズムによって、「自分で復元した覚えもないようなプログラムがいつのまにか実行されている」ということは絶対に起きない。

図表1 画像をクリックすると拡大します】

IBM iのオブジェクトは、「オブジェクト指向のOS」を具現化する1つの要素であり、使いやすさとセキュリティという相反する要件を実現する仕組みである。これはIBM iの前身であるSystem/38のOS開発時点から、時代を先取りした設計に基づき実現している。

オブジェクトタイプ

オブジェクトにはさまざまな種類があり、これを「オブジェクトタイプ」と呼ぶ。IBM i上でオブジェクトを区別する最小限の項目は、オブジェクト名とオブジェクトタイプである。そして、オブジェクトタイプに応じて特定の機能の誤った使用を防止することにより、保全性を維持している。

たとえば、プログラム・オブジェクトを実行するCALLコマンドにファイル名を指定した場合、そのファイルと同じ名前のプログラムが存在していなければ、そのCALLコマンドは実行されない。複数のオブジェクトに同じ名前を付けることも可能だが、その場合、それらのオブジェクトはそれぞれオブジェクトタイプが異なっているか、またはそれぞれが異なるライブラリーに保管されている必要がある。

ライブラリー

ライブラリーはオブジェクトの一種で、関連するオブジェクトをグループ化し、それらのオブジェクトの使用時に、名前で見つけるためのものである。つまり、複数のオブジェクトを束ねる登録簿のようなものであり、UNIXのディレクトリやWindowsのフォルダの概念に近い(図表2)

図表2 画像をクリックすると拡大します】

なお、システム提供のQSYSライブラリーを除いて、ライブラリーのなかにライブラリーを登録(作成)することはできない。またSQLの世界では、ライブラリーはスキーマやコレクションの役割を代替するものでもある。

ジョブ

ジョブとは、システム上で実行される作業の単位であり、WindowsのタスクやLinuxのプロセスに相当する(図表3)。それぞれのジョブはシステム内で固有の名前をもち、ジョブ名と実行ユーザーとジョブ番号によって一意性が保たれる(ジョブ番号はOSの実行管理機能により決定される)。

図表3 画像をクリックすると拡大します】

システム・ジョブを除くすべてのジョブは、サブシステムというあらかじめ定義された作業空間のなかで実行される。各ジョブはそれぞれ属性を有しており、その属性によってシステム上の作業の実行を制御する方法が提供される。同じような作業を担当するジョブであっても個別に実行優先順位を変更したり、ジョブごとにログの出力先を変更できる。

サブシステム

サブシステムとは、作業が処理されるシステム上の場所であり、システムがワークフローとリソース使用を調整するために用いる事前定義された操作環境を指す(図表3)

各サブシステムは、固有の操作を実行するように事前に定義できる。たとえば、あるサブシステムは対話式ジョブ(いわゆるオンライン業務)だけを処理し、ほかのサブシステムはバッチ・ジョブだけを処理するように設定できる。また、部門や地域あるいは国・言語などの特性に合わせてサブシステムを分割することも可能だ。

サブシステムの稼働時の特性は、サブシステム記述と呼ばれるオブジェクトに定義し、そのサブシステム内で共用するメモリ空間(プール)やジョブの並列度(ジョブ待ち行列)などを必要に応じて設定、変更する。

なお、物理CPUを複数個割り当てている大規模なシステムの場合、特定のサブシステム内で実行されるジョブ群が使用できるCPUの個数の制限もでき(ワークロード・キャッピング)、システム上の負荷が一極に集中して業務の一部が停滞することを抑制し、柔軟なワークロード管理が実現できる。

CLコマンド

CLコマンドとは、オペレーティング・システムであるIBM iとの基本インターフェースである制御言語(Control Language:CL)における単一のステートメントを指す。Windowsのコマンドプロンプトで打ち込む命令や、Linuxのシェル画面を経由する文字ベースの指示などに似ているが、その利便性は比較にならない。

CLコマンド名は、動詞(動作)および動作の対象(対象となるオブジェクト)を識別する名詞または句の組み合わせで、初心者であっても直感的にコマンド名を推定できる形式となっている(図表4)

図表4 画像をクリックすると拡大します】

また、コマンド操作処理が統一されており、PF1キーによるヘルプメッセージ出力や、PF4キーによるプロンプト表示など、学習および習得が非常に容易である。

フィルタや出力オプションなどの利用頻度の高いコマンド処理については、コマンド自体にあらかじめ統合されており、プロンプト表示において追加のパラメータを指定することが可能になっており、パイプ処理やgrepなどでユーザー自身がコマンドに対して工夫を凝らす必要性を極力なくしている。[小林直樹]

related posts