MISCFUNC.MOD 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. IMPLEMENTATION MODULE MiscFunctions;
  2. (*
  3. * ModBase
  4. * Release 3.0
  5. * By Don Fletcher & John McMonagle
  6. * (c) Copyright 1986 - 1991 PMI
  7. * P.O. Box 8402
  8. * Green Bay Wi 53308
  9. * All Rights Reserved
  10. *
  11. *)
  12. IMPORT StrEdit;
  13. CONST
  14. Tab = 11C;
  15. EOL = 36C;
  16. TYPE
  17. CHARSET =SET OF CHAR;
  18. PROCEDURE Trim(VAR str : ARRAY OF CHAR);
  19. (* Strips trailing blanks from a string *)
  20. BEGIN
  21. StrEdit.CutTrailingChars(' ',str);
  22. END Trim;
  23. PROCEDURE Upper(VAR str : ARRAY OF CHAR);
  24. BEGIN
  25. StrEdit.CAPstr(str);
  26. END Upper;
  27. PROCEDURE Alph(c : CHAR) : BOOLEAN;
  28. BEGIN
  29. RETURN c IN CHARSET{'A'..'Z','a'..'z'};
  30. END Alph;
  31. PROCEDURE Digit(c : CHAR) : BOOLEAN;
  32. BEGIN
  33. RETURN c IN CHARSET{'0'..'9'};
  34. END Digit;
  35. PROCEDURE AlphaNum(c : CHAR) : BOOLEAN;
  36. BEGIN
  37. RETURN (Alph(c)) OR (Digit(c));
  38. END AlphaNum;
  39. PROCEDURE Punc(c : CHAR) : BOOLEAN;
  40. BEGIN
  41. RETURN (NOT AlphaNum(c)) AND (c>=' ');
  42. END Punc;
  43. PROCEDURE Printable(c : CHAR) : BOOLEAN;
  44. BEGIN
  45. RETURN c IN CHARSET{' '..'~'};
  46. END Printable;
  47. PROCEDURE IsLower(c : CHAR) : BOOLEAN;
  48. BEGIN
  49. RETURN c IN CHARSET{'a'..'z'};
  50. END IsLower;
  51. PROCEDURE IsUpper(c : CHAR) : BOOLEAN;
  52. BEGIN
  53. RETURN c IN CHARSET{'A'..'Z'};
  54. END IsUpper;
  55. PROCEDURE IsSpace(c : CHAR) : BOOLEAN;
  56. BEGIN
  57. RETURN c IN CHARSET{' ',EOL,12C,15C,Tab};
  58. END IsSpace;
  59. PROCEDURE FieldName(str : ARRAY OF CHAR) : BOOLEAN;
  60. VAR
  61. legal : BOOLEAN;
  62. i : CARDINAL;
  63. BEGIN
  64. Trim(str);
  65. i := 0;
  66. WHILE (i<HIGH(str)) AND (str[i]#0C) DO
  67. INC(i);
  68. END;
  69. IF (i>0) AND (str[i]=0C) THEN
  70. DEC(i);
  71. END;
  72. legal := (i<10) AND (Alph(str[0]));
  73. WHILE (i>0) AND legal DO
  74. legal := FieldNameChar(str[i]);
  75. DEC(i);
  76. END;
  77. RETURN legal;
  78. END FieldName;
  79. PROCEDURE FieldNameChar(c : CHAR) : BOOLEAN;
  80. BEGIN
  81. RETURN (AlphaNum(c)) OR (c='_');
  82. END FieldNameChar;
  83. END MiscFunctions.