出口の初期化

出口の初期化は、COBOL または PL/I のような High Level Language (HLL) にとって大きな問題ではありません。Language Environment® (LE) は HLL 用のストレージを取得します。サンプル出口の場合、COBOL が始動する前に、LE は必要な COBOL 作業用ストレージを取得します。COBOL プログラムが呼び出されるたびに、LE は COBOL に作業用ストレージへのアクセスが与えられていることを確認します。また LE は、複数の呼び出しにわたって作業用ストレージでデータを保守します。

ただし、ユーザー出口が HLASM で作成されている場合、出口の初期化は複雑になります。ユーザーは INIT-RAM および TERM-RAM 呼び出しを使用して、出口が必要とするストレージを取得および解放できます。出口の呼び出しごとに、出口は 2 番目の引数 RAM-WORK-AREA-PTR をいつでも設定することができます。File Manager は、出口の呼び出しごとにこの値を保持し、受け渡します。これで、出口が呼び出しごとにストレージへのアドレス可能度を得ることができます。出口は、TERM-RAM への呼び出しを受け取るたび、すべてのストレージを解放します。

サンプル COBOL 出口コードは RAM-WORK-AREA-PTR を使用しません。既に説明したように、LE が HLL のこの機構の代替方法を提供するためです。

サンプル出口にある INIT-RAM のコードは、呼び出し元からのトレース・レベルを設定し、コールバック・ロギング関数アドレスをセットアップします。

引数:

Parm0 = OpCode = InitializeRAM
Parm1 = RAM-WORK-AREA-PTR
Parm2 = (Reserved)
Parm3 = TRACELVL  (integer value from 0 to 3)
Parm4 = Trace callback function address

サンプル出口には、ご使用のリソースを解放するために変更する必要がある、2 つのステートメント PERFORM CLOSE-AND-FREE-DIRFILEPERFORM CLOSE-AND-FREE-MEMFILE があります。これを行うと、出口の前回のインスタンスがリソースを解放する前に異常終了した場合でも、そのリソースは確実に解放されます。