{++++++++++++++++++++++++++++++++++++++++++} {+ AS A MINIMUM YOUR PRGM WILL NEED THESE +} {++++++++++++++++++++++++++++++++++++++++++} CONST BLANKINDEX = 10; { Max length you require for a word } MAXWORDLENGTH = 22; { Max length allowed while reading in a word } SMAX = 255; { Max string length } TYPE MSTRING = STRING SMAX; VAR STDIN: TEXT; WORD : MSTRING; {+++++++++++++++++++++++++++++++++++++++++++} Procedure getw(VAR Word: MSTRING); { uses procedures getc() ; length() ; setlength() ; } CONST SPACE = ' '; VAR CH: CHAR; BEGIN setlength(Word,0); CH := SPACE; WHILE (NOT EOF(STDIN)) AND (CH=SPACE) DO (* SKIPBLANKS *) getc(ch); WHILE (NOT EOF(STDIN)) AND (CH<>SPACE) DO BEGIN (* accept only non space *) IF LENGTH(Word) < MAXWORDLENGTH THEN (* store the char *) append(Word,ch); getc(ch); END; (** We now have one "WORD" **) {+ PAD THE WORD WITH BLANKS TO STANDARD LENGTH +} IF LENGTH(Word) >= BLANKINDEX THEN BLANKINDEX := LENGTH(Word) ELSE REPEAT BLANKINDEX := BLANKINDEX - 1; append(Word,space); UNTIL BLANKINDEX=LENGTH(Word); END;{ of getw }  REPEAT BLANKINDEX := BLANKINDEX - 1; append(Word,space); UNTIL BLANKIN