セグメント化プログラムと非セグメント化プログラムの選択

プログラムの設計をセグメント化または非セグメント化のどちらにするかを決定するときに、2 つの問題に注意する必要があります。

最初の問題は、競合リソースに対するトランザクションの効果です (ストレージやプロセッサー使用など)。2 番目の問題は、排他使用リソース (レコードとリカバリー可能データ・セット、リカバリー可能一時データ・キュー、エンキュー項目など) に対する効果です。

非セグメント化プログラムでは、同等のセグメント化プログラム内のトランザクションの合計より実行時間が長くなるため、ストレージに対する影響が大きくなります。ただし、トランザクションごとに 1 つではなく、1 つのみのプログラムが開始されるため、プロセッサー・オーバーヘッドは小さくなります。

非セグメント化プログラムでは、同等のセグメント化プログラムとは異なり、リソースの排他使用を保持する時間が長くなります。この理由で、セグメント化プログラムでは応答時間が速くなりますが、リカバリーおよび保全性に関する考慮事項のため、非セグメント化プログラムを好む場合があります。

呼び出し側プログラムに書式がある場合、または converse 実行中にデータベースをロックする必要がある場合は、非セグメント化モードで実行するようにプログラムを設計する必要があります。

次のリストには、セグメント化プログラムと非セグメント化プログラムに関する考慮事項が含まれています。

ストレージ競合が問題ではないシステムでプログラムを実行する場合、セグメント化モードでの実行と非セグメント化モードでの実行の間の良い妥協点は、converseVar.commitOnConverse 変数を 1 に設定して非セグメント化モードで実行することです。このアプローチを使用すると、メインプログラムからの各 converse で強制的にコミットし、非セグメント化モードの良好なパフォーマンス特性を示しますが、ユーザーの思考時間中はファイルやデータベース・リソースを保持しません。


フィードバック