Returns a table of values defining the character values required by the run-time system screen output routines to correctly display given line drawing characters.
Restriction: This routine is supported for native COBOL only.
Syntax:
call "CBL_GET_SCR_LINE_DRAW" using function-code
line-draw-table
returning status-code
Parameters
-
function-code
- Call prototype (see
Key): cblt-x1-compx
- Picture: pic x comp-x.
- Contains one of the following:
0: Request for single-byte line drawing table
1: Request for double-byte line drawing table
2: Request for a single single-byte line drawing code
3: Request for a single double-byte line drawing code
-
line-draw-table
- Group predefined as
cblt-get-scr-line-draw-buffer containing:
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
- See
Library Routines - Key.
On Entry:
- With
function-code = 2 or 3
-
-
cblte-gsld-draw-code
- The offset (shape description) of the character required.
On Exit:
-
cblte-gsld-draw-code
- Byte filled in by the run-time system to determine any mapping that has taken place in the table as follows:
For bits 0 through 2, line types are mapped to the first available of single, double, extended or ASCII character.
bit 7 - 3
|
Reserved (set to 0)
|
bit 2
|
Extended lines not supported - mapped
|
bit 1
|
Double lines not supported - mapped
|
bit 0
|
Single lines not supported - mapped
|
- With
function-code = 0
-
-
cblte-gsld-draw-char
- The single-byte line drawing table. Bytes in the table are arranged as follows:
bits 6 and 7
|
The North line.
|
bits 4 and 5
|
The South line
|
bits 2 and 3
|
The West line
|
bits 0 and 1
|
The East line
|
- The bit pairs are combined and used as an index into the table.
- Non-valid combinations will map to a space.
- For a valid combination any two of the bit pairs must each have at least one bit set.
- You must specify at least 2 bit pairs.
- With
function-code = 1
-
-
cblte-gsld-dbcs-draw-char
- The double-byte line drawing table. Bytes in the table are arranged as follows:
bits 6 and 7
|
The North line.
|
bits 4 and 5
|
The South line
|
bits 2 and 3
|
The West line
|
bits 0 and 1
|
The East line
|
- With
function-code = 2
-
-
cblte-gsld-draw-char
- The requested single single-byte line drawing code.
- With
function-code = 3
-
-
cblte-gsld-dbcs-draw-char
- The requested single double-byte line drawing code.
Comments:
When requesting a single line drawing character (function-code = 2 or 3), the cblte-gsld-draw-code parameter is used to tell the run-time system which character you require. The cblte-gsld-draw-code parameter for a given cblte-gsld-drawing shape can be calculated by splitting a byte into four bit-pairs. Each bit-pair defines the type of line that you want to appear in one of the four directions:
Each bit-pair can have one of the following values:
The extended line type is available only for systems which have additional types of line drawing, such as dotted lines. If a system has more than one additional type, only one can be used at a time.
For example, if you wished to find out the screen handler's character code for a line which would define the bottom-left of a box with single thickness sides and a double thickness bottom, you would make the following calculations:
Bit-pairs:
This gives the binary value of 01000010 or a decimal value of 66. Therefore, you would move 66 to cblte-gsld-draw-code before calling CBL_GET_SCR_LINE_DRAW in order to obtain the correct character for this shape.
If you use function-code = 0 or 1 to obtain the full line drawing table, a given character can be located in the table using the bit-pair algorithm described above, which yields a numeric value for a given shape. However, by default, COBOL subscripts begin at one, not zero. Therefore, if you use the following construct to obtain the full line drawing table:
you need to add 1 to the result of the bit-pair algorithm to locate the correct character (and, therefore, need a subscript which is larger than one byte).
However, you can use the following construct to obtain the table:
With function-code = 0:
With function-code = 1:
You must ensure that the NOBOUND Compiler directive is set to enable you to use subscripts 0 to 255, which map directly onto the result from the bit-pair algorithm.