自己学習メモインデックス
IBM i (旧AS400)の自己学習メモ01
IBM i(旧AS400)について自己学習していくなかで、備忘録としてメモを残すためにQiita記事を書いています。
他の方の参考になるかはわかりませんが、何かご指摘などある方いらっしゃいましたら、コメントいただけると幸いです。
また、周囲の人が「IBM i」と表現するよりも「AS400」と呼称している人が圧倒的に多いことから、記事内では「AS400」と記載するようにします。
まず第1回目のメモとしては、AS400で登場する基本的な用語について抑えていく。
オブジェクト
AS400内にある開発ソースやコンパイルしたプログラム、DB2 for iのテーブルなどなど、これら全てがオブジェクトである。
私の理解では、Javaのように、全てのオブジェクト型はjava.lang.Object
を暗黙継承しており、その実態は別々の能力(状態や振る舞い)を持ったオブジェクトとなっているように、AS400内にあるソースやプログラム、テーブルなどをオブジェクトとして管理しているような感覚で理解している。
このオブジェクトを特化したタイプとして以降に記載するライブラリやファイルなどが登場してくる。
ライブラリ
複数のオブジェクトをまとめて管理するための空間をライブラリと呼ぶ。
ライブラリには次のようなものがAS400標準で存在している。
- QSYS
- システムライブラリ
- QGPL
- 汎用ライブラリ
- QTEMP
- 一時ライブラリ
- QRPG
- RPG Ⅲ ライブラリ
AS400標準で存在しているライブラリは、「Q」から始まる名称となっているようだ。
なので、独自で利用したいライブラリを作る際は「Q」から始まらない名前にすると良い。
ライブラリは、複数のオブジェクトを管理するための空間であるが、オブジェクトのタイプでも他のライブラリを自身のライブラリに含めることはできない。
ライブラリ以外のオブジェクトを管理することができると理解する。
ジョブ
Windowsでいうところの プロセスと同じ位置付け。
サブシステム
ジョブが動作する空間(作業場所)をサブシステムと呼ぶ。
サブシステムごとにCPUやメモリの割り当てを設定し、他のサブシステムで動作するジョブに影響を出さないように仕組みを構築することが可能。
例えば、重たいバッチジョブが動作中に、一般利用者が操作するシステム(オンラインジョブ)に影響が出ないようにサブシステムを分けておくことができる。
CLコマンド
LinuxのシェルやWindowsのコマンドと同様に、制御言語(Control Language)と呼ばれ、OSに対して動作を命令する際用いられるコマンドを指す。
ファイル
ファイルとは、私の理解ではRDBMSでいうところのテーブルを指す。
ファイルには物理ファイル(P)と論理ファイル(L)が存在する。
- 物理ファイル
- RDBMSでいうところのテーブル
- テーブルの実態
- 論理ファイル
- RDBMSでいうところのビュー(マテリアライズドビュー?)という理解
- 例えば削除フラグ=0のデータだけを抽出できるように定義された論理ファイルなどを作れる。
CCSID
文字コードを一意に識別できるコードをCCSID(コード化文字セットID:Coded Character Set IDentifiers)と呼ぶ。
AS400上で取り扱われる文字コードはEBCDIC(拡張二進化十進コード:Extended Binary Coded Decimal Interchange Code)という特殊な文字コードとなっており、WindowsやLinuxなどのOSでは利用できないものとなっている。
このEBCDICの中でも扱われるCCSIDがいくつか分かれるみたいで、このCCSIDを理解することが非常に重要なポイントだと思われる。
- CCSID 5026/CCSID 5035
- 日本語を取り扱うことができる。
- 5026はCCSID 5035と英小文字/半角カタカナのコードポイントが逆になっている。
- 5026にはコードページが内部的に2つ存在しており、それを切り替えながら利用することができる。
- 英小文字と半角カタカナが同じコードポイントとなっていて、それを切り替えられるという理解で良いか?
- CCSID 1399
- 5035の拡張でJIS第三・第四水準文字も取り扱える文字コードも取り扱うことができる。
シフトイン・シフトアウト
EBCDICの文字コードにおける0E
0F
の文字コードを表し、全角文字の開始位置から終了位置までを囲う文字コード。
このシフトイン・シフトアウトが正しくセットされていないと、EBCDICではダブルバイトの文字を正しく表示できない。