SYSIN の代わりにユーザー提供ロード・モジュールからソース・コードを読み取る場合に、出口モジュールを使用します。
| コンパイラーのアクション | 出口モジュールによる結果としてのアクション |
|---|---|
| 初期化時に出口モジュール (mod1) をロードします | |
| OPEN 命令コード (op コード) を使用してこの出口モジュールを呼び出します | 処理するためのソースを準備します。OPEN 要求の状況をコンパイラーに戻します。 |
| ソース・ステートメントが必要になったときは、GET 命令コードを使用してこの出口モジュールを呼び出します | 次のステートメントのアドレスと長さ、または (ソース・ステートメントがそれ以上存在しない場合は) データの終わり標識のいずれかを戻します |
| データの終わりが存在するときに、CLOSE 命令コードを使用して出口モジュールを呼び出します | その出力に関連のあるすべてのリソースを解放します |
コンパイラーはパラメーター・リストを使用して、出口モジュールと連絡します。パラメーター・リストはアドレスが入っている 10 個のフルワードで構成され、レジスター 1 にはパラメーター・リストのアドレスが入ります。戻りコード、データ長、およびデータ・パラメーターは、出口モジュールによってコンパイラーに戻され、他の項目はコンパイラーから出口モジュールに渡されます。次の表に、パラメーター・リストの内容を説明します。
| Offset | 次のもののアドレスが入る | 項目の説明 |
|---|---|---|
| 00 | ユーザー出口タイプ | 操作を実行するユーザー出口を識別するハーフワード。 1=INEXIT |
| 04 | 命令コード | 操作のタイプを示すハーフワード。 0=OPEN; 1=CLOSE; 2=GET |
| 08 | 戻りコード | 出口モジュールによって設定されるフルワードで、要求された操作の成功を示します。 0=操作は成功しました; 4=データの終わり; 12=操作は失敗しました |
| 12 | ユーザー出口作業域 | ユーザー出口モジュールで使用できるように、コンパイラーが提供する 4 フルワードの作業域 |
| 16 | データ長 | 出口モジュールが設定するフルワードで、GET 操作によって戻されるレコードの長さを指定します (80 でなければなりません) |
| 20 | データまたは str1 | 出口モジュールが設定するフルワードであり、GET 操作の際、ユーザー所有のバッファー内のレコードのアドレスが入ります。 str1 は OPEN にのみ適用されます。最初のハーフワード (ハーフワード境界上の) にストリングの長さが入り、その後にストリングが続きます。 |
| 24 | 未使用 | (LIBEXIT の専用) |
| 28 | 未使用 | (LIBEXIT の専用) |
| 32 | 未使用 | (LIBEXIT の専用) |
| 36 | 未使用 | (LIBEXIT の専用) |
関連参照
LIBEXIT の処理