36 lines
758 B
Text
36 lines
758 B
Text
MODULE addstr;
|
|
|
|
IMPORT Out, Strings;
|
|
|
|
VAR str1, str2 : ARRAY 9 OF CHAR;
|
|
num, pos : INTEGER;
|
|
carry : BOOLEAN;
|
|
ch : CHAR;
|
|
|
|
BEGIN
|
|
str1 := "9999";
|
|
Out.Char ('"'); Out.String (str1); Out.String ('" + 1 = ');
|
|
num := Strings.Length (str1) - 1;
|
|
pos := num;
|
|
IF str1 [0] = '9' THEN INC (pos) END;
|
|
str2 [pos + 1] := 0X;
|
|
carry := TRUE;
|
|
REPEAT
|
|
ch := str1 [num];
|
|
IF carry THEN
|
|
ch := CHR (ORD (ch) + 1)
|
|
END;
|
|
IF ch > '9' THEN
|
|
carry := TRUE;
|
|
ch := '0'
|
|
ELSE
|
|
carry := FALSE
|
|
END;
|
|
str2 [pos] := ch;
|
|
DEC (num);
|
|
DEC (pos)
|
|
UNTIL num < 0;
|
|
IF carry THEN str2 [0] := '1' END;
|
|
Out.String (str2);
|
|
Out.Ln
|
|
END addstr.
|