Binary coded decimal: Difference between revisions
Content added Content deleted
(→{{header|ALGOL W}}: Use unsigned BCD and added addition/subtraction of larger numbers) |
(→{{header|PL/M}}: Show the same 12-digit arithmetic as the Algol 68 and Algol W samples) |
||
Line 841: | Line 841: | ||
A = 01H; |
A = 01H; |
||
DO I = 1 TO 10; /* REPEATEDLY ADD |
DO I = 1 TO 10; /* REPEATEDLY ADD 11111111111 TO THE NUMBER */ |
||
CALL PR$BCD( F ); |
CALL PR$BCD( F ); |
||
CALL PR$BCD( E ); |
CALL PR$BCD( E ); |
||
Line 848: | Line 848: | ||
CALL PR$BCD( B ); |
CALL PR$BCD( B ); |
||
CALL PR$BCD( A ); |
CALL PR$BCD( A ); |
||
CALL PR$STRING( .' + |
CALL PR$STRING( .' + 011111111111 = $' ); |
||
A = DEC( A + |
A = DEC( A + 11H ); /* THE PARAMETER TO THE DEC BUILTIN FUNCTION */ |
||
B = DEC( B PLUS |
B = DEC( B PLUS 11H ); /* MUST BE A CONSTANT OR UNSCRIPTED VARIABLE */ |
||
C = DEC( C PLUS |
C = DEC( C PLUS 11H ); /* +/-/PLUS/MINUS ANOTHER CONSTANT OR */ |
||
D = DEC( D PLUS |
D = DEC( D PLUS 11H ); /* UNSUBSCRIPTED VARIABLE */ |
||
E = DEC( E PLUS |
E = DEC( E PLUS 11H ); /* ( WHICH MUST CONTAIN 2-DIGIT BCD VALUES ).*/ |
||
F = DEC( F PLUS |
F = DEC( F PLUS 1 ); /* PLUS/MINUS PERFORM ADDITION/SUBTRACTION */ |
||
CALL PR$BCD( F ); /* INCLUDING THE CARRY FROM THE PREVIOUS */ |
CALL PR$BCD( F ); /* INCLUDING THE CARRY FROM THE PREVIOUS */ |
||
CALL PR$BCD( E ); /* OPERATION, +/- IGNORE THE CARRY. */ |
CALL PR$BCD( E ); /* OPERATION, +/- IGNORE THE CARRY. */ |
||
Line 864: | Line 864: | ||
END; |
END; |
||
DO I = 1 TO 10; /* REPEATEDLY SUBTRACT 11111111111 FROM THE NUMBER */ |
|||
DO I = 1 TO 10; /* REPEATEDLY SUBTRACT 987654321 AND DISPLAY THE RESULT */ |
|||
CALL PR$BCD( F ); |
CALL PR$BCD( F ); |
||
CALL PR$BCD( E ); |
CALL PR$BCD( E ); |
||
Line 873: | Line 871: | ||
CALL PR$BCD( B ); |
CALL PR$BCD( B ); |
||
CALL PR$BCD( A ); |
CALL PR$BCD( A ); |
||
CALL PR$STRING( .' - |
CALL PR$STRING( .' - 011111111111 = $' ); |
||
A = DEC( A - |
A = DEC( A - 11H ); |
||
B = DEC( B MINUS |
B = DEC( B MINUS 11H ); |
||
C = DEC( C MINUS |
C = DEC( C MINUS 11H ); |
||
D = DEC( D MINUS |
D = DEC( D MINUS 11H ); |
||
E = DEC( E MINUS |
E = DEC( E MINUS 11H ); |
||
F = DEC( F MINUS |
F = DEC( F MINUS 1 ); |
||
CALL PR$BCD( F ); |
CALL PR$BCD( F ); |
||
CALL PR$BCD( E ); |
CALL PR$BCD( E ); |
||
Line 889: | Line 887: | ||
END; |
END; |
||
EOF |
EOF |
||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
012345678901 + |
012345678901 + 011111111111 = 023456790012 |
||
023456790012 + 011111111111 = 034567901123 |
|||
012469135690 + 123456789 = 012592592479 |
|||
034567901123 + 011111111111 = 045679012234 |
|||
012592592479 + 123456789 = 012716049268 |
|||
045679012234 + 011111111111 = 056790123345 |
|||
012716049268 + 123456789 = 012839506057 |
|||
056790123345 + 011111111111 = 067901234456 |
|||
012839506057 + 123456789 = 012962962846 |
|||
067901234456 + 011111111111 = 079012345567 |
|||
012962962846 + 123456789 = 013086419635 |
|||
079012345567 + 011111111111 = 090123456678 |
|||
013086419635 + 123456789 = 013209876424 |
|||
090123456678 + 011111111111 = 101234567789 |
|||
013209876424 + 123456789 = 013333333213 |
|||
101234567789 + 011111111111 = 112345678900 |
|||
013333333213 + 123456789 = 013456790002 |
|||
112345678900 + 011111111111 = 123456790011 |
|||
013456790002 + 123456789 = 013580246791 |
|||
123456790011 - 011111111111 = 112345678900 |
|||
999999999999 - 987654321 = 999012345678 |
|||
112345678900 - 011111111111 = 101234567789 |
|||
999012345678 - 987654321 = 998024691357 |
|||
101234567789 - 011111111111 = 090123456678 |
|||
998024691357 - 987654321 = 997037037036 |
|||
090123456678 - 011111111111 = 079012345567 |
|||
997037037036 - 987654321 = 996049382715 |
|||
079012345567 - 011111111111 = 067901234456 |
|||
996049382715 - 987654321 = 995061728394 |
|||
067901234456 - 011111111111 = 056790123345 |
|||
995061728394 - 987654321 = 994074074073 |
|||
056790123345 - 011111111111 = 045679012234 |
|||
994074074073 - 987654321 = 993086419752 |
|||
045679012234 - 011111111111 = 034567901123 |
|||
993086419752 - 987654321 = 992098765431 |
|||
034567901123 - 011111111111 = 023456790012 |
|||
992098765431 - 987654321 = 991111111110 |
|||
023456790012 - 011111111111 = 012345678901 |
|||
991111111110 - 987654321 = 990123456789 |
|||
</pre> |
</pre> |
||