Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


ブロック・サイズの設定

COBOL では、BLOCK CONTAINS 節を使用して物理レコードのサイズを設定します。 この節を省略すると、コンパイラーはレコードがブロック化されないものと見なします。

ディスクまたはテープ上の QSAM ファイルをブロック化すると、処理速度が増し、ストレージ要件を最小限にすることができます。z/OS UNIX ファイル (HFS のファイルを含む)、PDSE メンバー、およびスプール・データ・セットをブロック化できますが、そのようにしてもシステムがデータを保管する方法に影響はありません。

BLOCK CONTAINS 節でブロック・サイズを明示的に設定する場合には、装置についての最大ブロック・サイズよりも大きくしてはなりません。BLOCK CONTAINS 節の CHARACTERS 句を指定する場合、レコード中のデータ項目の USAGE にかかわらず、サイズではレコード中のバイト数を示す必要があります。形式 F ファイルについて設定するブロック・サイズは、レコード長の整数倍でなければなりません。

プログラムでテープ上の QSAM ファイルを使用する場合は、少なくとも 12 から 18 バイトの物理ブロック・サイズを使用してください。 そうでない場合、以下のいずれかのアクションの実行時にパリティー検査が行われると、ブロックはスキップオーバーされます。

一般に、ブロックが大きいとパフォーマンスは向上します。ブロック・サイズがわずか数キロバイトの場合は、特に効率が低下します。最低でも数十キロバイトのブロック・サイズを選択してください。レコードのブロック化を指定してブロック・サイズを省略すると、装置の使用効率とデータ転送速度を考慮した最適なブロック・サイズがシステムによって選択されます。

z/OS によるブロック・サイズの決定: パフォーマンスを最大化するには、COBOL ソース・プログラム内でブロック化ファイルのブロック・サイズを明示的に設定しないでください。新しいブロック化データ・セットの場合は、z/OS にシステム決定のブロック・サイズを提供させるようにする方が簡単です。このフィーチャーを使用するには、以下のガイドラインに従ってください。

明示的なブロック・サイズの設定: ブロック・サイズを明示的に設定したい場合は、以下の指針に従うと、プログラムが最も柔軟になります。

z/OS における拡張形式データ・セットの場合、DFSMS™ は物理レコードに 32 バイトのブロック接尾部を追加します。ブロック・サイズを明示的に指定する (JCL または ISPF を介して) 場合には、このブロック接尾部のサイズをブロック・サイズに含めないでください。このブロック接尾部は、プログラムの中で使用することはできません。z/OS DFSMS は、ブロック接尾部を読み取るためのスペースを割り振ります。 ただし、直接アクセス装置の 1 つのトラックに収まる拡張フォーマット・データ・セットのブロック数を計算するとき、ブロック・サイズにブロック接尾部のサイズを含める必要があります。

BLOCK CONTAINS 節に直接、または BLOCK CONTAINS n RECORDS を使用して間接的に 32760 より大きなブロック・サイズを指定した場合には、 データ・セットをテープに定義していない限り、データ・セットの OPEN は、ファイル状況コード 90 で失敗します。

既存のブロック化データ・セットの場合は、次のようにすると最も簡単です。

DD 名定義から BLKSIZE を省くと、ブロック・サイズは、システムによってデータ・セット・ラベルから自動的に取得されます。

LBI の利用: 大きなブロック・サイズ用のラージ・ブロック・インターフェース (LBI) を使用して、テープ・データ・セット のパフォーマンスを向上させることができます。 LBI が使用可能であれば、COBOL 実行時には、システム決定のブロック・サイズを使用するテープ・ファイルに対して、この機能が自動的に使用されます。LBI は、JCL または BLOCK CONTAINS 節でブロック・サイズが明示的に定義されるファイルでも、使用されます。LBI を使用すると、ブロック・サイズが 32760 (磁気テープ装置でサポートされる場合) を超えても構いません。

LBI はどんな場合にでも使用されるわけではありません。以下の場合には、32760 を超えるブロック・サイズを使用しようとすると、コンパイル時に診断され、OPEN 障害となります。

32760 を超えるブロック・サイズを使用すると、別のシステムでテープを読み取れなくなる場合があります。32760 より大きなブロック・サイズで作成したテープは、32760 より大きなブロック・サイズをサポートする磁気テープ装置を持つシステムでしか読み取ることができません。ファイル、装置、またはオペレーティング・システム・レベルに関して、指定したブロック・サイズが大きすぎると、ランタイム・メッセージが出されます。

システム決定のブロック・サイズを 32760 に限定するには、どこにも BLKSIZE を指定せずに、以下のいずれかの項目を 32760 に設定してください。

ブロック・サイズ限界は、以下の項目を検査してコンパイラーによって検出される最初のゼロ以外の値です。

BLKSIZE または BLKSZLIM 値をどのソースからも利用できないと、システムは BLKSIZE を 32760 に限定します。その後、32760 を超えるブロック・サイズを以下のいずれかの方法で使用可能にすることができます。

BLKSZLIM は、装置独立です。

ブロック・サイズおよび DCB RECFM サブパラメーター: z/OS のもとでは、DCB RECFM サブパラメーターに S または T オプションをコーディングすることができます。

関連参照
FILE SECTION 記入項目  
BLOCK CONTAINS 節 (Enterprise COBOL 言語解説書)


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)