_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
リカバリー可能な入出力エラーが発生しました。

errno の設定については、表 12 および 表 14 を参照してください。

_Rdelete() の使用例

#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 );
}

関連情報



[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]