CBL_GET_SCR_LINE_DRAW

特定の線画文字を正しく表示するためにランタイム システムの画面出力ルーチンで必要となる文字値を定義する値のテーブルを返します。

制約事項: このルーチンはネイティブ COBOL でのみサポートされます。

構文:

call "CBL_GET_SCR_LINE_DRAW" using     function-code
                                       line-draw-table
                             returning status-code

パラメーター

function-code
呼び出しプロトタイプ (「説明の読み方」を参照):cblt-x1-compx
PIC:pic x comp-x
次のいずれかの値を指定します。

0:1 バイト線画テーブルを要求します

1:2 バイト線画テーブルを要求します

2:単一の 1 バイト線画コードを要求します

3:単一の 2 バイト線画コードを要求します

line-draw-table
cblt-get-scr-line-draw-buffer として定義されている集団 (以下を含む)
01   cblt-get-scr-line-draw-buffer        typedef.
  03 cblte-gsld-draw-code                 cblt-x1-compx.  *> pic x comp-x.
  03 cblte-gsld-dbcs-draw-char            cblt-x2-compx.  *> various pic x(2) Occurs n times
  03 cblte-gsld-draw-char 
     redefines cblte-gsld-dbcs-draw-char  cblt-x1-compx.  *> Occurs n times
status-code
説明の読み方」を参照。

入力パラメーター:

function-code = 2 または 3 の場合
cblte-gsld-draw-code
必要な文字のオフセット (形状記述)。

出力パラメーター:

cblte-gsld-draw-code
次のようにテーブル内で行われたマッピングを特定するために、ランタイム システムによって格納されたバイト。
ビット 0 から 2 の場合、線タイプは最初に使用可能な単厚、二重厚、拡張タイプ、または ASCII 文字にマッピングされます。
ビット 3 から 7 予約済み (ゼロに設定)
ビット 2 拡張タイプの線はサポート対象外 - マッピング済み
ビット 1 二重厚の線はサポート対象外 - マッピング済み
ビット 0 単厚の線はサポート対象外 - マッピング済み
function-code = 0 の場合
cblte-gsld-draw-char
1 バイト線画テーブル。テーブル内のバイトは次のように設定されます。
ビット 6 および 7 北方向の線
ビット 4 および 5 南方向の線
ビット 2 および 3 西方向の線
ビット 0 および 1 東方向の線
  • これらのビット ペアが組み合わされ、テーブルの索引として使用されます。
  • 無効な組み合わせは空白文字にマッピングされます。
  • 有効な組み合わせでは、少なくとも、ビット ペアのうちいずれか 2 つがそれぞれ 1 つのビット セットを保持している必要があります。
  • 2 つ以上のビット ペアを指定する必要があります。
function-code = 1 の場合
cblte-gsld-dbcs-draw-char
2 バイト線画テーブル。テーブル内のバイトは次のように設定されます。
ビット 6 および 7 北方向の線
ビット 4 および 5 南方向の線
ビット 2 および 3 西方向の線
ビット 0 および 1 東方向の線
function-code = 2 の場合
cblte-gsld-draw-char
要求した単一の 1 バイト線画コード。
function-code = 3 の場合
cblte-gsld-dbcs-draw-char
要求した単一の 2 バイト線画コード。

説明:

単一の線画文字 (function-code = 2 または 3) を要求する場合は、cblte-gsld-draw-code パラメーターを使用して、必要な文字をランタイム システムに通知します。特定の描画形状に対する cblte-gsld-draw-code パラメーターは、1 バイトを 4 つのビット ペアに分割することによって計算できます。各ビット ペアは、4 つの方向のいずれかに表示する線のタイプを定義します。

ビット 方向
7 および 6
5 および 4
3 および 2 西
1 および 0

各ビット ペアには、次の値のいずれかを指定できます。

00 指定された方向には線がない
01 単厚の線がある
10 二重厚の線がある
11 拡張タイプの線がある

拡張タイプは、点線など、追加の線画タイプがあるシステムでのみ使用できます。システムに追加のタイプが複数ある場合は、一度に 1 タイプしか使用できません。

たとえば、側線が単厚で底線が二重厚のボックスの左下を定義する画面ハンドラーの線用文字コードを確認する場合は、次のような計算を行います。

ビット ペア:

北: 01 (単)
南: 00 (空白)
西: 00 (空白)
東: 10 (二重)

この場合はバイナリ値 01000010、つまり 10 進値 66 になります。したがって、この形状に対する正しい文字を取得するためには、CBL_GET_SCR_LINE_DRAW を呼び出す前に、66 を cblte-gsld-draw-code に代入します。

function-code に 0 または 1 を指定して完全な線画テーブルを取得する場合は、上記のビット ペアのアルゴリズムを使用してテーブル内で目的の文字を見つけ、目的の形状に対する数値を得ることができます。ただし、デフォルトでは、COBOL の添え字は 0 ではなく 1 から始まります。この例を次に示します。

  03 cblte-gsld-draw-char    pic x occurs 256 times.

上記の構文を使用して完全な線画テーブルを取得する場合、正しい文字を見つけるためには、ビット ペアのアルゴリズムの結果に 1 を加える必要があります (そのため、1 バイトよりも大きな添え字が必要になります)。

ただし、次の構文を使用して、テーブルを取得することもできます。

function-code = 0 の場合:

  03 
filler  pic x.
  03 cblte-gsld-draw-char    pic x occurs 255 times.

function-code = 1 の場合:

  03 filler  pic x(2).
  03 cblte-gsld-dbcs-draw-char  pic x(2) occurs 255 times.

ビット ペアのアルゴリズムの結果に直接マッピングされる 0 から 255 の添え字を使用できるように NOBOUND コンパイラ指令が設定されていることを確認する必要があります。