CONST BLANK = ' ';
TYPE CHAR80 = PACKED ARRAY [1..80] OF CHAR;
FUNCTION trim (C : CHAR80) : CHAR80;
VAR
I : INT;
IN_QUOTE : BOOLEAN;
J,K : INT;
T : CHAR80;
BEGIN
I := 1;
WHILE (I<80) AND (C[I] = BLANK) DO
I := I + 1;
IN_QUOTE := FALSE;
FOR J := I TO 80 DO
BEGIN
IF (C[J] = #39) THEN
IF (J=1) OR ((C[J+1]=BLANK) AND (C[J+2]=BLANK)) THEN
IN_QUOTE := NOT IN_QUOTE;
T[J-(I-1)] := C[J];
END;
W := 80;
WHILE (W > 0) AND (T[W]=BLANK) DO
W := W-1;
trim := T;
END;
I claim that there are at least 6 bugs in the above code. (And that's not counting most of the readability problems.)
Try to identify the problems yourself, then click here to see my answers.
(Click here for the "How To Code Pascal" paper.)