summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/tbs/tb0131.pp
blob: 07232d08c1142801d091b0955a37b565b17ce4d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{ Old file: tbs0152.pp }
{ End value of loop variable must be calculated before loop variable is initialized.                              OK 0.99.11 (PM) }

Program tbs0152;

{
  Shows wrong evaluation of loop boundaries. First end boundary must
  be calculated, only then Loop variable should be initialized.
  Change loop variable to J to see what should be the correct output.
}

PROCEDURE LGrow(VAR S : String;C:CHAR;Count:WORD);

 VAR  I,J :WORD;

BEGIN
  I:=ORD(S[0]);           { Keeping length in local data eases optimalisations}
  IF I<Count THEN
     BEGIN
     Move(S[1],S[Count-I+1],I);
     FOR I:=1 TO Count-I DO
       S[I]:=C;
     S[0]:=CHR(Count);
     END;
END;

Var S : string;

begin
  s:='abcedfghij';
  writeln ('s : ',s);
  lgrow (s,'1',17);
  writeln ('S : ',s);
  if s<>'1111111abcedfghij' then
    begin
       writeln('tbs0152 fails');
       halt(1);
    end;
end.