PAW/HBOOK による例題

ヒストグラミングおよびディスプレイは、 好みに応じて適当なものを使用すれば良い訳ですが、 ここでは共有メモリにヒストグラム領域を割り当てる簡便さから、 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 は割り当てた共有メモリを解放する機能を 持っていないようです。 先程の例ですと (shmid1408 でしたので)、 プログラム終了後に

      % ipcrm shm 1408
を実行して共有メモリを解放してください (少なくとも 95a-97a のソースを眺める限りでは、 HFREEM が共有メモリ解放を意図したルーチンと思われるのですが、 肝心の部分 shmctl がコメントアウトされているのです。何故…?)。

戻る