home *** CD-ROM | disk | FTP | other *** search
/ Chip 1995 March / CHIP3.mdf / programm / prog4 / family.ada < prev    next >
Encoding:
Text File  |  1991-07-01  |  1.8 KB  |  80 lines

  1.                                     -- Chapter 27 - Program 6
  2. with Text_IO;
  3. use Text_IO;
  4.  
  5. procedure Family is
  6.  
  7. package Int_IO is new Text_IO.Integer_IO(INTEGER);
  8. use Int_IO;
  9.  
  10. type SPEED is (FAST, MEDIUM, SLOW);
  11.  
  12. task Selector is
  13.    entry Answer_Query(SPEED)(Counter : INTEGER);
  14. end Selector;
  15.  
  16. procedure Output_Value(Counter : INTEGER) is
  17. begin
  18.    Put(Counter);
  19.    New_Line;
  20. end Output_Value;
  21.  
  22. task body Selector is
  23. begin
  24.    loop
  25.       select
  26.          accept Answer_Query(FAST)(Counter : INTEGER) do
  27.             Put("FAST Query made");
  28.             Output_Value(Counter);
  29.          end;
  30.       or
  31.          when Answer_Query(FAST)'COUNT = 0 =>
  32.          accept Answer_Query(MEDIUM)(Counter : INTEGER) do
  33.             Put("MEDIUM Query made");
  34.             Output_Value(Counter);
  35.          end;
  36.       or
  37.          when Answer_Query(FAST)'COUNT = 0 and
  38.               Answer_Query(MEDIUM)'COUNT = 0 =>
  39.          accept Answer_Query(SLOW)(Counter : INTEGER) do
  40.             Put("SLOW Query made");
  41.             Output_Value(Counter);
  42.          end;
  43.       or
  44.          terminate;
  45.       end select;
  46.    end loop;
  47. end Selector;
  48.  
  49. begin
  50.  
  51.    Put_Line("Begin the main program");
  52.    Selector.Answer_Query(FAST)(1);
  53.    Selector.Answer_Query(FAST)(2);
  54.    Selector.Answer_Query(SLOW)(3);
  55.    Selector.Answer_Query(MEDIUM)(4);
  56.    Selector.Answer_Query(SLOW)(5);
  57.    Selector.Answer_Query(MEDIUM)(6);
  58.    Selector.Answer_Query(FAST)(7);
  59.    Selector.Answer_Query(FAST)(8);
  60.    Put_Line("End of the main program");
  61.  
  62. end Family;
  63.  
  64.  
  65.  
  66.  
  67. -- Result of Execution
  68.  
  69. -- Begin the main program
  70. -- FAST Query made     1
  71. -- FAST Query made     2
  72. -- SLOW Query made     3
  73. -- MEDIUM Query made     4
  74. -- SLOW Query made     5
  75. -- MEDIUM Query made     6
  76. -- FAST Query made     7
  77. -- FAST Query made     8
  78. -- End of main program
  79.  
  80.