_Rfeov() — ファイルの終わりの強制

フォーマット

#include <recio.h>

int _Rfeov(_RFILE *fp);

言語レベル

ILE C Extension

スレッド・セーフ

はい

説明

_Rfeov() 関数は、fp で指定されたファイルに関連したテープ・ファイルのボリュームの終わりの状態を強制します。 _Rfeov() 関数は、ファイルをファイルの次のボリュームに位置指定します。 ファイルが出力用にオープンしている場合は、出力バッファーがフラッシュされます。

_Rfeov() 関数は、テープ・ファイルの場合に有効です。

戻り値

_Rfeov() 関数は、ファイルがあるボリュームから次のボリュームに移動された場合、1 を戻します。 ファイルの最後のボリュームの処理中に呼び出された場合は EOF を戻します。 操作が正常に実行されなかった場合はゼロを戻します。 errno の値は、EIOERROR (リカバリー不能なエラーの発生) または EIORECERR (リカバリー可能な入出力エラーの発生) に設定されます。 errno の設定については、表 1 および 表 1 を参照してください。

#include <stdio.h>
#include <recio.h>
#include <stdlib.h>
 
int main(void)
{
    _RFILE *tape;
    _RFILE *fp;
    char   buf[92];
    int    i, feov2;
 
    /* Open source physical file containing C source.            */
 
    if (( fp = _Ropen ( "QCSRC(T1677SRC)", "rr blkrcd=y" )) == NULL )
    {
        printf ( "could not open C source file¥n" );
        exit ( 1 );
    }
 
    /* Open tape file to receive C source statements             */
 
    if (( tape = _Ropen ( "T1677TPF", "wr lrecl=92 blkrcd=y" )) == NULL )
    {
        printf ( "could not open tape file¥n" );
        exit ( 2 );
    }
 
    /* Read the C source statements, find their sizes            */
    /* and add them to the tape file.                            */
 
    while (( _Rreadn ( fp, buf, sizeof(buf), __DFT )) -> num_bytes != EOF
)
    {
        for ( i = sizeof(buf) - 1 ; buf[i] == ' ' && i > 12;       --i );
        i = (i == 12) ? 80 : (1-12);
        memmove( buf, buf+12, i );
        _Rwrite ( tape, buf, i );
    }
    feov2 = _Rfeov (fp);
 
    _Rclose ( fp );
    _Rclose ( tape );
}