PL/I 標準 SYSPRINT ファイルは、 アプリケーション内で複数のエンクレーブによって共用されます。 同じあるいは異なるエンクレーブから、例えば STREAM PUT などの入出力要求を 出すことができます。 これらの要求は標準 PL/I SYSPRINT ファイル を、全アプリケーション共通のファイル として使用して処理されます。SYSPRINT ファイルは、 エンクレーブの終了時ではなく、アプリケーションが終了するときにのみ 暗黙的に閉じられます。
標準 PL/I SYSPRINT ファイルには、STREAM PUT などのユーザー開始 出力のみが入っています。 ランタイム・ライブラリー・メッセージおよび他の類似診断 出力は、言語環境プログラム MSGFILE へ向けられます。 SYSPRINT ファイル出力を言語環境プログラム MSGFILE にリダイレクトする処理の詳細については、「z/OS 言語環境プログラム プログラミング・ガイド」を参照してください。
アプリケーション内で複数のエンクレーブによって 共用されるためには、PL/I SYSPRINT ファイルは SYSPRINT のファイル名 で EXTERNAL FILE 定数として宣言されなければならず、 また属性 STREAM および OUTPUT ならびに暗黙の PRINT(OPEN 処理されるとき) も 持たなくてはなりません。 これはコンパイラーによってデフォルトとされる標準 SYSPRINT ファイルです。
アプリケーション内にはただ 1 つの 標準 PL/I SYSPRINT FILE が存在し、このファイルは そのアプリケーション内の全エンクレーブによって共用されます。 例えば、SYSPRINT ファイルはアプリケーション内の 多重ネスト・エンクレーブによる共用が可能であり、 また、言語環境プログラム事前初期化機能によってアプリケーション内で作成され 終了される一連のエンクレーブによる共用が可能です。 アプリケーション内でエンクレーブによって共用されるためには、PL/I SYSPRINT ファイル はそのエンクレーブ内で宣言されなくてはなりません。 標準 SYSPRINT ファイルは、エンクレーブ間でファイル引数として それを渡すことによって共用することはできません。 標準 SYSPRINT ファイルの宣言済み属性は、アプリケーション内では EXTERNAL と して宣言された定数によるのと同様、同じでなくてはなりません。PL/I はこの規則を強制しません。TITLE オプションと MSGFILE(SYSPRINT) オプションは、どちらも SYSPRINT を別の データ・セットへ経路指定しようとします。 したがって、この 2 つのオプションを一緒に使用すると、矛盾が起こり、TITLE オプションは無視されます。
共通 SYSPRINT ファイルを アプリケーション内で持つことは、 互いに緊密に結ばれたエンクレーブを利用するアプリケーションにとっては 利点となります。 しかし、 アプリケーション内のすべてのエンクレーブは、同じ 共用データ・セットに書き込みを行うので、各エンクレーブ間での 何らかの調整が必要となります。
SYSPRINT ファイルは、アプリケーションのエンクレーブ内で 最初に参照が行われた時にオープン されます (暗黙的にあるいは明示的に)。SYSPRINT ファイルが CLOSE 処理されると、ファイル・リソースは 解放され (あたかもファイルがオープンされていなかったかのように)、 また全エンクレーブは閉じられた状況を反映するように更新されます。
SYSPRINT が複数のエンクレーブ・アプリケーション内で 利用される場合は、LINENO 組み込み関数はエンクレーブ内の最初の PUT あるいは OPEN が出されるまで現在の行番号を返すだけです。 これは旧プログラムとの完全な互換性を維持するために 必要です。
COUNT 組み込み関数はエンクレーブ・レベルにおいて維持されます。 これは常に、エンクレーブ内の最初の PUT が出されるまで ゼロの値を返します。 ネスト化された子エンクレーブが親エンクレーブから呼び出される 場合、COUNT 組み込み関数の値は、親エンクレーブが子エンクレーブから 制御を取り戻したときは未定義です。
TITLE オプションを使用して、標準 SYSPRINT ファイルを 異なるオペレーティング・システム・データ・セットと関連付けることができますが、特定のオープン 関連付けは、別のものをオープンする前にクローズする必要があることに留意してください。 この関連付けはオープン状態が続く間は各エンクレーブ間で 保持されます。
標準 PL/I SYSPRINT ファイルと関連する PL/I 条件処理は、 その現行のセマンティクスと有効範囲を保持します。 例えば、子エンクレーブ内で生じた ENDPAGE 条件は、その子エンクレーブ 内で、設定された ON ユニットを呼び出すだけです。 これは親エンクレーブ内の ON ユニットの呼び出しは行いません。
標準 PL/I SYSPRINT ファイルのタブは、 エンクレーブがユーザー PLITABS テーブルを含む場合、PUT が 異なるエンクレーブから実行されたときは変わる可能性があります。
PL/I SYSPRINT ファイルが RECORD ファイルあるいは STREAM INPUT ファイルとして 利用される場合、PL/I は個々のエンクレーブあるいはタスク・レベルでそれをサポートしますが、 エンクレーブ間の共用可能ファイルとしてはサポートしません。 同じアプリケーションの異なる エンクレーブ内の異なるファイル属性 (例えば RECORD および STREAM) に おいて PL/I SYSPRINT ファイルがオープンされると、 結果は予測不能のものとなります。
SYSPRINT は、Enterprise PL/I コンパイラーによってコンパイルされたコードと以前の PL/I コンパイラーによってコンパイルされたコードの間で共有することもできます。ただし、そのためには以下の要件をすべて適用する必要があります。