Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 コンパイラーおよびランタイム 移行ガイド


OS/390 バージョン 2 リリース 10 における RECORDING MODE U を指定した COBOL プログラムのファイル処理方法の変更

OS/390 版言語環境プログラム バージョン 2 リリース 9 以前から z/OS 版言語環境プログラムに移行する場合は、RECORDING MODE U を指定した RECFM=VB または FB データ・セットを処理する COBOL プログラムの動作が変わる場合があります。 以下のケースにおいて、アプリケーション・プログラムが正しく作動するために、 多少の変更を必要とすることがあります。

OS/390 版言語環境プログラム バージョン 2 リリース 9 以前では、この組み合わせで RECORDING MODE と RECFM を使用すると、不一致が起こる場合があり、この動作は、一部のアプリケーションで利用されていました。CMPR2 を指定してコンパイルされたプログラムではこの問題はありませんが、PQ49479 の PTF がインストールされていない場合は、矛盾した動作が見られることがあります。

アプリケーションにこの問題が存在するかどうかを判別するには、ソース・プログラムで RECORDING MODE U を検索します。RECORDING MODE U への参照がない場合、この問題に関して必要な変更は多くはありません。しかし、RECORDING MODE U を使用するプログラムがある場合は、DD ステートメントおよび (場合によっては) そのファイルのデータ・セット属性を確認する必要があります。
変更を行う場合は、ファイルのオープン時にそのファイルの RECORDING MODE がデータ・セットの RECFM と 一致するようにしなければなりません。 アプリケーションを変更する場合は、以下の方法を使用することができます。

実際のフォーマット U の処理では、そのファイルに対して読み取りを行うと、それぞれの読み取りからブロック全体を受け取り (フォーマット U のレコードの場合、各ブロックが 1 つのレコードとして書き込まれるため)、これがアプリケーションに戻されます。データ・セットが可変ブロック (RECFM=VB) または固定ブロック (RECFM=FB) の場合、アプリケーションに戻されるブロックは複数のレコードで構成されるので、これをアプリケーション側で非ブロック化する必要があります。さらに、フォーマット U ファイルへの書き込みによって、各レコードに新たなブロックが 作成されます。 もともと RECFM=VB または RECFM=FB として書き込まれた 既存ファイルへの書き込みが完了すると、RECFM=U として書き込まれたブロックには 単一のレコードが含まれますが、RECFM=FB または RECFM=VB として 書き込まれたファイルには複数のレコードが含まれます。 RECFM も書き込みが完了すると、フォーマット U に変更されます。

ファイルの RECORDING MODE とデータ・セットの RECFM 間の不一致は、COBOL ソースに RECORDING MODE V または F がコーディングされていて、かつ、データ・セットに RECFM=U が設定されている場合にも起こることがあります。このコーディングは現在のところ動作しますが、RECORDING MODE と RECFM が一致するように変更することを推奨します。ファイルの RECORDING MODE とデータ・セットの RECFM の間に不一致がある場合、言語環境プログラムに対して今後行われる変更が原因でアプリケーションが失敗することが予想されます。


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

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