IMPLEMENTATION MODULE MiscFunctions; (* * ModBase * Release 3.0 * By Don Fletcher & John McMonagle * (c) Copyright 1986 - 1991 PMI * P.O. Box 8402 * Green Bay Wi 53308 * All Rights Reserved * *) IMPORT StrEdit; CONST Tab = 11C; EOL = 36C; TYPE CHARSET =SET OF CHAR; PROCEDURE Trim(VAR str : ARRAY OF CHAR); (* Strips trailing blanks from a string *) BEGIN StrEdit.CutTrailingChars(' ',str); END Trim; PROCEDURE Upper(VAR str : ARRAY OF CHAR); BEGIN StrEdit.CAPstr(str); END Upper; PROCEDURE Alph(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{'A'..'Z','a'..'z'}; END Alph; PROCEDURE Digit(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{'0'..'9'}; END Digit; PROCEDURE AlphaNum(c : CHAR) : BOOLEAN; BEGIN RETURN (Alph(c)) OR (Digit(c)); END AlphaNum; PROCEDURE Punc(c : CHAR) : BOOLEAN; BEGIN RETURN (NOT AlphaNum(c)) AND (c>=' '); END Punc; PROCEDURE Printable(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{' '..'~'}; END Printable; PROCEDURE IsLower(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{'a'..'z'}; END IsLower; PROCEDURE IsUpper(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{'A'..'Z'}; END IsUpper; PROCEDURE IsSpace(c : CHAR) : BOOLEAN; BEGIN RETURN c IN CHARSET{' ',EOL,12C,15C,Tab}; END IsSpace; PROCEDURE FieldName(str : ARRAY OF CHAR) : BOOLEAN; VAR legal : BOOLEAN; i : CARDINAL; BEGIN Trim(str); i := 0; WHILE (i0) AND (str[i]=0C) THEN DEC(i); END; legal := (i<10) AND (Alph(str[0])); WHILE (i>0) AND legal DO legal := FieldNameChar(str[i]); DEC(i); END; RETURN legal; END FieldName; PROCEDURE FieldNameChar(c : CHAR) : BOOLEAN; BEGIN RETURN (AlphaNum(c)) OR (c='_'); END FieldNameChar; END MiscFunctions.