anchor.diff:  
     offHours(String date, int thisZone, int whence) async {
       int n = -1;
  -    List c = new List();
  -    String output;
  +    String output = "";
  +    int nn = 0;
  +    Results c;
  +    List rows = new List();
   
       if (n == -1) {
         String w = "where date = ${date} order by hm";
  -      var c = await _pool.query("select * from ${_calTable} ${w}");
  -      var n = c.length;
  +      c = await _pool.query("select * from ${_calTable} ${w}");
  +      await c.forEach((row){
  +        rows.add(row);
  +        nn++;
  +      });
       }
   
       if (whence == 0 && thisZone != 0) for (int i = 0;
  -        i < n && c[i]['hm'] < _startHour[thisZone] * 100;
  -        i++) output += offApt(c[i]['date'], c[i]['hm'], c[i]['what']);
  +        i < nn && rows[i]['hm'] < _startHour[thisZone] * 100;
  +        i++) output += offApt(rows[i]['date'], rows[i]['hm'], rows[i]['what']);
   
       if (whence == 1 && thisZone != 2) {
         int i;
         for (i = 0;
  -          i < n && c[i]['hm'] <= (_startHour[thisZone] + _NUMHours) * 100;
  +          i < nn && rows[i]['hm'] <= (_startHour[thisZone] + _NUMHours) * 100;
             i++);
  -      if (i != n) for (;
  -          i < n;
  -          i++) output += offApt(c[i]['date'], c[i]['hm'], c[i]['what']);
  +      if (i != nn) for (;
  +          i < nn;
  +          i++) output += offApt(rows[i]['date'], rows[i]['hm'], rows[i]['what']);
       }
   
       return output;
     }
   
     aptString(String date, int hm) async {
  -    String output;
  +    Results c;
  +    List rows = new List();
  +    String output = "";
       String cmd =
           "select what from ${_calTable} where date = ${date} and hm = ${hm}";
  -    var ret = _pool.query(cmd);
  -    if (ret.isEmpty) {
  +    c = await _pool.query(cmd);
  +    await c.forEach((row){
  +      rows.add(row);
  +    });
  +    if (rows.isEmpty) {
         output = '';
       } else {
  -      output = ret[0];
  -    }
  -    return output;
  -  }
  -
  -  String calViewSlot(String date, double h, int m) {
  -    String output;
  +      output = rows[0];
  +    }
  +    return output;
  +  }
  +
  +  calViewSlot(String date, double h, int m) async {
  +    String output = "";
       int hm;
       double tmp = h * 100 + m;
       hm = tmp.round();
  -    String what = aptString(date, hm);
  +    String what = await aptString(date, hm);
       String hlabel = calTimeStr(hm);
       String href = "javascript:calSetApt(${hm})";
       output += "\t\t<TD><A HREF=\"${href}\">${hlabel}</A>:</TD>\n";
  
positive.code:   }
  
    calYmView(String date, bool isy) async {
      String output;
      DateTime dartDate = new DateTime(int.parse(date.substring(0, 4)),
          int.parse(date.substring(4, 6)), int.parse(date.substring(6, 8)));
  
  
negative.code:   calListApt(String date, int hm, String what, bool withAptTimeLink) {
      int dz = calDayZone(hm);
      String ts = calTimeStr(hm);
      String output = "";
  
      if (withAptTimeLink) output +=
          "\t\t\t<A HREF=\"javascript:calTime(${date}, ${dz})\">${ts}</A>:";
  