第1章 はじめに

 本章では、月震データベースへアクセスするためのライブラリ群についての基本的な考え方について述べる。

1.1 ライブラリの基本概念

 月震データベースアクセス用ライブラリ(以下MQLIB)は、月震データベース(以下MQDB)へのアクセスを行うために開発された、移植性の高い、階層化されたライブラリである。C及びFORTRANの両方の言語から利用できるようになっており、幅広いプラットフォームから利用することができる。本ライブラリは、次のような3層からなるインタフェース関数、及びユーティリティ関数、FORTRAN用サブルーチンの合計5種類に大別される。

上位インタフェース

 C言語で書かれたユーザプログラムから呼び出され、MQDBデータフォーマットで記述されているファイルへのアクセスを行なう。MQLIBでは、基本的にユーザプログラム側では上位関数インタフェースのみを呼び出せば、データファイルへのアクセスが可能になるように設計されている。現在 3 つの関数が実装されている。

中位インタフェース

 上位インタフェース関数から呼び出され、ヘッダ文字列の操作や、データ部のフォーマット変換、ファイルへの実際のアクセスなどを担当している。現在 46 個の関数が実装されている。

下位インタフェース

 上位及び中位インタフェース関数から呼び出され、データ操作の最も基本的な部分を担当する関数である。中位インタフェース関数との差異は、下位インタフェース関数の実行内容は直接MQLIBとは関係のない基本的な動作に限られている点である。下位インタフェース関数も、ユーザプログラムから呼び出されることは想定していない。現在 9 個の関数が実装されている。

ユーティリティ関数

 ファイルへのアクセスとは直接関係しないが、データやファイル操作に役立つ機能を提供する関数である。現在提供されている機能の例を以下に挙げる。
  • 平均振幅、最大振幅、サンプリング間隔などの計算あるいは判定
  • MQDB用ファイル名の生成
  • 時間の計算
  •  ユーティリティ関数は基本的に、どのインタフェース関数からも呼び出され得るものである。また、ユーザプログラムからも利用できる。現在 14 個の関数が実装されている。

    FORTRAN用サブルーチン

     上記、上位インタフェース関数に相当するサブルーチンで、上位インタフェース関数とほぼ同様の機能をFORTRANから利用できる。FORTRANのプログラムからは、call命令を利用することによって、通常のサブルーチンと同様にして呼び出すことができる。現在 38 個のサブルーチンが実装されている。

    1.2 ライブラリ・バージョン

     MQLIBでは、ライブラリの将来にわたる変更などに対処するため、ライブラリにはバージョン番号が付けられている。この番号は、次の3種類からなる 1 桁の数字の組合せである。
  • リリース番号
  • メジャー番号
  • マイナー番号
  •  ライブラリ・バージョンは、C言語を利用したプログラム内では随時グローバル変数として参照可能である。また、FORTRANのプログラム内では、専用のサブルーチンを利用することによって参照することが可能である(未実装)。これらのライブラリ・バージョンの定義方法は、「月震データベース仕様」に述べられている。

    1.3 エラーへの対処

     MQLIBにおいて発生するエラーは分かりやすい形で処理されると共に、ユーザに迅速に知らされる必要がある。MQLIBではエラーを次の3種類のレベルで分けると共に、エラーメッセージ内にエラーが発生した関数名などを表示することによって、障害原因をいち早く知らせることができるようになっている。
    1. 軽度エラー(NOTICE)
       プログラムの実行に影響を与えないエラー。オペレータの介入は必要とせず、プログラムは中断しない。エラーメッセージも出力されない。
    2. 中度エラー(WARNING)
       プログラムの実行に影響があるエラー。このエラーの発生時には、MQLIB関数はデフォルト動作を行なうか、動作を中断して呼び出されたルーチンへ戻る。但しプログラムの実行は中断されない。エラーメッセージが出力される。
    3. 重度エラー(FATAL)
       以後のプログラムの実行が不可能な重大なエラー。MQLIB関数では、エラーが検出されたときにはエラーメッセージを出力して、直ちにプログラムを終了させる。
     エラーは現在 71 種類定義されている。また、エラーメッセージの出力のレベルは、ユーザが指定することによって調節できる。例えば、WARNINGレベルのエラーであってもエラーメッセージを出力しないようにすることも可能である。
    ▲このページの先頭へ


    目次へ

    次の章へ
    月震ホームページへ
    terakinizers!!トップへ