標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C 改訂 |
両方 | z/OS® V1R7 |
#define _MSE_PROTOS
#include <stdio.h>
#include <wchar.h>
int fwide(FILE *stream, int mode);
#define _OPEN_SYS_UNLOCKED_EXT 1
#include <wchar.h>
int fwide_unlocked(FILE *stream, int mode);
fwide() は、stream によって指定されたストリームの指向を決定します。mode が 0 より大きい場合、関数はストリームをワイド指向にすることを試みます。 mode が 0 より小さい場合、関数はストリームをバイト指向にすることを試みます。 どちらでもなく、mode が 0 の場合、関数はストリームの指向を変更せず、代わりに関数はストリームの現在の指向を戻します。
ストリームの指向が既に決定されている場合、fwide() はその指向を変更しません。
type=record または type=blocked として開かれたストリームには、指向はありません。
VSAM データ・セットと CICS® 一時データ・キューには、指向はありません。 VSAM データ・セットまたは CICS 一時データ・キューを参照するストリームに対しては、fwide() は正常に使用できません。
エラー状態を検査するアプリケーションは、errno を 0 に設定し、fwide() を呼び出してから、errno を検査する必要があります。errno がゼロ以外であれば、エラーが発生したと想定されます。
fwide_unlocked() は、スレッド・セーフでないことを除いて、機能的に fwide() と 等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。
C++ の特別考慮事項: fwide() と C++ 入出力ストリームの相互作用は未定義です。
正常に実行された場合、呼び出し後にストリームがワイド指向であれば、fwide() は 0 より大きい値を戻します。 呼び出し後にストリームがバイト指向であれば 0 より小さい値を戻し、ストリームに指向がなければ 0 を戻します。
正常に実行されなかった場合、fwide() は 0 を戻し、errno を次のいずれかに設定します。
EBADF - stream によって指定されたストリームは無効。
EINVAL - stream によって指定されたストリームは type=record または type=blocked として開かれたか、ストリームが VSAM データ・セットまたは CICS 一時データ・キューを参照している。