完成スクリプト
//文字列"価格 : "と"円"を付加する
_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の値を結合
動作概要
内部デバイス0500に格納されている価格データへ文字列“価格 :
”と“円”を付加します。
印字データをプリンタへ送信するためのデータフォーマットへ変換します。内部デバイス1000に連続で格納されている文字列データ(品名)をバイト単位に区切り、下位1バイトの文字列データとして内部デバイス2000~2030に格納します。
関数_ldcopyを使って連続するワードアドレスの下位1バイトを順にdatabuf2に格納します。
使用する関数_ldcopyの動作について、ワード単位で格納されているデータは下位1バイトのみバッファに格納し、上位バイトのデータは無視されます。
databuf2へ文字列“品名 : ”と“価格”を付加します。