These manipulate bits in fields.
Description: Turns on specified bits in a character field.
Legacy RPG400 Example:
*
* 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
* 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
Modern RPGLE Example:
// 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)
FieldA = %bitor(FieldA : '04567');
// 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)
FieldB = %bitor(FieldB : '3');
// 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)
FieldC = %bitor(FieldC : '3');
// 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)
FieldD = %bitor(FieldD : '3');
// 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)
FieldF = %bitor(FieldE : '04567');
// 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)
FieldH = %bitor(FieldH : X'C1');
// 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)
FieldJ = %bitor(FieldJ : HEXNC);
// Set on bits 0,4,5,6,7 in FieldK. Leave bits 1,2,3 unchanged.
// Factor 2 = 10001111
// FieldK = 01111111 (before)
// FieldK = 11111111 (after)
// Factor 2 = 10001111
// FieldA = 00000000 (before)
// FieldA = 10001111 (after)
FieldA = %bitor(FieldA : '04567');
// 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)
FieldB = %bitor(FieldB : '3');
// 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)
FieldC = %bitor(FieldC : '3');
// 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)
FieldD = %bitor(FieldD : '3');
// 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)
FieldF = %bitor(FieldE : '04567');
// 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)
FieldH = %bitor(FieldH : X'C1');
// 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)
FieldJ = %bitor(FieldJ : HEXNC);
// Set on bits 0,4,5,6,7 in FieldK. Leave bits 1,2,3 unchanged.
// Factor 2 = 10001111
// FieldK = 01111111 (before)
// FieldK = 11111111 (after)
