%表題   MATH1下位基本数学処理ライブラリリファレンスマニュアル
%
%履歴
%\Drireki{
%         90/03/22 塩谷雅人
%         91/09/05 林祥介
%         91/12/11 塩谷雅人
%         92/03/14 塩谷雅人
%         92/04/22 林祥介   (4.1版)
%        }
%
%  \Dchapter{INDXLIB : 配列要素の検索}
\Dchapterhead
\label{indxlib}

\section{概要}

与えられた配列中に, 指定した値と同じ値をもつ配列要素が存在するかどうかを
調べ, その位置や個数を返す関数パッケージ.

\vspace{1em}
ここでいう, 配列における'位置'とは,
それまでに調べた(今調べたものも含む)配列要素の個数のことである.
指定した値と同じ値をもつ配列要素が存在しないとき,
位置の値は0とする.
したがって, 調べる配列要素の個数を{\tt N}とすると,
位置を調べる関数が返す値は, 0以上{\tt N}以下である.

\section{関数のリスト}

  \begin{tabular}{lp{11.5cm}}
    {\tt INDXCF(CX,N,JD,CH)} & {\tt CH} (文字長は1)が
      最初に現れる位置を求める. \\
    {\tt INDXCL(CX,N,JD,CH)} & {\tt CH} (文字長は1)が
      最後に現れる位置を求める. \\
    {\tt INDXNF(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      最初に現れる位置を求める. \\
    {\tt INDXNL(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      最後に現れる位置を求める. \\
    {\tt INDXMF(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      最初に現れる位置を求める. 大文字・小文字を区別しない. \\
    {\tt INDXML(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      最後に現れる位置を求める. 大文字・小文字を区別しない. \\
    {\tt INDXIF(IX,N,JD,II)} & {\tt II}が最初に現れる位置を求める. \\
    {\tt INDXIL(IX,N,JD,II)} & {\tt II}が最後に現れる位置を求める. \\
    {\tt INDXRF(RX,N,JD,RR)} & {\tt RR}が最初に現れる位置を求める. \\
    {\tt INDXRL(RX,N,JD,RR)} & {\tt RR}が最後に現れる位置を求める. \\
    {\tt NINDXC(CX,N,JD,CH)} & {\tt CH} (文字長は1)が
      何個あるかを求める. \\
    {\tt NINDXN(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      何個あるかを求める. \\
    {\tt NINDXM(CX,N,JD,CH)} & {\tt CH} (文字長は1以上)が
      何個あるかを求める. 大文字・小文字を区別しない. \\
    {\tt NINDXI(IX,N,JD,II)} & {\tt II}が何個あるかを求める. \\
    {\tt NINDXR(RX,N,JD,RR)} & {\tt RR}が何個あるかを求める.
  \end{tabular}

\section{関数の説明}

  \subsection{INDXCF/INDXCL}
  \label{indxlib.sub.indxcf}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1)が最初/最後に現れる位置を求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt INDXCF(CX,N,JD,CH)}\\
          {\tt INDXCL(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*1)}   & 指定した文字(文字長は1).\\
            {\tt INDXCF} & {\tt (I)}  & 最初に現れる位置を与える関数値.\\
            {\tt INDXCL} & {\tt (I)}  & 最後に現れる位置を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{INDXNF/INDXNL}
  \label{indxlib.sub.indxnf}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1以上)が最初/最後に現れる位置を求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt INDXNF(CX,N,JD,CH)}\\
          {\tt INDXNL(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*(*))} & 指定した文字(文字長は1以上).\\
            {\tt INDXNF} & {\tt (I)}  & 最初に現れる位置を与える関数値.\\
            {\tt INDXNL} & {\tt (I)}  & 最後に現れる位置を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item {\tt JD}は, 調べる文字の先頭位置の間隔である.
                したがって, {\tt CH}の長さが{\tt JD}より長いとき
                調べる文字の範囲に重なりができる.
          \item {\tt CX}の長さは
                {\tt N}$\times${\tt JD}$+$({\tt LEN(CH)}$-${\tt JD})
                以上でなければならない.
        \end{enumerate}
    \end{enumerate}

  \subsection{INDXMF/INDXML}
  \label{indxlib.sub.indxmf}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1以上)が最初/最後に現れる位置を求める.
          大文字・小文字を区別しないで調べる.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt INDXMF(CX,N,JD,CH)}\\
          {\tt INDXML(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*1)}   & 指定した文字(文字長は1以上).\\
            {\tt INDXMF} & {\tt (I)}  & 最初に現れる位置を与える関数値.\\
            {\tt INDXML} & {\tt (I)}  & 最後に現れる位置を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item {\tt JD}は, 調べる文字の先頭位置の間隔である.
                したがって, {\tt CH}の長さが{\tt JD}より長いとき
                調べる文字の範囲に重なりができる.
          \item {\tt CX}の長さは
                {\tt N}$\times${\tt JD}$+$({\tt LEN(CH)}$-${\tt JD})
                以上でなければならない.
          \item 文字の比較は{\tt LCHREQ} (\ref{syslib.sub.lchreq}節参照)
                によっておこなわれる．
        \end{enumerate}
    \end{enumerate}

  \subsection{INDXIF/INDXIL}
  \label{indxlib.sub.indxif}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した整数値が最初/最後に現れる位置を求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt INDXIF(IX,N,JD,II)}\\
          {\tt INDXIL(IX,N,JD,II)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}  & {\tt (I)}   & 調べる整数型配列.\\
            {\tt N}   & {\tt (I)}   & 調べる配列要素の個数.\\
            {\tt JD}  & {\tt (I)}   & 調べる配列要素の間隔.\\
            {\tt II}  & {\tt (I)}   & 指定した整数値.\\
            {\tt INDXIF} & {\tt (I)}  & 最初に現れる位置を与える関数値.\\
            {\tt INDXIL} & {\tt (I)}  & 最後に現れる位置を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{INDXRF/INDXRL}
  \label{indxlib.sub.indxrf}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した実数値が最初/最後に現れる位置を求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt INDXRF(RX,N,JD,RR)}\\
          {\tt INDXRL(RX,N,JD,RR)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt RX}  & {\tt (R)}   & 調べる実数型配列.\\
            {\tt N}   & {\tt (I)}   & 調べる配列要素の個数.\\
            {\tt JD}  & {\tt (I)}   & 調べる配列要素の間隔.\\
            {\tt RR}  & {\tt (R)}   & 指定した実数値.\\
            {\tt INDXRF} & {\tt (I)}  & 最初に現れる位置を与える関数値.\\
            {\tt INDXRL} & {\tt (I)}  & 最後に現れる位置を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{NINDXC}
  \label{indxlib.sub.nindxc}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1)が何個あるかを求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt NINDXC(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*1)}   & 指定した文字(文字長は1).\\
            {\tt NINDXC} & {\tt (I)}  & 文字の個数を与える関数値.\\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}

  \subsection{NINDXN}
  \label{indxlib.sub.nindxn}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1以上)が何個あるかを求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt NINDXN(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*1)}   & 指定した文字(文字長は1以上).\\
            {\tt NINDXN} & {\tt (I)}  & 文字の個数を与える関数値.\\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item {\tt JD}は, 調べる文字の先頭位置の間隔である.
                したがって, {\tt CH}の長さが{\tt JD}より大きいとき
                調べる文字の範囲に重なりができる.
          \item {\tt CX}の長さは
                {\tt N}$\times${\tt JD}$+$({\tt LEN(CH)}$-${\tt JD})
                以上でなければならない.
        \end{enumerate}
    \end{enumerate}

  \subsection{NINDXM}
  \label{indxlib.sub.nindxm}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した文字(文字長は1以上)が何個あるかを求める.
          大文字・小文字を区別しないで調べる.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt NINDXM(CX,N,JD,CH)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt CX}  & {\tt (C*(*))} & 調べる文字列.\\
            {\tt N}   & {\tt (I)}     & 調べる文字の個数.\\
            {\tt JD}  & {\tt (I)}     & 調べる文字の間隔.\\
            {\tt CH}  & {\tt (C*1)}   & 指定した文字(文字長は1以上).\\
            {\tt NINDXM} & {\tt (I)}  & 文字の個数を与える関数値.\\
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item {\tt JD}は, 調べる文字の先頭位置の間隔である.
                したがって, {\tt CH}の長さが{\tt JD}より大きいとき
                調べる文字の範囲に重なりができる.
          \item {\tt CX}の長さは
                {\tt N}$\times${\tt JD}$+$({\tt LEN(CH)}$-${\tt JD})
                以上でなければならない.
          \item 文字の比較は{\tt LCHREQ} (\ref{syslib.sub.lchreq}節参照)
                によっておこなわれる．
        \end{enumerate}
    \end{enumerate}

  \subsection{NINDXI/NINDXR}
  \label{indxlib.sub.nindxi}

    \begin{enumerate}
      \item 機能
        \begin{quote}
          指定した整数値/実数値が何個あるかを求める.
        \end{quote}
      \item 呼び出し方法
        \begin{quote}
          {\tt NINDXI(IX,N,JD,II)}\\
          {\tt NINDXR(RX,N,JD,RR)}
        \end{quote}
      \item パラメーターの説明
        \begin{quote}
          \begin{tabular}{llp{10cm}}
            {\tt IX}  & {\tt (I)}   & 調べる整数型配列. \\
            {\tt RX}  & {\tt (R)}   & 調べる実数型配列. \\
            {\tt N}   & {\tt (I)}   & 調べる配列要素の個数. \\
            {\tt JD}  & {\tt (I)}   & 調べる配列要素の間隔. \\
            {\tt II}  & {\tt (I)}   & 指定した整数値. \\
            {\tt RR}  & {\tt (R)}   & 指定した実数値. \\
            {\tt NINDXI} & {\tt (I)}  & 整数の個数を与える関数値. \\
            {\tt NINDXR} & {\tt (I)}  & 実数の個数を与える関数値.
          \end{tabular}
        \end{quote}
      \item 備考
        \begin{enumerate}
          \item なし.
        \end{enumerate}
    \end{enumerate}
