55 lines
1.8 KiB
COBOL
55 lines
1.8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. bitwise-ops.
|
|
|
|
DATA DIVISION.
|
|
LOCAL-STORAGE SECTION.
|
|
01 a PIC 1(32) USAGE BIT.
|
|
01 b PIC 1(32) USAGE BIT.
|
|
01 result PIC 1(32) USAGE BIT.
|
|
01 result-disp REDEFINES result
|
|
PIC S9(9) USAGE COMPUTATIONAL.
|
|
LINKAGE SECTION.
|
|
01 a-int USAGE BINARY-LONG.
|
|
01 b-int USAGE BINARY-LONG.
|
|
|
|
PROCEDURE DIVISION USING a-int, b-int.
|
|
MOVE FUNCTION BOOLEAN-OF-INTEGER(a-int, 32) TO a
|
|
MOVE FUNCTION BOOLEAN-OF-INTEGER(b-int, 32) TO b
|
|
|
|
COMPUTE result = a B-AND b
|
|
DISPLAY "a and b is " result-disp
|
|
|
|
COMPUTE result = a B-OR b
|
|
DISPLAY "a or b is " result-disp
|
|
|
|
COMPUTE result = B-NOT a
|
|
DISPLAY "Not a is " result-disp
|
|
|
|
COMPUTE result = a B-XOR b
|
|
DISPLAY "a exclusive-or b is " result-disp
|
|
|
|
*> More complex operations can be constructed from these.
|
|
|
|
COMPUTE result = B-NOT (a B-XOR b)
|
|
DISPLAY "Logical equivalence of a and b is " result-disp
|
|
|
|
COMPUTE result = (B-NOT a) B-AND b
|
|
DISPLAY "Logical implication of a and b is " result-disp
|
|
|
|
*> Shift and rotation operators were only added in COBOL 2023.
|
|
|
|
COMPUTE result = a B-SHIFT-L b
|
|
DISPLAY "a shifted left by b is " result-disp
|
|
|
|
COMPUTE result = b B-SHIFT-R a
|
|
DISPLAY "b shifted right by a is " result-disp
|
|
|
|
COMPUTE result = a B-SHIFT-LC b
|
|
DISPLAY "a rotated left by b is " result-disp
|
|
|
|
COMPUTE result = b B-SHIFT-RC a
|
|
DISPLAY "b rotated right by a is " result-disp
|
|
|
|
GOBACK.
|
|
|
|
END PROGRAM bitwise-ops.
|