10.2.5 システム入出力関数レベルの指定
COBOL実行時ライブラリは,高水準システム入出力関数によってDISPLAY文のデータを出力します。
そのため,標準出力または標準エラー出力を,高水準システム入出力関数(fwrite,fflush)の使用が制限される出力先に切り替えた環境(システムのPIPE,FIFO機能など)では,DISPLAY文でエラーが発生し,プログラムが異常終了することがあります。
この場合,環境変数CBLSTDIOLVLを指定することによって,低水準システム入出力関数(write)を使用したデータ出力に変更できます。低水準システム入出力関数を使用したデータ出力に変更すると,DISPLAY文でエラーが発生してもプログラムの実行は継続され,DISPLAY文の出力データはCOBOLログファイルに出力されます。なお,標準出力または標準エラー出力を変更しない場合は,環境変数CBLSTDIOLVLを指定する必要はありません。
-
環境変数CBLSTDIOLVLの指定方法
DISPLAY文によって,データを標準出力(stdout)または標準エラー出力(stderr)に出力する場合,COBOL実行時ライブラリが使用するシステム入出力関数のレベルを指定します。環境変数CBLSTDIOLVLの指定方法については「35.3 プログラムの実行環境の設定」を参照してください。
-
エラー発生時の動作
環境変数CBLSTDIOLVLを指定して低水準システム入出力関数を指定したデータ出力に変更しても,高負荷で書き込みが連続して発生した場合など,バッファの状態によって,DISPLAY文の実行中にエラーが発生することがあります。この場合,エラーが発生しても実行を継続します。
エラーが発生した場合の動作を次に示します。
-
エラーメッセージの出力
Wレベルのエラーメッセージを出力して,実行を継続します。ただし,メッセージの出力中にエラーが発生した場合は,メッセージが出力されないことがあります。この場合,環境変数CBL_SYSERRにファイル名を指定することによって,メッセージをファイルに出力できます。
-
DISPLAY文のエラー出力
エラー発生時のDISPLAY文の出力データをCOBOLログファイルに出力します。COBOLログファイルの詳細は,「10.5 COBOLログファイル出力機能」を参照してください。
また,COBOLログファイル出力中にエラーが発生した場合は,標準出力にDISPLAY文のデータを出力します。
-