ILC(Instruction-Length Code)

PSWには次に実行すべき命令のアドレスが保持されている。しかしながら、割込みが生じた際にはその時点で実行していた命令のアドレスを求めたい場合がある。その時に使用されるのがILC(Instruction-Length Code)フラグである。PSWが示す命令アドレスからILCが示す命令長を引けば、実際に実行していた命令のアドレスがわかるようになっている。

ILCには命令長が長さそのものではなくフラグで長さが示されており、下記のように設定される。
    ILC 命令長
    x00 命令長は不明
    x01 2バイト命令
    x10 4バイト命令
    x11 6バイト命令

そのため、24ビット・アドレッシング・モードでBAL/BALR命令を実行すると、第1オペランドが示すレジスターの先頭ビットはBAL命令なら1、BALR命令なら0になる。これは、24ビット・アドレッシング・モードでのBAL/BALR命令では第1オペランドの先頭バイトにILC+CC+PGMmaskをセットするというS/360との互換性を保つ為の動作仕様によるもの。この動きを応用して、パラメーターに対してのフラグ・ビット設定や値の正負を示す為にBAL命令を利用する手法もある。例えば、GETMAIN Rマクロがそうである。領域アドレスが負数ならGETMAIN、そうでなければFREEMAINというインターフェースになっている。