CICS® では、一時ストレージが、複数のトランザクションで使用できる必要があるデータを格納するための主要な方式です。
一時ストレージ内のデータ項目は、データを格納するプログラムによって動的に割り振られる名前とともにキューに入れられます。一時ストレージは、主一時ストレージと補助一時ストレージという、2 つの異なる方法で実装されます。
- 主は、キューが動的ストレージ域から取得されたスペースに保存されることを示します。
- 補助は、キューが入力順 VSAM データ・セットに書き込まれることを示します。
主ストレージおよび補助ストレージには、以下の特性があります。
EGL からの一時ストレージへのアクセス
CICS 環境用に生成された EGL プログラムは、シリアル・レコードまたは相対レコードとして CICS 一時ストレージにアクセスできます。一時ストレージにアクセスする場合、以下の I/O ステートメントが有効です。
- add
- close
- delete
- get
- get next
- get forUpdate
- replace
プログラムを生成するときに、ファイルのリソース関連では、EGL ファイル・タイプが tempaux (補助ストレージ・ファイル) または tempmain (主ストレージ・ファイル) として指定されている必要があります。システム・リソース名 (systemName プロパティー) は、一時ストレージ・ファイルに関連付けられたキュー名です。
一時ストレージ・ファイルは、同時に 1 つのタスクでのみ使用できます。
EGL は、以下の CICS コマンドを生成します。
- キューに最初にアクセスすると、EGL は、リソース名 EZETEMP-queuename に対して CICS ENQ コマンド (NOSUSPEND オプション) を使用してエンキューします。
- ファイルが閉じられる (close ステートメントまたはプログラムの終了) とき、またはリカバリー可能リソースがコミットされるときに、EGL は CICS DEQ コマンドを使用してデキューします。
同じファイルにアクセスする非 EGL プログラムは、ファイルへのアクセス中に同じシステム・リソース名に対してエンキューする必要があります。
一時ストレージ内のレコードの前には追加バイトが追加され、レコードの状況を示します。
- X'01'
- レコードが論理的に削除されたことを示します。
- X'00'
- レコードが論理的にファイル内に存在することを示します。
追加バイトはレコード定義に追加され、Rational COBOL Runtime for z/Series によって管理されます。追加バイトを EGL レコード定義には含めないでください。ただし、一時ストレージ・ファイルが非 EGL プログラムによっても使用される場合は、EGL の場合と同様に、非 EGL プログラムは、そのバイト用のスペースを割り振り、そのバイトを解釈し、そのバイトを更新する必要があります。
追加バイトの処理は次のようになります。
- add または replace
- バイトは X'00' に設定されます。
- delete
- バイトは X'01' に設定され、レコード長は 1 に設定されます。
- get next
- 値が X'01' であるレコードはスキップされます。
- get または get forUpdate
- 値が X'01' のレコードでは、noRecordFound レコード状態が設定されます。
close ステートメントは、一時ストレージのファイルを削除しません。ファイルを削除するには、
sysLib.purge() システム関数を使用します。EGL は、
sysLib.purge() が使用されると、リソース名 EZETEMP-
queuename に対して NOSUSPEND オプションを指定して CICS ENQ コマンドを生成することによりエンキューし、キューの削除後にデキュー (DEQ コマンド) します。