PROCEDURE DIVISION ステートメントのうち、 特に ILE COBOL プログラムで TRANSACTION ファイルを処理するための拡張機能があるものをすべて以下に示します。 これらの各ステートメントに関する詳細については、「WebSphere Development Studio: ILE COBOL 解説書」を参照してください。
PROCEDURE DIVISION で TRANSACTION ファイルを処理するためには、 まずそのファイルをオープンする必要があります。 TRANSACTION ファイルをオープンするには、形式 3 の OPEN ステートメントを使用します。 TRANSACTION ファイルは、I-O モードでオープンしてください。
OPEN I-O file-name.
TRANSACTION ファイル用のプログラム装置を獲得する必要があります。 それを獲得したなら、入出力操作のためにそのプログラム装置を使用することができます。 プログラム装置は、暗黙のうちに獲得するか、または明示的に獲得します。
TRANSACTION ファイルをオープンすると、暗黙のうちに 1 つのプログラム装置を獲得します。 ファイルが ICF ファイルの場合、 暗黙のうちに獲得される単一のプログラム装置は、ICF ファイルの作成 (CRTICFF) コマンドの ACQPGMDEV パラメーターによって決定されます。 ファイルがディスプレイ・ファイルの場合、暗黙のうちに獲得される単一のプログラム装置は、CRTDSPF コマンドの DEV パラメーターの中の最初の項目によって決定されます。 それ以外のプログラム装置は、明示的に獲得しなければなりません。
プログラム装置を明示的に獲得するには、ACQUIRE ステートメントを使用します。 ICF ファイルの場合は、ファイルがオープンされる前に ADDICFDEVE または OVRICFDEVE の CL コマンドを使用して、 その装置をそのファイルに対して定義しておく必要があります。 ディスプレイ・ファイルの場合、このような必要はありません。 すなわち、ACQUIRE ステートメントで指定する装置は、CRTDSPF コマンド、CHGDSPF コマンド、または OVRDSPF コマンドの DEV パラメーターに指定する必要はありません。 しかし、ディスプレイ・ファイルを作成する場合には、獲得される装置の数 (デフォルトは 1) を指定する必要があります。 ディスプレイ・ファイルの場合、プログラム装置の名前はディスプレイ装置に一致していなければなりません。
ACQUIRE program-device-name FOR transaction-file-name.
TRANSACTION ファイルをオープンして、そのためのプログラム装置を獲得すれば、それに対する入出力操作を実行するための準備は完了です。
TRANSACTION ファイルに対して実行する最初の入出力操作は、多くの場合、ディスプレイ装置にレコードを書き出すことです。 そのレコードは、ユーザーに対して応答や何らかのデータを入力するよう求めるプロンプトとして使用されます。
TRANSACTION ファイルに論理レコードを書き出すには、形式 4 の WRITE ステートメントを使用します。 WRITE ステートメントは、次のように簡単にコーディングできます。
WRITE record-name FORMAT IS format-name.
TRANSACTION ファイルに関して、様式の異なる複数のデータ・レコードを活動状態にしたい場合があります。 このような場合に TRANSACTION ファイルに書き出す出力データ・レコードの形式を指定するには、 形式 4 の WRITE ステートメントの FORMAT 句を使用する必要があります。
TRANSACTION ファイル用に複数のプログラム装置を明示的に獲得した場合、出力レコードの送り先のプログラム装置を指定するには、 形式 4 の WRITE ステートメントの TERMINAL 句を使う必要があります。
形式 4 の WRITE ステートメントの STARTING 句および ROLLING 句を指定することによって、WRITE ステートメントが出力レコードを書き込む、 ディスプレイ装置上の行番号を制御することができます。 STARTING 句は、可変レコード開始行キーワードを使用するレコード様式の開始行番号を指定します。 ROLLING 句を使うと、ワークステーション画面に表示された行を移動させることができます。 画面上のすべての行または一部の行を、上下に送ることができます。
WRITE record-name FORMAT IS format-name TERMINAL IS program-device-name STARTING AT LINE start-line-no AFTER ROLLING LINES first-line-no THRU last-line-no DOWN no-of-lines LINES END-WRITE.
TRANSACTION ファイルから論理レコードを読み込むには、形式 4 の READ ステートメントを使用します。 READ ステートメントが実行されるときにデータが使用可能である場合には、レコード域の中にデータが戻されます。 レコード様式とプログラム装置の名前が、それぞれ I-O-FEEDBACK 域および CONTROL-AREA 域に戻されます。
READ ステートメントを使用する前に、TRANSACTION ファイルのために少なくとも 1 つのプログラム装置を獲得しておかなければなりません。 READ ステートメントが実行される時にプログラム装置が獲得されていない場合は、ファイル状況が 92 に設定されることによって論理エラーが報告されます。
READ ステートメントは、次のような最も簡単な形で使用できます。
READ record-name RECORD.
プログラム装置を 1 つだけ獲得している場合にこの簡単な形の READ ステートメントを使用すると、 データが利用可能になるまで常に待機することになります。 ジョブが制御付き取り消しを受け取っても、 あるいはディスプレイ・ファイルまたは ICF ファイルの WAITRCD パラメーターに待ち時間が指定されていたとしても、 プログラムが READ ステートメントから制御を再び得ることはできなくなります。
複数のプログラム装置を獲得した場合、この簡単な形の READ ステートメントは、 最初にデータが利用可能になって送信勧誘されたプログラム装置からデータを受け取ります。 複数のプログラム装置を獲得した場合、 送信勧誘された装置がなく待ち時間が指定されていないか、またはジョブの制御付き取り消しが発生したか、 または指定された待ち時間が経過すると、 この簡単な形の READ ステートメントはデータを戻すことなく完了する場合があります。
READ 操作の実行方法の詳細な説明については、「WebSphere Development Studio: ILE COBOL 解説書」の『READ ステートメント』の部分を参照してください。
複数のプログラム装置を獲得した場合、READ ステートメントの TERMINAL 句の中で、どのプログラム装置からデータを読み取るかを明示的に指定することができます。
特定の様式でデータを受け取りたい場合には、その様式を READ ステートメントの FORMAT 句に指定することができます。 使用可能なデータが、要求されたレコード様式に合致しない場合、ファイル状況 9K が設定されます。
次に示すのは、TERMINAL 句および FORMAT 句を指定した READ ステートメントの例です。
READ record-name RECORD FORMAT IS record-format END-READ READ record-name RECORD TERMINAL IS program-device-name END-READ READ record-name RECORD FORMAT IS record-format TERMINAL IS program-device-name END-READ
この READ ステートメントが実行されると、次の条件が発生する場合があります。
NO DATA 句、AT END 句、または NOT AT END 句を指定することによって、READ ステートメントの実行結果の条件に基づいて、READ ステートメントから、ILE COBOL プログラム内のさまざまなステートメントに制御を移すことができます。
READ ステートメントが正常に完了した場合に一群のステートメントを実行するには、READ ステートメントの NOT AT END 句を指定します。
データがただちに利用可能でない場合に一群のステートメントを実行するには、READ ステートメントの NO DATA 句を指定します。 NO DATA 句によって、READ ステートメントはデータが使用可能になるのを待つ必要がなくなります。
AT END 条件が存在する場合に一群のステートメントを実行するには、READ ステートメントの AT END 句を指定します。
次に示すのは、READ ステートメントに NO DATA、NOT AT END、および AT END 句を指定した例です。
READ record-name RECORD TERMINAL IS program-device-name NO DATA imperative-statement-1 END-READ READ record-name RECORD TERMINAL IS program-device-name AT END imperative-statement-2 NOT AT END imperative-statement-3 END-READ
TRANSACTION ファイル用に獲得したプログラム装置を使用し終えた時点で、それをドロップする必要があります。 プログラム装置をドロップするとは、その装置が TRANSACTION ファイルを使用した入出力操作では使えなくなるということです。 プログラム装置をドロップすると、その装置は他のアプリケーションから使用できるようになります。 プログラム装置は、暗黙のうちにドロップしたり明示的にドロップしたりすることができます。
TRANSACTION ファイルをクローズすると、そのファイルに付加されていたすべてのプログラム装置も暗黙のうちにドロップされます。
DROP ステートメントで指定することによって、プログラム装置を明示的にドロップすることができます。 ドロップされた装置は、必要に応じてそれを再獲得することができます。
DROP program-device-name FROM transaction-file-name.
TRANSACTION ファイルの使用を終了したならば、それをクローズしてください。 TRANSACTION ファイルをクローズするには、形式 1 の CLOSE ステートメントを使用します。 ファイルをクローズすると、そのファイルは、それを再びオープンするまで処理できなくなります。
CLOSE transaction-file-name.
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.