22.5.3.5 Strset(ユーザー定義関数)

完成スクリプト

//文字列"価格 : "と"円"を付加する
_strset(databuf0, "") //データバッファ0を初期化
_strset(databuf0, "価格 : ") //データバッファ0へ文字列を格納
_bin2decasc(databuf1, [w:[#MEMLINK]0500]) //数値を文字列に変換してデータバッファ1へ格納
_strcat(databuf0, databuf1) //データバッファ0の後ろにデータバッファ1を結合
_strset(databuf1, "") //データバッファ1を初期化
_strset(databuf1, "円") //データバッファ1へ文字列を格納
_strcat(databuf0, databuf1) //データバッファ0の後ろにデータバッファ1を結合
//テンポラリアドレスの初期化
[t:0001]=0
[t:0002]=0
//内部デバイスにワード単位で連続格納されている文字列をバイト単位で格納し直す(30文字分)
loop()
{
 [w:[#MEMLINK]2000]#[t:0002]=[w:[#MEMLINK]1000]#[t:0001]>>8 //上位バイトを下位バイトへ置き換えて格納
 [w:[#MEMLINK]2001]#[t:0002]=[w:[#MEMLINK]1000]#[t:0001]&0xFF //上位バイトを消去して次アドレスへ格納
 [t:0001]=[t:0001]+1 //アドレスオフセット+1
 [t:0002]=[t:0002]+2 //アドレスオフセット+2
 if([t:0001]==15) //2ワードへ2バイトずつ格納することを15回繰り返したら抜ける
 {
   break
 }
 endif
}
endloop
_ldcopy(databuf2, [w:[#MEMLINK]2000], 30) //内部デバイス2000~2029のデータをデータバッファへ文字列として格納
//文字列"品名 : "を付加する
_strset(databuf1, "") //データバッファ1を初期化
_strset(databuf1, "品名 : ") //データバッファ1へ文字列を格納
_strcat(databuf1, databuf2) //データバッファ1の後ろにデータバッファ2を結合
//品名に価格の文字列をくっつける
_strcat(databuf1, databuf0) //データバッファ1へデータバッファ0の値を結合

動作概要

  1. 内部デバイス0500に格納されている価格データへ文字列“価格 : ”と“円”を付加します。 

  2. 印字データをプリンタへ送信するためのデータフォーマットへ変換します。内部デバイス1000に連続で格納されている文字列データ(品名)をバイト単位に区切り、下位1バイトの文字列データとして内部デバイス2000~2030に格納します。
    関数_ldcopyを使って連続するワードアドレスの下位1バイトを順にdatabuf2に格納します。

    • 使用する関数_ldcopyの動作について、ワード単位で格納されているデータは下位1バイトのみバッファに格納し、上位バイトのデータは無視されます。

  3. databuf2へ文字列“品名 : ”と“価格”を付加します。