× Home About AS400 Files on AS400 Bit Operations Compile Commands EBCDIC Table Edit Codes Message Subfile Reg. Expressions Sort Contact us


RPG - LANGUAGE

Bit Operations


The boolean or bit operators are available in native RPG as functions, %BITAND - %BITNOT - %BITOR - %BITXOR

%BITAND %BITNOT %BITOR %BITXOR
If the bits in the same position in all the input parameters are 1, BITAND will return 1 in that position.
Otherwise, it will return 0.
If any bit is 1 in at least one input parameter, BITOR will return 1 in that position.
Otherwise, it will return 0.
If any bit is 1 in only one input parameter, BITXOR will return 1 in that position.
Otherwise, it will return 0.
Each 1 in the input parameter is returned as 0 and each 0 is returned as 1.
Input 1 1001 0110
Input 2 1111 0000
Returns 1001 0000
Input 1 1001 0110
Input 2 1111 0000
Returns 1111 0110
Input 1 1001 0110
Input 2 1111 0000
Returns 0110 0110
Input 1001 0110
Returns 0110 1001
BITAND takes two or more input parameters and returns a value. The parameters and return value are either character or numeric (integer or signed numeric). BITOR takes two or more input parameters and returns a value. The parameters and return value are either character or numeric (integer or signed numeric). BITXOR takes two input parameters and returns a value. The parameters and return value are either character or numeric (integer or signed numeric). BITNOT takes one input parameter and returns a value. The parameter and return value are either character or numeric (integer or signed numeric).


As a more intuitive alternative, we have created TESTBIT(), SETBITON() and SETBITOFF().
TESTBIT(), SETBITON() and SETBITOFF() are free-form versions of opcodes TESTB, BITON and BITOFF. They are designed to be used in free form statements. Each takes two parameters. The first parameter is a one character field which is the result or target of the bit operation. The second parameter contains the bit numbers to be used - in SETBITON and SETBITOFF this can be up to 8 characters in length, while in TESTBIT the second parameter is only one character in length; for all three, this can be a variable or a constant.
Each is presented as sources in .txt files. Each file contains the prototyped subprocedure and an example of use.
There is a link to the DECIMAL - BINARY - HEXADECIMAL (EBCDIC) conversion table on the left panel.

TESTBIT ()

Download the TESTBIT here.

SETBITON ()

Download the SETBITON here.

SETBITOFF ()

Download the SETBITOFF here.
Download all 3 here.

TestBit()

TestBit () is a function - subprocedure - designed to illustrate a free-form version of the fixed-form opcode TESTB. It takes a character field, length 1, and a bit reference, range 0 - 7, and returns a 0 or 1 for off or on.
The bit reference is tested against the character field.
returnvalue = TESTBIT(charfield, bit).
where returnvalue = signed numeric field, length 1, value 0 or 1.
... charfield = character field, length 1.
... bit = signed numeric field, length 1.

SetBitOn ()

SetBitOn () is a function - subprocedure - designed to illustrate a free-form version of the fixed-form opcode BITON. It takes a character field, length 1, and a bit reference, range 0 - 7, There is no return value.
The bit reference is acts on the character field.
SETBITON(charfield, bits).
where charfield = character field, length 1.
... bits = character field of bit positions, length 8.

SetBitOff()

SetBitOff () is a function - subprocedure - designed to illustrate a free-form version of the fixed-form opcode BITOFF. It takes a character field, length 1, and a bit reference, range 0 - 7, There is no return value.
The bit reference is acts on the character field.
SETBITOFF(charfield, bits).
where charfield = character field, length 1.
... bits = character field of bit positions, length 8.



You can email us here or use the Contact Us menu tab.




a mckaysoftware website