Free-Form Syntax | (not allowed - use the %BITOR built-in function. See Figure 196.) |
Code | Factor 1 | Factor 2 | Result Field | Indicators | ||
---|---|---|---|---|---|---|
BITON | Bit numbers | Character field |
The BITON operation causes bits identified in factor 2 to be set on (set to 1) in the result field. Bits not identified in factor 2 remain unchanged. Therefore, when using BITON to format a character, you should use both BITON and BITOFF: BITON to specify the bits to be set on (=1), and BITOFF to specify the bits to be set off (=0). Unless you explicitly set on or off all the bits in the character, you might not get the character you want.
If you want to assign a particular bit pattern to a character field, use the MOVE (Move) operation with a hexadecimal literal in factor 2.
Factor 2 can contain:
In the result field, specify a one-position character field. It can be an array element if each element in the array is a one-position character field.
For more information, see Bit Operations.
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D FieldA S 1A INZ(X'00')
D FieldB S 1A INZ(X'00')
D FieldC S 1A INZ(X'FF')
D FieldD S 1A INZ(X'C0')
D FieldE S 1A INZ(X'C0')
D FieldF S 1A INZ(X'81')
D FieldG S 1A INZ(X'4F')
D FieldH S 1A INZ(X'08')
D FieldI S 1A INZ(X'CE')
D FieldJ S 1A INZ(X'80')
D FieldK S 1A INZ(X'80')
D BITNC C CONST('0246')
D HEXNC C CONST(X'0F')
D HEXNC2 C CONST(X'F0')
C*0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* Set on bits 0,4,5,6,7 in FieldA. Leave bits 1,2,3 unchanged.
* Factor 2 = 10001111
* FieldA = 00000000 (before)
* FieldA = 10001111 (after)
C BITON '04567' FieldA
* Set on bit 3 in FieldB. Leave bits 0,1,2,4,5,6,7 unchanged.
* Factor 2 = 00010000
* FieldB = 00000000 (before)
* FieldB = 00010000 (after)
C BITON '3' FieldB
* Set on bit 3 in FieldC. Leave bits 0,1,2,4,5,6,7 unchanged.
* Setting on bit 3, which is already on, results in bit 3 remaining on.
* Factor 2 = 00010000
* FieldC = 11111111 (before)
* FieldC = 11111111 (after)
C BITON '3' FieldC
* Set on bit 3 in FieldD. Leave bits 0,1,2,4,5,6,7 unchanged.
* Factor 2 = 00010000
* FieldD = 11000000 (before)
* FieldD = 11010000 (after)
C BITON '3' FieldD
* Set on bits 0 and 1 in FieldF. Leave bits 2,3,4,5,6,7 unchanged.
* (Setting on bit 0, which is already on, results in bit 0 remaining on.)
* Factor 2 = 11000000
* FieldF = 10000001 (before)
* FieldF = 11000001 (after)
C BITON FieldE FieldF
* X'C1' is equivalent to literal '017', bit pattern 11000001.
* Set on bits 0,1,7 in FieldH. Leave bits 2,3,4,5,6 unchanged.
* Factor 2 = 11000001
* FieldH = 00001000 (before)
* FieldH = 11001001 (after)
C BITON X'C1' FieldH
* HEXNC is equivalent to literal '4567', bit pattern 00001111.
* Set on bits 4,5,6,7 in FieldJ. Leave bits 0,1,2,3 unchanged.
* Factor 2 = 00001111
* FieldJ = 10000000 (before)
* FieldJ = 10001111 (after)
C BITON HEXNC FieldJ
C RETURN