1 whassay: proc;
  2 
  3 dcl 1 data_structure (0:16) static aligned,
  4     2 one_liner char (60) varying init (
  5      "Check out the new files command in my homedir.",
  6      "will you be working late tonight?",
  7      "How do I tell Multics to stop sending nacks?",
  8      "Thanks",
  9      "what is a type 9 link?",
 10      "has anyone else tried it?",
 11      "are you going to install the new stuff?",
 12      "Which version should I use?",
 13      "Somebody told me that was fixed.",
 14      "How are you today?",
 15      "last message garbled, repeat it.",
 16      "I'm not sure I understand",
 17      "is the stuff you're working with classified?",
 18      "I can't, i'll be on vacation then.",
 19      "what?",
 20      "no",
 21      "you have a phone call"),
 22     2 already_used bit (1);
 23 
 24 dcl  n_used fixed bin static initial (-1);
 25 
 26 dcl  random_$uniform entry options (variable),
 27      x float bin;
 28 
 29 dcl (ioa_, com_err_) options (variable),
 30      timer_manager_$alarm_call entry (fixed bin (71), bit (2), entry),
 31     (code, screw) fixed bin (35),
 32      whoptr pointer static initial (null);
 33 
 34 dcl  user_info_ ext entry options (variable),
 35      screwee char (32) static;
 36 
 37 dcl  hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35));
 38 
 39 %include whotab;
 40 
 41           call hcs_$initiate (">system_control_1", "whotab", "", 0, 0, whoptr, code);
 42           if whoptr = null () then return;
 43 
 44           call user_info_ (screwee);
 45 
 46           already_used = ""b;
 47           n_used = 0;
 48 
 49           call random_$uniform (x);
 50           screw = 300+60*10*x;
 51           call timer_manager_$alarm_call ((screw), "11"b, sendit);
 52 
 53           return;
 54 
 55 sendit:   proc;
 56 
 57 dcl  found bit (1),
 58      printed bit (1),
 59      timer_manager_$reset_alarm_call ext entry (entry);
 60 
 61 dcl  date_time_string char(32);
 62 dcl  date_time_ entry (fixed bin (71), char (*));
 63 
 64 dcl  save_pers char (32), save_proj char (32);
 65 
 66 dcl  time float bin,
 67     (i, j) fixed bin;
 68 
 69                call timer_manager_$reset_alarm_call (sendit);
 70 
 71                if n_used = dim (data_structure, 1) then return; /* out of one_liners. */
 72 
 73                found = ""b;
 74 
 75                do while (^found);
 76                     call random_$uniform (time);
 77                     j = time*laste+.999;
 78 
 79                     do i = j to laste while (^found);
 80                          save_pers = person (i);
 81                          save_proj = project (i);
 82                          if (active (i) ^= 0)
 83                          then if (anon (i) ^= 1)
 84                               then if (proc_type (i) = 1)
 85                                    then if (save_pers ^= screwee)
 86                                         then if (project (i) ^= "SysDaemon")
 87                                              then found = "1"b;
 88                     end;
 89 
 90                end;
 91 
 92                printed = ""b;
 93 
 94                do while (^printed);
 95                     call random_$uniform (time);
 96                     j = time * (hbound (one_liner, 1) + .999);
 97                     if ^already_used (j) then do;
 98                          printed, already_used (j) = "1"b;
 99                          n_used = n_used + 1;
100 
101                          call date_time_ (clock (), date_time_string);
102 
103                          call ioa_ ("^/^RFrom ^a.^a ^a: ^B^a", save_pers, save_proj, rtrim (date_time_string),
104                               one_liner (j));
105 
106                          call random_$uniform (time);
107                          call timer_manager_$alarm_call (900+60*10*time, "11"b, sendit);
108                     end;
109                end;
110 
111           end;
112 
113      end whassay;