+sub calc_boolean {
+ my($xc) = @_;
+
+ ### Note that we are currently interrogating an IRSpy extension.
+ # The standard ZeeRex record should be extended with a
+ # "supports" type for this.
+ my @nodes = $xc->findnodes('i:status/i:boolean[@ok = "1"]');
+ my $res = join(", ", map { $_->findvalue('@operator') } @nodes);
+ $res = "[none]" if $res eq "";
+ return $res;
+}
+
+sub calc_nrs {
+ my($xc) = @_;
+
+ my @nodes = $xc->findnodes('i:status/i:named_resultset[@ok = "1"]');
+ return @nodes ? "Yes" : "No";
+}
+
+sub calc_recsyn {
+ my($xc, $sep) = @_;
+ $sep = ", " if !defined $sep;
+
+ my @nodes = $xc->findnodes('e:recordInfo/e:recordSyntax');
+ my $res = join($sep, map { $_->findvalue('@name') } @nodes);
+ $res = "[none]" if $res eq "";
+ return $res;
+}
+
+sub calc_explain {
+ my($xc) = @_;
+
+ my @nodes = $xc->findnodes('i:status/i:explain[@ok = "1"]');
+ my $res = join(", ", map { $_->findvalue('@category') } @nodes);
+ $res = "[none]" if $res eq "";
+ return $res;
+}