cookie: proc;

dcl  messages (7) char (64) initial (
     "Give me a cookie?",
     "I want a cookie!",
     "Come on: I want a cookie!",
     "GIVE ME A COOKIE!!",
     "I ^RNEED^B a cookie!!!!!",
     "Please, just ^Rone^B cookie, I promise I'll go away!!",
     "YOU BAGBITER, ^RKEEP^B YOUR ******* COOKIES!!"),
     flipflop bit (1) static initial (""b),
     ioa_ ext entry,
     cookie$bear ext entry,
     timer_manager_$alarm_call ext entry (fixed bin (71), bit (2), entry),
     timer_manager_$reset_alarm_call ext entry (entry),
     counter static initial (1) fixed bin,
     times (6) fixed bin (71) static initial (60, 240, 240, 200, 400, 120),
     newl static initial ("^/") char (2);

     if flipflop = ""b
     then call timer_manager_$alarm_call (1200, "11"b, cookie$bear);
     else do;
          call timer_manager_$reset_alarm_call (cookie$bear);
          call ioa_ ("Thank you!!  (yum yum yum yum.......)");
          counter = 1;
          end;

     flipflop = ^flipflop;
     return;

bear:     entry;

     call ioa_ (newl || messages (counter));
     if counter = 7 then do;
          flipflop = ""b;
          call timer_manager_$reset_alarm_call (cookie$bear);
          counter = 1;
          return;
     end;

     call timer_manager_$reset_alarm_call (cookie$bear);
     call timer_manager_$alarm_call (times (counter), "11"b, cookie$bear);
     counter = counter + 1;
     return;

     end cookie;