与えられた線画文字を正しく表示するために、ランタイム システム画面出力ルーチンにより要求された文字値を定義する値の表を戻す。
call "CBL_GET_SCR_LINE_DRAW" using function-code line-draw-table returning status-code
呼び出しプロトタイプ使用時 ( 説明の読み方) | PIC (32 ビット システム) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
function-code | cblt-x1-compx | pic x comp-x. | |||||||||||
Contains one of the following:
|
|||||||||||||
line-draw-table | Group predefined as containing: | Group containing: | |||||||||||
With function-code = 0: | |||||||||||||
cblte-gsld-draw-code | cblt-x1-compx | pic x comp-x. | |||||||||||
cblte-gsld-draw-char | cblte-gsld-draw-char occurs 256 times | pic x occurs 256 times. | |||||||||||
With function-code = 1: | |||||||||||||
cblte-gsld-draw-code | cblt-x1-compx | pic x comp-x. | |||||||||||
cblte-gsld-dbcs-draw-char | cblte-gsld-dbcs-draw-char occurs 256 times | pic x(2) occurs 256 times. | |||||||||||
With function-code = 2: | |||||||||||||
cblte-gsld-draw-code | cblt-x1-compx | pic x comp-x. | |||||||||||
cblte-gsld-draw-char | cblte-gsld-draw-char | pic x. | |||||||||||
With function-code = 3: | |||||||||||||
cblte-gsld-draw-code | cblt-x1-compx | pic x comp-x. | |||||||||||
cblte-gsld-dbcs-draw-char | cblte-gsld-dbcs-draw-char | pic x(2). | |||||||||||
status-code | 説明の読み方 参照 |
function-codeが2または3の場合: | |
cblte-gsld-draw-code | 要求される文字の相対番地(形状記述) |
cblte-gsld-draw-code | 以下のような表内で発生した任意の写像を確定するためにランタイム システムにより充てんされるバイト。
ビット0~2については、線種は単厚、二重厚、拡張あるいはASCII文字のうち最初に使用可能となったものに写像される。 |
||||||||
function-codeが0の場合: | |||||||||
cblte-gsld-draw-char | 1バイト線画表。表内のバイトは次のように配列されている。
|
||||||||
function-codeが1の場合: | |||||||||
cblte-gsld-dbcs-draw-char | 2バイト線画表。表中のバイトは以下のとおり:
|
||||||||
function-codeが2の場合: | |||||||||
cblte-gsld-draw-char | 要求された1つの1バイト線画コード | ||||||||
function-codeが3の場合: | |||||||||
cblte-gsld-dbcs-draw-char | 要求された1つの2バイト線画コード |
個々の線画文字(function-code = 2 or 3)を要求している場合、どの文字を必要としているのかをランタイム システムに知らせるのに、cblte-gsld-draw-code パラメーターが使用される。与えられた線画形状用のcblte-gsld-draw-code パラメーターは、次のように計算できる。バイトを4ビットペアに分割することによって値は得られる。各ビットペアは、4方向の内のいずれかの方向に引く線の種類を定義する。
ビット | 方向 |
7および6 | 北 |
5および4 | 南 |
3および2 | 西 |
1および0 | 東 |
各ビットペアは次の値のいずれかを取る。
00 | 与えられた方向には線がない。 |
01 | 単厚の線がある。 |
10 | 二重厚の線がある。 |
11 | 拡張型の線がある。 |
点線のような付加的な種類の線引きがあるシステムにおいてのみ、拡張線種は使用できる。システムに2線種以上ある場合、一度には1種類しか使用できない。
たとえば、側線が単厚で底線が二重厚の箱の左下を定義する画面ハンドラーの線用文字コードを知りたい場合、次のような計算をする。
ビットペア:
北: | 01 (単) |
南: | 00 (空白) |
西: | 00 (空白) |
東: | 10 (二重) |
これは2進値01000010または10進値66を意味する。従って、この形状のための正しい文字を得るには、CBL_GET_SCR_LINE_DRAWを呼び出す前に66をcblte-gsld-draw-codeに転記することになる。
完全な線引き表を得るためにfunction-codeで0または1を使用すると、与えられた文字は上記のビットペアアルゴリズムを使用して表から見つけられる。このビットペアアルゴリズムは与えられた形状用の数値を生成する。しかし、省略時は、COBOL添字はゼロではなく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.
NOBOUNDコンパイラ指令が設定されて、ビットペアアルゴリズムの結果に直接写像する添字0~255を使用できるようにしておく必要がある。