add ursigram processor
[spider.git] / perl / DXProtout.pm
index f08fef492bbfff7afd364cf1cf2c290593380494..840c4edec4f9b90213b7f970e3e1ff34e96cf663 100644 (file)
@@ -25,9 +25,10 @@ $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0))
 $main::build += $VERSION;
 $main::branch += $BRANCH;
 
-use vars qw($sentencelth);
+use vars qw($sentencelth $use_newroute);
 
 $sentencelth = 180;
+$use_newroute = 1;
  
 #
 # All the PCxx generation routines
@@ -123,7 +124,8 @@ sub pc17
 # Request init string
 sub pc18
 {
-       return "PC18^DXSpider Version: $main::version Build: $main::build NewRoute^$DXProt::myprot_version^";
+       my $nr = $use_newroute ? ' !NRt' : '';
+       return "PC18^DXSpider Version: $main::version Build: $main::build$nr^$DXProt::myprot_version^";
 }
 
 #
@@ -360,19 +362,28 @@ sub pc51
 
 my $hexlasttime = 0;
 my $hexlastlet = 'A';
+my $hexoverflow = '';
 
 sub hexstamp
 {
        my $t = shift || $main::systime;
        if ($t ne $hexlasttime) {
                $hexlasttime = $t;
+               $hexoverflow = '';
                $hexlastlet = 'A';
        } else {
                do {
                        $hexlastlet = chr(ord($hexlastlet) + 1);
+                       if ($hexlastlet ge '~') {
+                               $hexlastlet = 'A';
+                               $hexoverflow ||= '@';
+                               do {
+                                       $hexoverflow = chr(ord($hexoverflow) + 1);
+                               } while ($hexoverflow eq '^');
+                       }
                } while ($hexlastlet eq '^');
        }
-       return sprintf "%c%08X", $hexlastlet, $hexlasttime;
+       return sprintf "%08X%s%s", $hexlasttime, $hexoverflow, $hexlastlet;
 }
 
 sub pc58
@@ -392,16 +403,17 @@ sub pc59
        my @out;
        my $sort = shift;
        my $hexstamp = shift || hexstamp();
+       my $node = shift;
        
-       my $node = $_[0]->call;
+       my $s = "PC59^$sort^$hexstamp^$node";
        for (@_) {
                next unless $_;
                my $ref = $_;
                my $call = $ref->call;
                my $here = $ref->here;
-               $s .= $ref->isa('Route::Node') ? "^N$here$call" : "^U$here$call";
+               $s .= '^' . $ref->enc_pc59;
        }
-       push @out, "PC59^$sort^$hexstamp^$node^$s" . sprintf "^%s^", get_hops(59);
+       push @out, sprintf "$s^%s^", get_hops(59);
        return @out;
 }