作られたヒストグラムを保存したり読みだしたりする方法を見てみましょう。 そのためにまずヒストグラムがどのようにファイルに書かれるかを説明します。 ヒストグラムは単純な配列ではありません。配列の寸法や軸の情報、エラーや 溢れなど副次的に多くの情報が保管されなければなりません。そのため、 CERNLIBではZEBRAというメモリー管理の機構が導入されています。いわば構造 のないFORTRANのコモンブロックを構造体のように使うための苦労の作です。 このZEBRAの内容をファイルに保存する、ファイルから読みだす方法も当然用 意されています。ディスク上にZEBRAのデータを落とすフォーマットをRZと呼 びます。ヒストグラムの入出力はこのRZの機能を使います。
これまでに見てきたヒストグラムはメモリー上に置かれますが、実際にはファ イルに書かれたヒストグラムを参照することの方が普通です。メモリーは次に 述べるヒストグラムの操作や演算のための作業場所として使われているのです。 そしてPAWの中ではそれぞれに名前を付けて参照します。そしてそれらはディ レクトリートゥリーで関係付けられます。一番上のディレクトリー、UNIXで/ にあたるのが//です。メモリーは//PAWCという名前で参照されます。ではファ イルはどうなっているのでしょうか。ヒストグラムファイルはFORT RANのLUN 論理機器番号で参照されるファイルとして開かれます。HISTOGRAM/FILEコマン ドが使われます。次の例を見てください。
PAW > HI/FILE 1 test.hist ! N
ファイルをLUNの1に割り当てて開きます。ファイル名はtest.histです。次の! はKUIPの文法にしたがって指定したくないパラメータをスキップしています。 この位置にはLRECL論理レコード長が指定されるのですがデフォルトを使うよ うに!としました。次のNが指定したいものなのですが、新規に作るファイルを 意味します。これを指定しないとtest.histを探しに行って見つからないので エラーになります。この段階でCDIRとやってみます。コマンドZEBRA/RZ/CDIR です。
PAW > CDIR Current Working Directory = //LUN1
現在//LUN1というディレクトリにいると言っています。そもそもどんなディレ クトリがあるのでしょうか
PAW > LDIR // //PAWC COMMON /PAWC/ in memory //LUN1 test.hist
LDIRはZEBRA/RZ/LDIRです。このように現在test.histを対象にしたディレクト リにいることが解かります。既存のヒストグラムをHI/FILEで開いた場合はこ の時点でヒストグラムは見える状態になっています。この例では新規ファイル なのでなにもありませんが。
これでもう入出力が可能です。といっても通常のいわゆるファイル入出力と はちょっと違います。PAWでのヒストグラム入出力は//PAWCとカレントディレ クトリ(//LUN1など)との間で行なわれることになります。ファイルに対応した ディレクトリにあるヒストグラムがそのファイルの内容ということになります。 //PAWCに作ったヒストグラムを保存したいときはですから//LUN1などにコピー しなければなりません。また操作を加えてやるためには//LUN1から//PAWCへコ ピーしてやる必要があるということです。入力はファイルからメモリーつまり //LUN1から//PAWCへHISTOGRAM/HIO/HRINコマンドで、出力はメモリーからファ イルつまり//PAWCから//LUN1へHISTOGRAM/HIO/HROUTコマンドで行なえます。 今の場合まだファイルにはヒストグラムがありません。書き出しましょう。
PAW > HROUT 1001
出力が出来たかどうかLDIRで見ることが出来ます。
PAW > ldir ************** Directory ===> //LUN1 <=== Created 951130/1745 Modified 951130/2156 ===> List of objects HBOOK-ID VARIABLE CYCLE DATE/TIME NDATA 1001 0 1 951130/2156 60 Number of records = 3 Number of megawords = 0 + 2108 words Per cent of directory quota used = 0.009 Per cent of file used = 0.009 Blocking factor = 1.953
ファイルにはサブディレクトリを作ることも出来ます。MDIRで作ります。 CDIRでディレクトリの間を移動できます。
このようにPAWでの操作というのはファイルをいくつか開いてヒストグラム を読み込み、//PAWCを使って作業し、結果をファイルに書き出すということの 繰り返しになります。必要なくなったファイルはCLOSEします。正確には FORTRAN/CLOSEです。
PAW > CLOSE 1