● 関数リファレンス
コールバック関数USFUNC
int __stdcall function(PSTRCALC_PARAM prm,char *arg,int len,void *param)
{
return 状態コード;
}
引数
説明
BASICPARAM 構造体のメンバ pus に指定するコールバック関数です。関数ポインタの型は sc39.h 内で定義されています。
typedef int (__stdcall *USFUNC)(PSTRCALC_PARAM ,char *,int ,void *);
このコールバック関数は、ユーザステートメントとして BASIC プログラム内から呼び出されます。名前が "user_state1" であるとすると、BASIC プログラムからは、
@user_state1 (必要なら処理に必要な情報を記述)
↑
ステートメント名の後ろに文字列が続く場合は、
間に空白が必要
と記述する事で呼び出されます。
BASIC からの情報
引数arg には、ステートメント名の後ろに記述されている文字列が S-JIS 対応で渡されます。範囲はステートメント名の直後から、次のコロン、または改行文字、あるいはヌル文字までです。
@user_state1 ABCDEFG
上記のようにすると、arg には "ABCDEFG" を格納したバッファの先頭アドレスが渡され、len にはその長さ 7 が渡されます。文字列の先頭にある空白はバッファに格納されません。
文字列が格納されるバッファは、呼び出されている箇所毎に用意されます。内容はコールバックが呼び出される度にコピーされるので、arg が指すバッファの内容を変更しても、呼び出し側に影響を与える事はありません(ただし、arg [0] 〜 arg [len ] の範囲である事)。
ステートメントの後ろに何も記述しなかった場合は、len に 0 が渡されます。
シングルクォートやダブルクォートを含む引数
シングルクォートやダブルクォートで括られているコロン・改行文字は、通常の文字データと見なされます。
最初のダブルクォート
↓
@user_state1 "
ABCDEFG
abcdefg
1234567
"
↑
対となるダブルクォート
上記のように記述すると、次のように改行を含んだ文字列が引数として扱われます。
"
ABCDEFG
abcdefg
1234567
"
対になるシングルクォート・ダブルクォートは、ヌル文字が出現するまで検索されます。
終了時の戻り値
関数が正常終了した時は STATUS_NORMAL を返してください。それ以外の場合は状態コードを返してください。適当なコードが見つからなければ、アプリケーション独自のコードを作成しても問題ありませんが、その場合は STATUS_NORMAL 未満の値(負の値)を使用してください。