%表題   MATH1下位数学基本処理ライブラリリファレンスマニュアル
%
%履歴
%\Drireki{
%         94/02/13 酒井敏
%         94/05/07 塩谷雅人
%        }
%
%  \Dchapter{OSLIB : システム依存ルーチン}
\Dchapterhead
\label{oslib}

\section{概要}

システムに依存するサブルーチンをまとめたパッケージ.
FORTRAN の規格外ではあるが
多くの処理系でサポートされていると思われる手続きの中で
よく使われそうなもののインターフェイス (サブルーチン名) を揃える
ことがこのパッケージの目的でである.
C で標準的にサポートされているルーチンは,
その規格に準拠している.
なお, このパッケージの中の手続きがサポートされないようなシステムでは,
ダミールーチンとしてもよいものも多い.
くわしくは, 以下の「サブルーチンの説明」を参照されたい. 
\vspace{1em}

MATH1 のパッケージの中でシステム依存関数を含むのは,
この OSLIB だけである.

\section{サブルーチンのリスト}

  \begin{tabular}{lp{10cm}}
    {\tt OSEXEC(CMD)} &
      OS コマンド {\tt CMD} を実行する. \\
    {\tt OSGENV(CENAME,CEVAL)} &
      環境変数{\tt CENAME} の値を {\tt CVAL} として得る. \\
    {\tt OSQARN(N)} &
      コマンドライン引数の数 {\tt N} を得る. \\
    {\tt OSGARG(N,CHAR)} &
      {\tt N} 番目のコマンドライン引数 {\tt CHAR} を得る. \\
    {\tt OSABRT} &
      エラー処理をおこなってプログラムを強制終了する.
  \end{tabular}

\section{サブルーチンの説明}

  \subsection{OSEXEC}
  \label{oslib.sub.osexec}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          OS コマンドを実行する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL OSEXEC(CMD)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CMD}      & {\tt (C*(*))} &
               コマンド名. \\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item このサブルーチンに対応する ANSI C 関数は
		{\tt system} である.
        \end{enumerate}
    \end{enumerate}

  \subsection{OSGENV}
  \label{oslib.sub.osgenv}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          環境変数の値を取得する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL OSGENV(CENAME,CVAL)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CENAME}      & {\tt (C*(*))} &
               環境変数名. \\
            {\tt CVAL}      & {\tt (C*(*))} &
               環境変数の値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item このサブルーチンに対応する ANSI C 関数は
		{\tt getenv} である.
        \end{enumerate}
    \end{enumerate}

  \subsection{OSQARN}
  \label{oslib.sub.osqarn}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          コマンドライン引数の数を返す.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL OSQARN(N)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt N}      & {\tt (I)} &
               コマンドライン引数の数. \\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
	  \item コマンドライン引数が得られないシステムでは,
		0 が返される.
	  \item このサブルーチンに対応する ANSI C 関数はない.
	  \item HITACHIのFORTRANでは、コンパイルオプションで挙動が変わるので注意.
        \end{enumerate}
    \end{enumerate}

  \subsection{OSGARG}
  \label{oslib.sub.osgarg}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          {\tt N} 番目のコマンドライン引数を返す. \\
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL OSGARG(N,CHAR)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt N}      & {\tt (I)} &
               コマンドライン引数の位置. \\
            {\tt CHAR}   & {\tt (C*(*))}    &
               {\tt N} 番目のコマンドライン引数. \\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
	  \item コマンドライン引数が得られないシステムでは,
		常に空白の文字列が返される.
          \item 0 番目のコマンドライン引数は, 通常コマンド名であるが,
		コマンド名が得られないシステムでは空白となる.
	  \item このサブルーチンに対応する ANSI C 関数はない.
	  \item HITACHIのFORTRANでは、コンパイルオプションで挙動が変わるので注意。
        \end{enumerate}
    \end{enumerate}

  \subsection{OSABRT}
  \label{oslib.sub.osabrt}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          システムに依存したエラー処理をおこなって
          プログラムを強制終了する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL OSABRT}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
		なし.
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item たとえば, トレースバック情報などを出力して
            プログラムを強制終了するように実装される.
        \end{enumerate}
    \end{enumerate}
