一般的な IMS™ プログラムでは、下図に示すようなメッセージ駆動型の構造が使用されます。

この例では、プログラムに関連付けられているメッセージ・キューにメッセージが含まれていると、IMS コントローラーがトランザクション・プログラムを開始します。別のプログラムではメッセージをキューに格納することもあります。あるいはコントローラーが端末から入力を読み取ることもあります。このプログラムはキューからメッセージを取り出し、必要なデータベース入出力を行い、メッセージを出力キューに追加して、処理を続行します。出力キューは入力端末、別の端末またはプリンター、あるいは別のトランザクションに関連付けられているキューを表すことができます。次にこのプログラムは先頭にループバックして、その入力キューにある次のメッセージを処理します。
複数の端末が同じトランザクションを同時に実行しているために、一般的な PL/I プログラムおよび COBOL プログラムは、メッセージ・キューが空になるまでサイクルを続行する必要があります。 ただし、EGL の textUI プログラムは自動的にループして、キュー内の次のメッセージを読み取ります。メッセージ・キューの制御機能を直接定義する必要はありません。 IMS 用のプログラムの定義方法は、メッセージ駆動型の構造ではなく、同期ロジック構造を使用する CICS® 用プログラムの場合とまったく同じです。下図は、同期プログラムの例を示しています。

同期モデルを使用する場合、検討する必要があるのは、単一の端末にいる単一のユーザーに対して行う必要がある処理を検討することだけです。これにより、プログラムの設計と定義の両方が簡単になります。
IMS では、ユーザー入力を待っているときに、すべてのデータベース変更をコミットし、すべてのデータベース・ロックと位置を解放する必要があります。EGL では、これはセグメント化されたプログラムを作成するという意味になります。 プログラムを作成する場合は、EGL が各 converse 入出力ステートメントを使用してコミットを実行することに注意してください。
IMS 用プログラムを開発するには、セグメンテーションの動作を理解しておく必要があります。テキスト UI プログラムおよび UI プログラムにおけるセグメンテーションを参照してください。