Binary coded decimal: Difference between revisions

→‎{{header|PL/M}}: Show the same 12-digit arithmetic as the Algol 68 and Algol W samples
(→‎{{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:
A = 01H;
 
DO I = 1 TO 10; /* REPEATEDLY ADD 12345678911111111111 TO THE NUMBER AND DISPLAY IT */
CALL PR$BCD( F );
CALL PR$BCD( E );
Line 848:
CALL PR$BCD( B );
CALL PR$BCD( A );
CALL PR$STRING( .' + 123456789011111111111 = $' );
A = DEC( A + 89H11H ); /* THE PARAMETER TO THE DEC BUILTIN FUNCTION */
B = DEC( B PLUS 67H11H ); /* MUST BE A CONSTANT OR UNSCRIPTED VARIABLE */
C = DEC( C PLUS 45H11H ); /* +/-/PLUS/MINUS ANOTHER CONSTANT OR */
D = DEC( D PLUS 23H11H ); /* UNSUBSCRIPTED VARIABLE */
E = DEC( E PLUS 1H11H ); /* ( WHICH MUST CONTAIN 2-DIGIT BCD VALUES ).*/
F = DEC( F PLUS 01 ); /* PLUS/MINUS PERFORM ADDITION/SUBTRACTION */
CALL PR$BCD( F ); /* INCLUDING THE CARRY FROM THE PREVIOUS */
CALL PR$BCD( E ); /* OPERATION, +/- IGNORE THE CARRY. */
Line 864:
END;
 
A,DO B,I C,= 1 TO 10; D, E, F = 099H; /* SETREPEATEDLY THESUBTRACT 1211111111111 DIGITFROM BCDTHE NUMBER TO 999999999999 */
 
DO I = 1 TO 10; /* REPEATEDLY SUBTRACT 987654321 AND DISPLAY THE RESULT */
CALL PR$BCD( F );
CALL PR$BCD( E );
Line 873 ⟶ 871:
CALL PR$BCD( B );
CALL PR$BCD( A );
CALL PR$STRING( .' - 987654321011111111111 = $' );
A = DEC( A - 21H11H );
B = DEC( B MINUS 43H11H );
C = DEC( C MINUS 65H11H );
D = DEC( D MINUS 87H11H );
E = DEC( E MINUS 9H11H );
F = DEC( F MINUS 01 );
CALL PR$BCD( F );
CALL PR$BCD( E );
Line 889 ⟶ 887:
END;
 
EOF</lang>
</lang>
{{out}}
<pre>
012345678901 + 123456789011111111111 = 012469135690023456790012
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>
 
3,021

edits