22.11.7.6 ファイルライト

読み出し先アドレスから指定バイト数分の内容を指定ファイルに書き込みます。データの格納方法(モード)は、下表のように「新規」、「追記」、「上書き」があります。

_CF_write / _SD_write / _USB_write (フォルダ名, ファイル名, 読み出し先アドレス, オフセット, バイト数, モード)

格納方法(モード)の概要

モード

名称

内容

0

新規

ファイルを新規に作成します。ファイルが存在していれば、古いファイルを削除します。

1

追記

追記書込みを行います。ファイルが存在していなければ新たに作成します。

2

上書き

ファイルの一部を上書きで書き換えます。オフセットをファイルサイズより大きくした場合は、超えた分を0で埋めて、その後にデータを書き込みます。オフセットをファイルの最後に指定すると追記書込みとなります。ファイルが存在していなければエラーとなります。エラーの詳細については、22.11.7.7 ラベル設定を参照してください。

記述例

[w:[#INTERNAL]LS0200] = 0   //オフセット(モードが新規の場合は、“0”固定です。)
[w:[#INTERNAL]LS0202] = 100 //バイト数(100 バイト)
[w:[#INTERNAL]LS0204] = 0   //モード(新規)
_CF_write ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200], [w:[#INTERNAL]LS0202], [w:[#INTERNAL]:LS0204])

上記の例は、LS0100から100バイト読み出したデータを\DATAフォルダにDATA0001.BINファイルを新規に作成します。オフセット、バイト数、モードに内部デバイスを指定することにより間接的にバイト数、モードを指定できます。

内部デバイスを使用してファイル名を指定する場合

_CF_write ("\DATA", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200], 0, 100, 0)

LS0100にファイル名を格納することで、ファイル名を間接的に指定できます。ここでは、LS0100からLS0106に以下のようにファイル名を格納します。

例)文字列データモードが1の場合

上記式を実行することで、LS0200から100バイト読み出して"\DATA\DATA0001.BIN"のファイルを新規に作成します。

格納方法(モード)の記述例

上記式を実行すると、LS0100から100バイト読み出したデータを\DATAフォルダにDATA0001.BIN ファイルを新規に作成します。

すでに指定ファイル(例ではDATA0001.BIN)が存在している場合に上記式を実行すると、LS0100から100バイト読み出したデータを\DATAフォルダのDATA0001.BINファイルに追記します。

すでに指定ファイル(例ではDATA0001.BIN)が存在している場合に上記式を実行すると、LS0100から10バイト読み出したデータを\DATAフォルダのDATA0001.BINファイルのオフセット17バイト目から10バイト分上書きします。

(上書きするファイルがオフセット+追加バイト数より小さい場合)

すでに指定ファイル(例ではDATA0001.BIN)が存在していて、ファイルサイズが100バイトある場合に、オフセットを96バイト、バイト数を10バイトにして書き込んだ場合は、LS0100から10バイト読み出したデータを97バイト目から4バイト分上書きし、残りの6バイトを追記書き込みします。したがって、最終的には106バイトのファイルが作成されます。

(上書きするファイルがオフセットより小さい場合)

すでに指定ファイル(例ではDATA0001.BIN)が存在していて、ファイルサイズが100バイトある場合に、オフセットを110バイト、バイト数を10バイトにして書き込んだ場合は、101バイト目から110バイト分0で埋められて、LS0100から10バイト読み出したデータを111バイト目から追記書き込みします。したがって、最終的には120バイトのファイルが作成されます。