ACCEPT 文でのカーソルの位置指定

CURSOR IS 句は、ACCEPT 操作開始時にカーソルをフィールド内のどこに配置するかを指定し、ACCEPT 操作の終了時にカーソル位置を返します。プログラムで CURSOR IS 句を指定しない場合、カーソルは、各 ACCEPT 操作ごとに最初のフィールドの先頭に配置されます。

構文:

CURSOR IS 句は、特殊名段落で次のように定義されます。

 special-names.
     cursor is cursor-position.

cursor-position は作業場所節で次のように定義されるフィールドです。

 01 cursor-position.
     03 cursor-row       pic 99.
     03 cursor-column    pic 99.

または

 01 cursor-position.
     03 cursor-row       pic 999.
     03 cursor-column    pic 999.

詳細は次のとおりです。

cursor-row
カーソルが配置される行です。有効な数値は、1 から画面上の行数までの数です。
cursor-column
カーソルが配置される列です。有効な数値は、1 から画面上の列数までの数です。

操作

ACCEPT 文の実行時は常に、拡張 ACCEPT/DISPLAY 構文が、cursor-position で指定された位置にカーソルを最初に配置します。指定された位置が無効である場合 (つまり、cursor-row または cursor-column に有効な値が入っていない場合) には、カーソルは画面上の最初のフィールドの先頭に配置されます。

cursor-position に指定されている値が有効な場合、拡張 ACCEPT/DISPLAY 構文はフィールドすべてを検索して、要求されたカーソル位置があるかを調べます。その位置が存在する場合、カーソルは要求された場所に配置されます。その位置が存在しない場合、カーソルは最初のフィールドの先頭に配置されます。そのため、カーソルを最初のフィールドの先頭に配置する場合は、cursor-row および cursor-column の両方を 1 に設定します。

定義した位置が数字編集フィールドの抑制文字または挿入文字である場合、カーソルはその右側にある最初の使用可能な文字に移動します。データ項目がそれ以上ない場合は、カーソルは画面上の最初のデータ項目に戻ります。

ACCEPT を終了する際に、cursor-position の値が ACCEPT 開始時に有効であった場合は、終了キーを押すとカーソル位置が cursor-position に戻ります。ただし、現在のカーソル位置とは必ずしも同じになりません。拡張 ACCEPT/DISPLAY 構文は通常、ACCEPT 操作の終了時にカーソルをフィールドの末尾に移動し、相対位置指定 ACCEPT 文が画面上の正しい位置から開始します。

ACCEPT 操作の開始時に cursor-position の値が無効であった場合には、ACCEPT 操作終了時に cursor-position の内容は変化しません。

この機能の使用の一例は、メニュー方式の操作で、オペレーターに要求される操作は、必要な選択箇所に対応する画面上の位置にカーソルを移動するだけでよいことです。オペレーターの選択は、cursor-position の戻り値で決定できます。