2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
107
Task/Four-bit-adder/COBOL/four-bit-adder.cobol
Normal file
107
Task/Four-bit-adder/COBOL/four-bit-adder.cobol
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
program-id. test-add.
|
||||
environment division.
|
||||
configuration section.
|
||||
special-names.
|
||||
class bin is "0" "1".
|
||||
data division.
|
||||
working-storage section.
|
||||
1 parms.
|
||||
2 a-in pic 9999.
|
||||
2 b-in pic 9999.
|
||||
2 r-out pic 9999.
|
||||
2 c-out pic 9.
|
||||
procedure division.
|
||||
display "Enter 'A' value (4-bits binary): "
|
||||
with no advancing
|
||||
accept a-in
|
||||
if a-in (1:) not bin
|
||||
display "A is not binary"
|
||||
stop run
|
||||
end-if
|
||||
display "Enter 'B' value (4-bits binary): "
|
||||
with no advancing
|
||||
accept b-in
|
||||
if b-in (1:) not bin
|
||||
display "B is not binary"
|
||||
stop run
|
||||
end-if
|
||||
call "add-4b" using parms
|
||||
display "Carry " c-out " result " r-out
|
||||
stop run
|
||||
.
|
||||
end program test-add.
|
||||
|
||||
program-id. add-4b.
|
||||
data division.
|
||||
working-storage section.
|
||||
1 wk binary.
|
||||
2 i pic 9(4).
|
||||
2 occurs 5.
|
||||
3 a-reg pic 9.
|
||||
3 b-reg pic 9.
|
||||
3 c-reg pic 9.
|
||||
3 r-reg pic 9.
|
||||
2 a pic 9.
|
||||
2 b pic 9.
|
||||
2 c pic 9.
|
||||
2 a-not pic 9.
|
||||
2 b-not pic 9.
|
||||
2 c-not pic 9.
|
||||
2 ha-1s pic 9.
|
||||
2 ha-1c pic 9.
|
||||
2 ha-1s-not pic 9.
|
||||
2 ha-1c-not pic 9.
|
||||
2 ha-2s pic 9.
|
||||
2 ha-2c pic 9.
|
||||
2 fa-s pic 9.
|
||||
2 fa-c pic 9.
|
||||
linkage section.
|
||||
1 parms.
|
||||
2 a-in pic 9999.
|
||||
2 b-in pic 9999.
|
||||
2 r-out pic 9999.
|
||||
2 c-out pic 9.
|
||||
procedure division using parms.
|
||||
initialize wk
|
||||
perform varying i from 1 by 1
|
||||
until i > 4
|
||||
move a-in (5 - i:1) to a-reg (i)
|
||||
move b-in (5 - i:1) to b-reg (i)
|
||||
end-perform
|
||||
perform simulate-adder varying i from 1 by 1
|
||||
until i > 4
|
||||
move c-reg (5) to c-out
|
||||
perform varying i from 1 by 1
|
||||
until i > 4
|
||||
move r-reg (i) to r-out (5 - i:1)
|
||||
end-perform
|
||||
exit program
|
||||
.
|
||||
|
||||
simulate-adder section.
|
||||
move a-reg (i) to a
|
||||
move b-reg (i) to b
|
||||
move c-reg (i) to c
|
||||
add a -1 giving a-not
|
||||
add b -1 giving b-not
|
||||
add c -1 giving c-not
|
||||
|
||||
compute ha-1s = function max (
|
||||
function min ( a b-not )
|
||||
function min ( b a-not ) )
|
||||
compute ha-1c = function min ( a b )
|
||||
add ha-1s -1 giving ha-1s-not
|
||||
add ha-1c -1 giving ha-1c-not
|
||||
|
||||
compute ha-2s = function max (
|
||||
function min ( c ha-1s-not )
|
||||
function min ( ha-1s c-not ) )
|
||||
compute ha-2c = function min ( c ha-1c )
|
||||
|
||||
compute fa-s = ha-2s
|
||||
compute fa-c = function max ( ha-1c ha-2c )
|
||||
|
||||
move fa-s to r-reg (i)
|
||||
move fa-c to c-reg (i + 1)
|
||||
.
|
||||
end program add-4b.
|
||||
Loading…
Add table
Add a link
Reference in a new issue