+#
+# turn a list of prefixes / dxcc numbers into a list of dxcc/itu/zone numbers
+#
+# nc = dxcc
+# ni = itu
+# nz = zone
+# ns = state
+#
+
+sub to_ciz
+{
+ my $cmd = shift;
+ my @out;
+
+ foreach my $v (@_) {
+ if ($cmd ne 'ns' && $v =~ /^\d+$/) {
+ push @out, $v unless grep $_ eq $v, @out;
+ } else {
+ if ($cmd eq 'ns' && $v =~ /^[A-Z][A-Z]$/i) {
+ push @out, uc $v unless grep $_ eq uc $v, @out;
+ } else {
+ my @pre = Prefix::extract($v);
+ if (@pre) {
+ shift @pre;
+ foreach my $p (@pre) {
+ my $n = $p->dxcc if $cmd eq 'nc' ;
+ $n = $p->itu if $cmd eq 'ni' ;
+ $n = $p->cq if $cmd eq 'nz' ;
+ $n = $p->state if $cmd eq 'ns';
+ push @out, $n unless grep $_ eq $n, @out;
+ }
+ }
+ }
+ }
+ }
+ return @out;
+}
+
+# get the full country data (dxcc, itu, cq, state) as a list
+# from a callsign.
+sub cty_data
+{
+ my $call = shift;
+
+ my @dxcc = extract($call);
+ return @dxcc ? ($dxcc[1]->dxcc, $dxcc[1]->itu, $dxcc[1]->cq, $dxcc[1]->state) : ();
+}
+