TIMING.MOD 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. IMPLEMENTATION MODULE Timing;
  2. (*
  3. * REPERTOIRE
  4. * Release 1.6
  5. * By Charles Bradford and Cole Brecheen
  6. * (c) Copyright 1985-1992 PMI
  7. * Green Bay, Wisconsin
  8. * All rights reserved
  9. * (414) 468-6040
  10. *
  11. * $Header: D:/logfiles/mods/timing.mov 1.7 10 Mar 1991 15:34:00 coleb $
  12. *
  13. *)
  14. (*EntryDiag:
  15. IMPORT Diagnostics;
  16. :EntryDiag*)
  17. IMPORT EnvironUtils;
  18. IMPORT M2Strings;
  19. IMPORT StrConv;
  20. IMPORT StrEdit;
  21. IMPORT SYSTEM;
  22. IMPORT VWindows;
  23. VAR
  24. Initialized : BOOLEAN;
  25. PROCEDURE Init();
  26. BEGIN
  27. IF Initialized THEN
  28. RETURN;
  29. ELSE
  30. Initialized := TRUE;
  31. END;
  32. (*EntryDiag:
  33. Diagnostics.Init();
  34. :EntryDiag*)
  35. EnvironUtils.Init();
  36. M2Strings.Init();
  37. StrConv.Init();
  38. StrEdit.Init();
  39. VWindows.Init();
  40. (*EntryDiag:
  41. Diagnostics.diagS( 'Entering Timing', '' );
  42. :EntryDiag*)
  43. BeginTimer();
  44. (*EntryDiag:
  45. Diagnostics.diagS( 'Exiting Timing', '' );
  46. :EntryDiag*)
  47. END Init;
  48. VAR
  49. hours, minutes, seconds, hunds : CARDINAL;
  50. PROCEDURE BeginTimer();
  51. VAR
  52. dumstr : ARRAY [0..80] OF CHAR;
  53. BEGIN
  54. EnvironUtils.GetTime(hours, minutes, seconds, hunds, dumstr);
  55. END BeginTimer;
  56. PROCEDURE ReadTimer(VAR hout, mout, sout, hunout : CARDINAL);
  57. VAR
  58. dumstr : ARRAY [0..20] OF CHAR;
  59. hused, mused, sused, hunused : INTEGER;
  60. BEGIN
  61. EnvironUtils.GetTime(hout, mout, sout, hunout, dumstr);
  62. hunused := INTEGER(hunout)-INTEGER(hunds);
  63. sused := INTEGER(sout)-INTEGER(seconds);
  64. mused := INTEGER(mout)-INTEGER(minutes);
  65. hused := INTEGER(hout)-INTEGER(hours);
  66. IF hunused<0 THEN
  67. INC( hunused, 100);
  68. DEC( sused);
  69. END;
  70. IF sused<0 THEN
  71. INC( sused, 60);
  72. DEC( mused);
  73. END;
  74. IF mused<0 THEN
  75. INC( mused, 60);
  76. DEC( hused);
  77. END;
  78. IF hused<0 THEN
  79. (* accounts for use through midnight; but does not
  80. handle use for longer than 24 hours *)
  81. INC( hused, 24);
  82. END;
  83. hunout := hunused;
  84. sout := sused;
  85. hout := hused;
  86. mout := mused;
  87. END ReadTimer;
  88. PROCEDURE ShowUsage(name : ARRAY OF CHAR);
  89. VAR
  90. h, m, s, hun : CARDINAL;
  91. dumstr : ARRAY [0..255] OF CHAR;
  92. numstr : ARRAY [0..10] OF CHAR;
  93. caption : ARRAY [0..31] OF CHAR;
  94. dumc : CARDINAL;
  95. BEGIN
  96. ReadTimer(h, m, s, hun);
  97. M2Strings.Concat('You have been using ', name, dumstr);
  98. StrEdit.Append(dumstr, ' for ');
  99. StrConv.CardinalToStr(h*60+m, 1, numstr);
  100. StrEdit.Append(dumstr, numstr);
  101. StrEdit.Append(dumstr, ' minute');
  102. IF h+h+m#1 THEN
  103. StrEdit.Append(dumstr, 's');
  104. END;
  105. StrEdit.Append(dumstr, ' and ');
  106. StrConv.CardinalToStr(s, 1, numstr);
  107. StrEdit.Append(dumstr, numstr);
  108. StrEdit.Append(dumstr, ' second');
  109. IF s#1 THEN
  110. StrEdit.Append(dumstr, 's');
  111. END;
  112. StrEdit.Append(dumstr, ' in this session.');
  113. caption := 'Elapsed Time';
  114. dumc := VWindows.MessageBox( VWindows.CurrentWindow,
  115. SYSTEM.ADR(dumstr), SYSTEM.ADR(caption), 0 );
  116. END ShowUsage;
  117. BEGIN
  118. Initialized := FALSE;
  119. Init();
  120. END Timing.