第 6 章 : IBM PC 表示属性

ここでは、グラフィカル環境でテキストベースの環境やテキストエミュレーションの表示属性を説明します。 グラフィカルオブジェクトやグラフィカルオブジェクト内でのテキストとは関連がありません。

テキスト属性

端末にテキスト文字が表示されるときは、文字が画面上にどう現れるかを記述したテキストに関連付けられた属性のセットをもっています。 文字は、特定の前景と背景色で表示されます。通常のテキストより輝いたり暗くなったり、前景と背景色が反転したり、光ったり、他の属性で表示されたりします。 使用可能な属性は、端末のハードウェアとソフトウェアに依存しますが、多くの共通な使用可能属性は、移植可能な COBOL アプリケーションで、端末の物理的な特性を知らなくても表示できます。

COBOL プログラムは、句に関連付けられた属性を指定する COBOL ACCEPT や DISPLAY 文を使用してこれらの属性をもったテキストを表示できます。 COBOL プログラムは、Panels などの各種の呼び出しインターフェイスを通じて表示属性を指定できます。

属性の符号化

呼び出しインターフェイスを使用して属性を指定する場合、属性のテキスト文字を対応する属性バイトに符号化すると便利です。 UNIX 環境では、COBOL RTS が属性バイトを解釈し、端末の terminfo エントリ値を通じて端末を制御します。

画面属性は、特定のテキスト文字に関連付けられた概念上の属性バイトで、画面上の各文字位置に 1 つあります。 いくつかの呼び出しインターフェイスは、直接設定できる画面属性の物理的な配列をもっています。

Adis が画面や Panels にアクセスすると、各テキスト文字に参照される画面属性を更新します。 ACCEPT や DISPLAY 文が参照しているテキストに属性を定義すると、それが画面属性に使用されます。属性が指定されない場合には、Adis はデフォルトの RTS 属性またはユーザ属性を使用します。使用可能であれば、参照される各テキスト文字に画面属性を使用します。 Adis が、たとえば、BLANK SCREEN 句を使用したり、Panels がパネルやスクロールされている行を初期化したりすると、画面属性はデフォルトまたはユーザ属性に設定されます。

デフォルトの RTS 属性は、DOS、Windows、および OS/2 上では黒の背景に茶色の前景です。UNIX では、terminfo データベースに属性が定義されていない限り、黒の背景に白の前景です。 UNIX を使用する場合は、『Terminfo データベースと端末装置』を参照してください。

符号化の種類

属性バイトには、4 つの符号化の種類があります。

UNIX:
汎用的な属性符号化を使用して、PC と UNIX 環境間で新しいアプリケーションの移植性をもたせて UNIX のデフォルトの符号化を上書きできます。 既存のアプリケーションに対しては、CBL_SCR_SET_PC_ATTRIBUTES ルーチンを呼び出して明示的な PC 符号化を選択します。 ディスプレイに対する terminfo エントリは、モノクロまたはカラーのどちらかの符号化を使用するかを決定します。

モノクロとカラーの PC 属性符号化と UNIX 属性符号化の詳細を次に示します。

IBM PC モノクロ属性符号化

DOS、Windows、OS/2:
次の表は、モノクロ表示の PC に対する属性バイトの構造を示しています。 ビット 0 が LSB の各バイトの最右で、ビット 7 が MSB です。 属性の各ビットの設定 (ビットを 1)、解除 (ビットを 0) の効果を次に示します。

DOS、Windows、および OS/2 では、COBOL システムライブラリルーチンでこれらの属性を設定できます。

ビット
属性
7 点滅
6-4 表示停止または反転表示設定
3 輝度
2-0 通常表示または下線表示

x"82" = フラッシュまたは通常表示
x"07" = 通常表示

他のビットの組み合わせは、次のとおりです。

  ビット 6、5、4
設定
ビット 6、5、4
解除
ビット 6、5、4
他の設定
ビット 2、1、0
解除
反転表示 非表示 通常表示
ビット 2、1 解除、ビット 0 設定 下線表示
他の
設定
通常表示

モノクロ表示での「通常」テキスト (黒の背景にハイライトなしのテキスト) は、カラー表示に使用されるいくつかのビットがモノクロディスプレイでは無視されるので、異なるビット設定でも可能になります。ただし、次の組み合わせのみが、モノクロとカラー表示の両方で「通常」テキストを作成します。

「通常」設定 = 0 0 0 0 0 1 1 1 (10 進 = 007 / 16 進 = 07)

カラーとモノクロ表示で使用されるプログラムから結果の一貫性を確保するために、この設定を使用し「通常」表示を行うことを確認する必要があります。

IBM PC のカラー属性符号化

DOS、Windows、OS/2:
次の表は、PC のカラー表示の属性バイトの構造を示しています。 各ビットの設定 (ビットを 1)、解除 (ビットを 0) の効果を次に示します。

DOS、Windows、および OS/2 では、COBOL システムライブラリルーチンでこれらの属性を設定できます。

ビット
属性
7 点滅
6-4 背景色
3 前景の輝度
2-0 前景 (テキスト) 色

ビット 6、5、および 4 は、次のように背景色を制御します。

ビット 6 5 4
効果
0 0 0
0 0 1
0 1 0
0 1 1 シアン
1 0 0
1 0 1 マゼンタ
1 1 0
1 1 1 明るい灰色

ビット 2、1、および 0 は、次のように前景 (テキスト) 色を制御します。

ビット
2 1 0

ビット 3 解除

ビット 3 設定
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1



シアン

マゼンタ

明るい灰色
暗い灰色
明るい青
明るい緑
明るいシアン
明るい赤
明るいマゼンタ


効果
1 0 1 0 1 1 0 1
(10 進 = 173、
16 進 = x"AD")
緑の背景に明るいマゼンタでフラッシュするテキスト。
0 0 0 0 0 1 0 0
(10 進 = 4、
16 進 = x"04")
黒の背景に赤のテキスト。
0 0 0 1 0 1 1 1
(10 進 = 23、
16 進 = x"17")
青の背景に明るい灰色のテキスト。

UNIX システムの属性符号化

UNIX:
デフォルトの UNIX 属性バイトは、カラー符号化をもたず、次のように単にモノクロ属性に符号化します。

ビット
属性
7-4 0 に設定
3 点滅
2 反転表示
1 下線
0 ハイライト

各ビットは、属性タイプを示します。 これらのビットは、ライブラリの番号による呼び出しルーチン x"A7 " を使用して設定できます。 たとえば、下線と点滅表示のような属性の組み合わせを可能にするために、属性バイトの複数ビットを設定できます。 使用可能な属性やその有効な組み合わせは、使用する端末の種別、terminfo エントリに依存します。

UNIX システムのハイライト表示

UNIX:
UNIX のデフォルトでは、COBOL プログラムが HIGHLIGHT や LOWLIGHT 句でテキストを表示する場合、RTS はそれぞれ、端末の terminfo に指定された太字モードと淡色表示モードを使用します。 太字や淡色表示モードが指定されていない場合は、HIGHLIGHT や LOWLIGHT 句は効果がありません。

バージョン 3.2 以前の COBOL 製品のデフォルト動作は異なっています。 これらの以前のバージョンに対して、COBOL プログラムが HIGHLIGHT 句でテキストを表示した場合には、その効果は、淡色表示モードが端末の terminfo に指定されているかどうかに依存します。 淡色表示モードが指定されている場合には、RTS は、デフォルトモードをハイライトテキストに、淡色表示モードを通常テキストに使用します。 淡色表示モードが指定されていない場合には、RTS は、太字モードをハイライトテキストに、デフォルトモードを通常テキストに使用します。 LOWLIGHT 句は、効果がなく、テキストは通常テキストで表示されます。

旧デフォルト動作を、COBATTR 環境変数を設定して選択することもできます。

属性ルーチン

次のルーチンは、キャラクタユーザインターフェイスで属性を使用する方法として使用可能です。

X"A7" 機能 6/7ユーザ属性
X"A7" 機能 16ユーザ属性の無効化と有効化
X"A7" 機能 20/21システム属性

次に、これらのルーチンを説明します。

ルーチンの説明


X"A7" 機能 6/7 - ユーザ属性

ユーザ属性の読み込みと設定を行います。

構文
call x"A7" using     function-code 
                     user-attribute 
           returning status-code
パラメータ

function-code       pic x comp-x.
user-attribute      pic x comp-x.
status-code         COBOL システムライブラリルーチン』の章にある『キー』を参照してください。
起動時の設定

function-code 次の動作を定義します。

6ユーザ属性の読み込み。
7ユーザ属性の設定。
user-attribute 機能 7 に対して、ユーザ属性を設定する値。

終了時の設定

user-attribute 機能 6 に対して、現在のユーザ属性の値。

備考

このライブラリルーチンを使用して、UNIX 上でユーザ属性を動的に変更できます。 このルーチンを使用する場合は、他の使用のときと同じように、どこでも使用できる通常の COBOL 構文のみを使用するという注意が必要です。

エラーを発生させないために、このルーチンを使用する前に、CBL_CLEAR_SCR ルーチンを呼び出します。

その他の参照項目

X"A7" 機能 16 - ユーザ属性の On/Off 設定
X"A7" 機能 20/21 - システム属性


X''A7'' 機能 16

ユーザ属性を有効化または無効化します。

構文
call x"A7" using function-code 
                 parameter
パラメータ

function-code       pic x comp-x.
parameter           pic x comp-x.
起動時の設定

function-code 値 16
parameter 次の必要な動作を示します。

0ユーザ属性を有効にします。
1ユーザ属性を無効にします。

終了時の設定

なし

備考

UNIX では、ユーザ属性の有効化のみ可能です。 ただし、ユーザ属性を通常に設定するために x"A7" 機能 7 を呼び出し、x"A7" 機能 16 をパラメータ値 0 で呼び出して、属性タイプを通常に設定することで、ユーザバイトの無効化をエミュレートできます。

エラーを発生させないために、このルーチンを使用する前に、CBL_CLEAR_SCR ルーチンを呼び出します。

その他の参照項目

ユーザ属性の使用
X"A7" 機能 6/7 - ユーザ属性


X"A7" 機能 20/21 - システム属性

システム属性の読み込みと設定を行います。

構文
call X"A7" using     function-code 
                     sys-attr-array 
           returning status-code
パラメータ

function-codepic x comp-x.
sys-attr-array次の定義をもつ集団項目。
sys-attr          pic x comp-x occurs 16 times.
status-codeCOBOL システムライブラリルーチン』の章にある『キー』を参照してください。
起動時の設定

function-code 次の動作を定義します。

20システム属性の読み込み。
21システム属性の設定。
sys-attr-array 設定するシステム属性を含みます。 次に示す属性が使用されます。

sys-attr-1非表示
sys-attr-2反転表示
sys-attr-3通常表示
sys-attr-4ハイライト表示
sys-attr-5通常表示で下線付き
sys-attr-6ハイライト表示で下線付き
sys-attr-7システムの通常表示
sys-attr-8フラッシュするハイライト表示
sys-attr-9未使用
sys-attr-10ユーザ定義の反転表示
sys-attr-11ユーザ定義の通常表示
sys-attr-12ユーザ定義のハイライト表示
sys-attr-13未使用
sys-attr-14未使用
sys-attr-15未使用
sys-attr-16オペレーティングシステムの通常表示

終了時の設定

sys-attr-array 読み込んだシステム属性を含みます。

備考

システム属性は、システムのある部分がいろいろな色や陰影付き (画面タイプに依存) で画面を表示するために使用されます。 このことは、システム属性を変更することで、表示の色付けを個別に選択できることを意味しています。 パラメータの一部として属性値を必要とする Panels のようなコンポーネントを使用する場合は、これらの呼び出しを使用できます。

いくつかの属性を変更したい場合は、まず現在の属性の設定を読み込み、行いたい変更で更新し、属性を設定します。このようにすることで、関与していない属性の設定に影響なく設定を行えます。

エラーを発生させないために、このルーチンを使用する前に、CBL_CLEAR_SCR ルーチンを呼び出します。

その他の参照項目

X"A7" 機能 6/7 - ユーザ属性


Copyright © 2006 Micro Focus (IP) Ltd. All rights reserved.