IDAWを使う理由

【備忘録】

EXCPは仮想アドレスなので関係ないが、EXCPVRあるいはSTARTIOを使う場合、データ領域とCCWはREALに固定されていなくてはならない。REAL領域に直接GETMAINすることは出来ないから(GETMAINは仮想記憶の要求)仮想ページをREALに固定することになる。
問題は2KBあるいは4KB以上の領域の場合。2KBや4KBを超えても仮想記憶上は連続されるが実記憶上連続されるかどうかはわからない。バラバラのフレームが割り当てられると考えねばならない(データセットを10cylで割り当ててもDASD内では1cylずつ10個のエクステントに分かれて割り当てられる場合もあることと同じ)。チャネルは連続したデータ領域を要求するため、実際に実行されるチャネル・プログラムではIDAWを使用してページサイズで領域アドレスを間接指定する必要がある。IDAWが示す領域の最大長が2KBなのか4KBなのかは、IDAWの形式とORB内に設定するオプション・ビットで決まる。いずれにせよ、IDAWを使わずに済むのはデータ長が2KB以下の場合のみ と考えた方がよい。

EXCPマクロでCCWを実行する限りは、データ長の理由からプログラム側でIDAW(仮想IDAW)を用意する必要はない。EXCP側で実CCWへ変換する際に必要に応じて実IDAWが組み立てられる。仮想IDAWが必要になるのは形式0CCWで31ビット域に入出力を行うか形式1CCWで64ビット域に入出力を行うような場合であるが、仮想IDAWなので2KBや4KB毎にIDAWを並べる必要は無い。この場合も仮想IDAWはEXCP側で実IDAWリストに変換される。