program unit34(input,output);
type charstring=record
MaximumLength:integer;
ActualLength:integer;
Chars:array[1..100] of char;
{remember that our mechanism allows character strings of
various sizes}
end;
var string1,string2:charstring;
{this is not translated}
procedure readstring(var s:charstring);
var i:integer;
begin
i:=1;
while (i<=s.MaximumLength) and (not eoln(input)) do begin
read(s.Chars[i]);
i:=i+1;
end;
i:=i-1;
readln(input);
s.ActualLength:=i;
end;
{nor is this routine}
procedure writestring (s:charstring);
var i:integer;
begin
for i:=1 to s.ActualLength do begin
write(s.Chars[i]);
end;
writeln;
end;
{this is the key routine}
procedure cs(var string1,string2:charstring);
var i,j:integer;
begin
i:=string1.ActualLength+1;
j:=1;
while (i<=string1.maximumlength) and (j<=string2.actuallength) do
begin
string1.chars[i]:=string2.chars[j];
i:=i+1;
j:=j+1;
end;
string1.actuallength:=string1.actuallength+string2.actuallength+1
;
end;
begin
write('please give me two strings to concatenate, one per line');
string1.MaximumLength:=10;
string2.MaximumLength:=10;
readstring(string1);
readstring(string2);
write('string1 is ');writestring(string1);
write('string2 is ');writestring(string2);
cs(string1,string2);
write('the result of concatenation is ');writestring(string1);
end.