_Rdelete() — レコードの削除
形式
#include <recio.h>
_RIOFB_T *_Rdelete(_RFILE *fp);言語レベル
ILE C Extension
スレッド・セーフ
はい
説明
_Rdelete() 関数は、
fp で指定されたファイル内で更新のために現在ロックされているレコードを削除します。 削除操作の後、レコードはロックされません。 ファイルは更新のためにオープンしていなければなりません。
レコードは、読み取りまたは位置指定オプションで __NO_LOCK が指定されない場合、 その読み取りまたは位置指定によって、更新のためにロックされます。 レコードをロックした位置指定操作で __NO_POSITION オプションが指定された場合、 削除されたレコードは、ファイルが現在位置指定されているレコードではない場合があります。
この関数は、データベースと DDM ファイルの場合に有効です。
戻り値
_Rdelete() 関数は、fp に関連した _RIOFB_T 構造体へのポインターを戻します。 操作が正常に実行されると、num_bytes フィールドには 1 が入ります。 操作が正常に実行されないと、num_bytes フィールドにゼロが入ります。
errno の値は、次のいずれかに設定されます。
- 値
- 意味
- ENOTDLT
- ファイルは削除操作用にオープンされていません。
- EIOERROR
- 回復不能入出力エラーが起こりました。
- EIORECERR
- 回復可能入出力エラーが起こりました。
例
#include <stdio.h>
#include <stdlib.h>
#include <recio.h>
int main(void)
{
_RFILE *fp;
_XXOPFB_T *opfb;
/* Open the file for processing in arrival sequence. */
if (( fp = _Ropen ( "MYLIB/T1677RD1", "rr+, arrseq=Y" )) == NULL )
{
printf ( "Open failed\n" );
exit ( 1 );
}
/* Get the library and file names of the file opened. */
opfb = _Ropnfbk ( fp );
printf ( "Library: %10.10s\nFile: %10.10s\n",
opfb->library_name,
opfb->file_name);
/* Get the first record. */
_Rreadf ( fp, NULL, 20, __DFT );
printf ( "First record: %10.10s\n", *(fp->in_buf) );
/* Delete the first record. */
_Rdelete ( fp );
_Rclose ( fp );
}