%表題   MATH1下位数学基本処理ライブラリリファレンスマニュアル
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/11 塩谷雅人
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%         94/01/17 塩谷雅人
%        }
%
%  \Dchapter{VIALIB : 1つの整数型配列への作用素}
\Dchapterhead
\label{vialib}

\section{概要}

  1つの整数型変数に対して1つの整数値がきまるような関数を,
  1つの整数型配列の各要素に対して作用させ,
  結果を整数型配列として得るようなサブルーチンパッケージ.
  以下では総称名を示す.
  たとえば{\tt VIFNA}に対しては, ほかに{\tt VIFNA0}, {\tt VIFNA1}
  という名前のサブルーチンも存在する.
  {\tt VIFNA0}は欠損値処理をおこなわない;
  {\tt VIFNA1}は欠損値処理をおこなう.
  {\tt VIFNA}は内部変数{\tt 'LMISS'}が{\tt .TRUE.}なら欠損値処理をおこなう;
  {\tt .FALSE.}なら欠損値処理をおこなわない(初期値は{\tt .FALSE.}).
  また欠損値処理をおこなうときの欠損値は,
  内部変数{\tt 'IMISS'}が決める(初期値は999).
  (詳しくは\ref{syslib.sub.glpget}節参照)

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

  \begin{tabular}{lp{10cm}}
    {\tt VIFNA(IX,IY,N,JX,JY,IFNA)} &
      {\tt IX}に{\tt IFNA}を作用させて{\tt IY}に代入する. \\
    {\tt VIINC(IX,IY,N,JX,JY,II)} &
      {\tt IX}に{\tt II}を加えて{\tt IY}に代入する. \\
    {\tt VIFCT(IX,IY,N,JX,JY,II)} &
      {\tt IX}に{\tt II}を掛けて{\tt IY}に代入する. \\
    {\tt VICON(IX,IY,N,JX,JY,II)} &
      {\tt II}を{\tt IY}に代入する. \\
    {\tt VISET(IX,IY,N,JX,JY)} &
      {\tt IX}を{\tt IY}に代入する.
  \end{tabular}

  \vspace{1em}
  これらの簡易版として次のようなサブルーチンがある.

  \vspace{1em}
  \begin{tabular}{lp{10cm}}
    {\tt IADD(IX,N,JX,II)} & {\tt IX}に{\tt II}を加える. \\
    {\tt IMLT(IX,N,JX,II)} & {\tt IX}に{\tt II}を掛ける. \\
    {\tt ISET(IX,N,JX,II)} & {\tt IX}に{\tt II}を代入する.
  \end{tabular}

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

  \subsection{VIFNA}
  \label{vialib.sub.vifna}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          整数型配列{\tt IX}に整数型関数{\tt IFNA}を作用させて
          整数型配列{\tt IY}に代入する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL VIFNA(IX,IY,N,JX,JY,IFNA)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
            {\tt IFNA}         & {\tt 関数名} &
               引数が1個である整数型関数名.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item 関数名は, それが外部関数ならEXTERNAL文で,
            組込み関数ならINTRINSIC文で宣言しておかなければならない.
        \end{enumerate}
    \end{enumerate}

  \subsection{VIINC/VIFCT}
  \label{vialib.sub.viinc}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          整数型配列{\tt IX}に整数値{\tt II}を加えて/掛けて
          整数型配列{\tt IY}に代入する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL VIINC(IX,IY,N,JX,JY,II)}\\
          {\tt CALL VIFCT(IX,IY,N,JX,JY,II)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
            {\tt II}           & {\tt (I)}    & 加える/掛ける整数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{VICON}
  \label{vialib.sub.vicon}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          整数値{\tt II}を整数型配列{\tt IY}に代入する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL VICON(IX,IY,N,JX,JY,II)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
            {\tt II}           & {\tt (I)}    & 代入する整数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item {\tt IX}は欠損値処理をおこなうかどうかの判断に用いる.
            つまり欠損値処理をおこなうような設定のとき,
            {\tt IX}の配列要素が欠損値なら,
            代入する整数値は欠損値となる.
        \end{enumerate}
    \end{enumerate}

  \subsection{VISET}
  \label{vialib.sub.viset}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          整数型配列{\tt IX}を整数型配列{\tt IY}に代入する.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL VISET(IX,IY,N,JX,JY)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{IADD/IMLT}
  \label{vialib.sub.iadd}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          {\tt VIINC}/{\tt VIFCT}の簡易版サブルーチン.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL IADD(IX,N,JX,II)}\\
          {\tt CALL IMLT(IX,N,JX,II)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
            {\tt II}           & {\tt (I)}    & 加える/掛ける整数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{ISET}
  \label{vialib.sub.iset}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          {\tt VICON}の簡易版サブルーチン.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt CALL ISET(IX,N,JX,II)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}, {\tt IY} & {\tt (I(*))} & 処理する整数型配列. \\
            {\tt N}            & {\tt (I)}    & 処理する配列要素の個数. \\
            {\tt JX}, {\tt JY} & {\tt (I)}    &
               配列{\tt IX}, {\tt IY}において, 処理する配列要素の間隔. \\
            {\tt II}           & {\tt (I)}    & 代入する整数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}
