ヒストグラミングおよびディスプレイは、 好みに応じて適当なものを使用すれば良い訳ですが、 ここでは共有メモリにヒストグラム領域を割り当てる簡便さから、 CERN library の HBOOK と PAW を使った例題を示します (cernlib の Linux 用バイナリの入手方法は、 お近くの識者に尋ねてください)。
先ず、ヒストグラミングを行なうプログラムでは、
通常の HLIMIT の代わりに HLIMAP を使います。
PARAMETER (NHOGE=10000)
......
CALL HLIMAP(NHOGE,'sample')
CALL HBOOK1(1,'Hogehoge',100,0.,100.,0.)
......
ソースをコンパイルし、(lib)packlib.a とリンクして実行すると
共有メモリが割り当てられます。
その状況は、
% ipcs -m
------ Shared Memory Segments --------
shmid owner perms bytes nattch status
1408 okamura 666 40000 0
という具合に確認する事ができます。
次に、paw を起動して
PAW > hist/hio/global sample
PAW > cdir
Current Working Directory = //SAMPLE
PAW > ldir
1 1D Hogehoge
.......
等とやれば、
共有メモリ上に定義されたヒストグラムが
//SAMPLE としてアクセスできる事がわかります。
以降の作業は通常の //PAWC に定義されたヒストグラムと同様です。
ところで、HBOOK は割り当てた共有メモリを解放する機能を
持っていないようです。
先程の例ですと (shmid が 1408 でしたので)、
プログラム終了後に
% ipcrm shm 1408
を実行して共有メモリを解放してください
(少なくとも 95a-97a のソースを眺める限りでは、
HFREEM が共有メモリ解放を意図したルーチンと思われるのですが、
肝心の部分 shmctl がコメントアウトされているのです。何故…?
まぁ exposure イベント処理もしてくれないシステムに過度な期待を
抱いても仕方無いって事で)。