mirror of
https://github.com/moshix/mvs.git
synced 2026-01-11 23:43:00 +00:00
91 lines
5.0 KiB
Plaintext
91 lines
5.0 KiB
Plaintext
Refer to the 3270 Datastream Application Programming
|
||
Reference, and the CICS Application Programming Guide
|
||
|
||
Type Code Possible values and meaning
|
||
ATTRIBUTE X'C0' Same attribute bytes used with SF order (X'1d)'
|
||
COLOR x'2842' X'F1' to x'F7': Blue, Red, Pink, Green, Turq, Yellow, White
|
||
HILIGHT X'41' X'00' (No hilight) x'F1' (blink) x'F2' (reverse) x'F4'(underline)
|
||
OUTLINE X'C2' From X'00' to X'0F', in any combination of the following values: x'01' (under), x'02' (right), x'04'(over), x'08'(left)
|
||
|
||
So, if we want our arrow in the above example to be yellow, we
|
||
need to specify a colour code x'42' followed by the yellow value
|
||
x'F6'. And we must also indicate the basic attribute that makes
|
||
the field protected (X'F8') preceded by the attribute indicator
|
||
x'C0'. This gives us two byte pairs in our SFE order, which
|
||
means the order will be:
|
||
x'29Ø242F6CØF8' (SFE: 2 byte pairs) (colour: yellow) (attrb: prot,askip)
|
||
This SFE order replaces the simple SF order (x'1DF0') that we
|
||
had previously, which means that our stream becomes:
|
||
x'114Ø4Ø1DFØ114D7429Ø242F6CØF8'===>x'1D4Ø13114E581DFØ'(Enter your name)
|
||
If we also want our arrow in reverse video, then we add another
|
||
byte pair – hilight (X'41') with the desired value x'F2' – and our
|
||
SFE, now with three byte pairs, becomes
|
||
X'290342F641F2C0F8'. The sequence in which the byte pairs
|
||
are specified is not important, as long as they correspond to the
|
||
total number indicated.
|
||
The last type of attribute mentioned above – the outline – is
|
||
probably less known and less used than the others. Indeed, I
|
||
only discovered it quite recently, and not all 3270 emulators can
|
||
display outline.
|
||
Field outlining consists of drawing a thin line above, below, or
|
||
at the sides of a field, in any combination. The above and below
|
||
lines are drawn just in between the text rows, and don’t occupy
|
||
a character cell. The left line is drawn in the ‘dead’ byte (the
|
||
position just before a field, where the cursor never stops) that
|
||
precedes the field, and the right line goes into the next field’s
|
||
dead byte; both left and right lines occupy a character cell.
|
||
The field outline code is x'C2', and the value is a byte in which
|
||
the four left bits are zero and the four right bits each indicate a
|
||
line position, in any desired combination, so the byte can range
|
||
from x'00' (no outlining) to x'15' (full box).
|
||
If we wanted our example input field to be fully outlined, so that
|
||
it appeared with a box drawn all around it, we would start by
|
||
replacing the start field (SF) order with an SFE order. We would
|
||
then choose the byte pairs: the outline pair (x'C20F'), the
|
||
attribute pair (X'C040'), and perhaps also a colour pair, to avoid
|
||
the default colour. Let’s imagine, however, that in this case we
|
||
aren’t bothered about colour specification. Our SFE will be:
|
||
x'2902C20FC040', and our stream becomes:
|
||
x'114Ø4Ø1DFØ114D7429Ø242F6CØF8'===>x'29Ø2C2ØFCØ4Ø13114E581DFØ'(Enter
|
||
your name)
|
||
Note that outline should not be confused with underline (which
|
||
is part of the ‘hilight’ feature). An underlined field has a thicker
|
||
line than a lower outline. It’s also possible to have a field both
|
||
outlined and underlined, and the two lines will be clearly distinct.
|
||
Note also that the drop-down boxes of ISPF (and DITTO)
|
||
menus are not made with outlining (this is discussed in more
|
||
detail later).
|
||
The last order to discuss is the ‘set attribute’ (SA) order, which
|
||
modifies the characteristics of a field starting at the point where
|
||
it is inserted. To undo this modification and restore the field to
|
||
its previous characteristic, issue another SA order for the same
|
||
characteristic with the default value x'00'. It consists of three
|
||
bytes: the SA order code (x'28') followed by a single byte pair,
|
||
identical to the byte pairs used in SFE. An SA can be inserted
|
||
anywhere in a stream: after a set buffer address order, in the
|
||
middle of text, and so on. Unlike start field orders that take up
|
||
a ‘dead’ byte, SA orders don’t occupy the screen, so you can
|
||
assign a different colour to each letter of a word, or make it
|
||
appear as reverse, or blinking, etc. By the way, this is how the
|
||
ISPF editor creates those effects when you FIND text or when
|
||
|
||
you HILIGHT the syntax of a program source.
|
||
Let’s say that you want the last sentence of our example stream
|
||
to appear with the parentheses blinking, and a different colour
|
||
to each letter of the word ‘Enter’. The SAs to use would be
|
||
x'2841F1' (blink), x'284100' (undo the blink), and x'2842Fn' for
|
||
the colours, where n is the colour number.
|
||
That part of the stream would become:
|
||
x'2841F1'('2841ØØ 2842F4'E'2842F7'n'2842F1't'2842F3'e'2842F5'r your name
|
||
x'2841F1')
|
||
which reads: set blink, ‘(’, undo blink, set colour green, ‘E’, set
|
||
colour white, ‘n’, etc.
|
||
I suggest that you pause here and practise a little based on the
|
||
above examples, until you become familiar with the whole
|
||
process, starting simply and gradually increasing the degree of
|
||
complexity. The most common causes of error are malformed
|
||
addresses, incorrect values in byte pairs, incorrect number of
|
||
byte pairs specified in SFE, and so on.
|
||
|
||
https://www.cbttape.org/xephon/xephons/sna0212.pdf
|