● 関数リファレンス

代入式の計算

    int __stdcall   StrCalc_substitution(PSTRCALC_PARAM prm,char *str,int btemp,PPARAM_INFO pinf,int *px,int *py);

引数

引数名意味
prmSTRCALC_PARAM 構造体の実体アドレス
str計算対象の代入式を格納したバッファの先頭アドレス
btemp変数が新規登録される場合のテンポラリ属性付加フラグ
pinfPARAM_INFO 構造体の実体アドレス(NULL指定可)
px一、二次元配列の場合、指定された横インデックスを格納する領域のアドレス(NULL指定可)
py二次元配列の場合、指定された縦インデックスを格納する領域のアドレス(NULL指定可)

戻り値

正常終了した時は STATUS_NORMAL を返します。
それ以外は状態コード を返します。

説明

str に格納された代入式を計算します。結果は、左辺に指定された変数に格納されます。また、prm のメンバ ans にも格納されます。

代入式はstr の先頭から順に参照されます。最初に出現したイコール = までを左辺、イコール以降を右辺と見なします。右辺を計算し、正常終了した場合は左辺で指定された変数に結果を格納し、関数を終了します。

    a = 1 + 2 + 3

        計算式規則では、イコールは一致を調べる比較ですが、代入式では
        代入を表す記号として認識されます。
イコールは、括弧の中にあるものや、シングルクォートで括られたものは計算式の一部と見なされます。

左辺に指定した変数が未登録の配列である場合(インデックスを伴う変数表記の場合)は STATUS_SUBST_SYNTAXERROR を返します。
変数が未登録の単一変数の場合、新規に登録してから計算を行います。この時の変数の初期値は 0 です。

    a = a + 1   →   a = 0 + 1 と同じ

新規登録される場合、btemp が 1 の時はテンポラリ属性が付加されます。0 の場合は付加されません。

左辺の変数情報は pinf に PARAM_INFO 構造体の領域を指定する事で、受け取る事ができます。また、左辺が配列変数だった場合のインデックスを pxpy で受け取る事ができます。pinfpxpy は、不要な場合は NULL を指定する事ができます。

pinf->type の値px , py にセットされる内容
PRM_SINGLE*px = 0 , *py = 0
PRM_DIM1parameter (index ) → *px = index , *py = 0
PRM_DIM2parameter (x , y ) → *px = x , *py = y