IFS

15. もう一度、IFS

IFS (統合化ファイル環境) にまだ馴染みのない方も多いようなので
もう一度、IFS について学習してみよう。
特にこのシリーズでは IFS と RPG による開発を中心に紹介していく。
IFS を RPG によって開発する手法を学習すれば
IFS は自由に扱うことができて怖くはなくなる。
思い切って IFS の世界にも飛び込んで頂きたい。

IFS とは UNIX や Windows, DOS などとの互換性のある
ストリーム・ファイル・システムのことである。
私たちは IBM i の世界で生きているのでファイルというと
次のようなレコード・レベルのファイルを想像する。

【レコード・レベルのファイル・システムの例】

レコード型式のファイルではファイルの読取りはレコード単位で行われる。
RPG の READ や CHAIN でファイルの内容はレコード単位で
1 つのレコードずつが入力域に読取られて処理される。
従ってどのような莫大なレコード数を保有している大きなファイルであっても
一度に読取るレコードはひとつだけであるので
CPU のメモリには 1個のレコードだけを読取る領域があれば
十分である。
これが IBM i のアーキテクチャーでありビジネス指向のために
レコード単位の処理が実現されている。

何だ当たり前ではないかと思われるかも知れないが次の処理を見て欲しい。

【ストリーム・ファイルのファイル・システムの例】

ストリーム・ファイルのファイル・システムでは最初のレコードから最後のレコードまで
すべてが断続することなく繋がっているのである。
ファイルとして全体が繋がってしまっているのでファイルを読むときには
レコード単位で読取ることはできない。
ファイルを読取るにはファイル全体をまとめて一度に全体を読取る。
従って CPU にはファイル全体を収めるだけのメモリが必要となる。
ところが CPU にはヒープ・メモリというプログラムで扱えるメモリの最大制約があって
それは約 32MB である。
となると 32MB 以上のファイルはプログラムではよみこむことはできない。

UNIX や Windows にはストリーム・ファイルというファイル型式が基本であり
IBM i のようにレコード・レベルの考え方はない。
これは Microsoft や UNIX の開発者がビジネス経験のない莫大な素人集団であったことも
一因しているだろう。

一方では画像ファイルにレコードという考え方はない。
Windows は GUI 中心に開発されてきたので
ストリーム・ファイルが基本となったことも自然であるが
レコード・レベルのファイル・システムは未だに Windows には存在していない。
そこで私たちが IFS で処理の対象とするのはこのストリーム・ファイルである。

レコード・レベルのファイルだけに慣れ親しんできた人たちにとっては
ストリーム・ファイルは理解しにくいものかもしれないが
RPG でも簡単に扱う方法がわかれば親しみやすくなるはずである。

それではこのシリーズでの学習を進めて行きたい。