Language Environment のメッセージ・ファイルの操作

このトピックでは、z/OS® Language Environment® のメッセージ・ファイルの入出力について説明します。 このファイルは書き込み専用です。 つまり、このファイルは読み取り不能でありシーク不能です。

制約事項: このトピックの内容は AMODE 64 には適用されません。 AMODE 64 には MSGFILE ランタイム・オプションはありません。 AMODE 64 では、stderr ストリームは Language Environment のメッセージ・ファイルには送られません。 通常なら Language Environment のメッセージ・ファイルに送られるはずのものは、stderrstdout に送られる場合も含めて、すべて C stderr ストリームに送られます。 AMODE 64 について詳しくは、z/OS 64 ビット環境を参照してください。

z/OS Language Environment のメッセージ・ファイルのデフォルトのオープン・モードは、テキストです。 バイナリーおよびレコード入出力はサポートされていません。

このトピックでは、C++ プログラムの中で使用できる C 入出力ストリームについても説明します。 代わりに C++ 入出力ストリーム・クラスを使用したい場合、その概要について 標準 C++ ライブラリー 入出力ストリーム・クラスの使用を参照してください。 詳しくは、標準 C++ 入出力ストリーム・クラスの説明が記載されている「Standard C++ Library Reference」を参照してください。

標準ストリーム stderr は、デフォルトでは z/OS Language Environment のメッセージ・ファイルを使用します。 stderr は、ファイル記述子 2 に割り当てられます。これは、z/OS UNIX シェルのいずれかで実行している場合は通常、端末です。 ただし、次のとおりいくつかの例外があります。
  • アプリケーションが MSGFILE(ddname) ランタイム・パラメーターで DD 名を 割り振っていた場合、出力先はそこになります。 デフォルトは MSGFILE(SYSOUT) です。
  • アプリケーションが POSIX exec() 関数の 1 つを出すか、または POSIX の fork() 関数が作成したアドレス・スペースで実行され、しかも そのアプリケーションが動的に MSGFILE に DD 名を割り振っていない場合には、ファイル記述子 2 が存在していればデフォルトでそれが使用されます。 存在していない場合、デフォルトでは、ユーザーの現行作業ディレクトリー にメッセージ・ファイルが作成されます。 メッセージ・ファイルの名前は、メッセージ・ファイル・ランタイム・オプションで 指定される名前になります (デフォルトは SYSOUT)。