Release commit for 1.62
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Parser / DB2 / Grammar.pm
index 4452df2..c7c6c2a 100644 (file)
@@ -16,11 +16,11 @@ $skip = '\s*';
 {
 local $SIG{__WARN__} = sub {0};
 # PRETEND TO BE IN Parse::RecDescent NAMESPACE
-*Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::AUTOLOAD    = sub
+*Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::AUTOLOAD  = sub
 {
-       no strict 'refs';
-       $AUTOLOAD =~ s/^Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar/Parse::RecDescent/;
-       goto &{$AUTOLOAD};
+  no strict 'refs';
+  $AUTOLOAD =~ s/^Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar/Parse::RecDescent/;
+  goto &{$AUTOLOAD};
 }
 }
 
@@ -28,36342 +28,36342 @@ push @Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ISA, 'Parse::Rec
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
 sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_17_of_rule_sysibm_function
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_17_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_17_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DECIMAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_17_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_17_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DECIMAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECIMAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DECIMAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DEC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_17_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_17_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DEC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DEC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_17_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_17_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_17_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DECIMAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_17_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_17_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DECIMAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECIMAL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_17_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"triggered_action"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [triggered_action]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{triggered_action},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [when_clause SQL_procedure_statement]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{triggered_action});
-               %item = (__RULE__ => q{triggered_action});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [when_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{triggered_action},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::when_clause, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [when_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{triggered_action},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [when_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{when_clause(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [SQL_procedure_statement]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{triggered_action},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{SQL_procedure_statement})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [SQL_procedure_statement]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{triggered_action},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [SQL_procedure_statement]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{SQL_procedure_statement}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { 'condition' => $item[1][0],
-              'statement' => $item{'SQL_procedure_statement'} };
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [when_clause SQL_procedure_statement]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/DECIMAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{triggered_action},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{triggered_action},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{triggered_action},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{triggered_action},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_search_condition
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_2_of_rule_search_condition"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_2_of_rule_search_condition]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [predicate /SELECTIVITY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_2_of_rule_search_condition});
-               %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_search_condition});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [predicate]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [predicate]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [predicate]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{predicate}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/SELECTIVITY/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/SELECTIVITY/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SELECTIVITY/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [predicate /SELECTIVITY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' search_condition ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_2_of_rule_search_condition});
-               %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_search_condition});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_2_of_rule_search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' search_condition ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/DEC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_17_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_17_of_rule_sysibm_function});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_2_of_rule_search_condition},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/DEC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::name1
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"name1"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [name1]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{name1},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{name1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{name1});
-               %item = (__RULE__ => q{name1});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{name1},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{name1},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{name1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{name1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEC)//i)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{name1},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{name1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{name1},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{name1},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cond
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_cond"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_cond]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [predicate /SELECTIVITY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_cond});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [predicate]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [predicate]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [predicate]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{predicate}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/SELECTIVITY/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/SELECTIVITY/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SELECTIVITY/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [predicate /SELECTIVITY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' search_condition ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_cond});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' search_condition ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule_cond},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['+', or '-' function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: ['+', or '-']},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['+', or '-']>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['+', or '-' function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/DEC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_17_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_17_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"SCHEMA"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [SCHEMA]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{SCHEMA},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{SCHEMA});
-               %item = (__RULE__ => q{SCHEMA});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w+)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/\\w\{1,128\}/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{SCHEMA});
-               %item = (__RULE__ => q{SCHEMA});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/\\w\{1,128\}/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w{1,128})//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/\\w\{1,128\}/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"triggered_action"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [triggered_action]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{triggered_action},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [when_clause SQL_procedure_statement]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{triggered_action});
+    %item = (__RULE__ => q{triggered_action});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [when_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{triggered_action},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::when_clause, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [when_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{triggered_action},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [when_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{when_clause(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [SQL_procedure_statement]},
+          Parse::RecDescent::_tracefirst($text),
+          q{triggered_action},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{SQL_procedure_statement})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [SQL_procedure_statement]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{triggered_action},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [SQL_procedure_statement]<< (return value: [}
+          . $_tok . q{]},
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{SCHEMA},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{SCHEMA},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{SCHEMA},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{SCHEMA},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+            Parse::RecDescent::_tracefirst($text),
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{SQL_procedure_statement}} = $_tok;
+    push @item, $_tok;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_87_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_87_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_87_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VARIANCE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_87_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_87_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/VARIANCE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARIANCE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VARIANCE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_87_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_87_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/VAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    }
 
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_87_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['+']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['+']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\+//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['+']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['-']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['-']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['-']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    $_tok = ($_noactions) ? 0 : do { $return = { 'condition' => $item[1][0],
+              'statement' => $item{'SQL_procedure_statement'} };
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::get_bracketed
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"get_bracketed"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [get_bracketed]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{get_bracketed},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: []},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{get_bracketed},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{get_bracketed});
-               %item = (__RULE__ => q{get_bracketed});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{get_bracketed},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { 
-    extract_bracketed($text, '(');
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: []<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{get_bracketed},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [when_clause SQL_procedure_statement]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{get_bracketed},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{get_bracketed},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{get_bracketed},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{get_bracketed},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{triggered_action},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{triggered_action},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{triggered_action},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{triggered_action},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::labeled_duration
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_search_condition
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"labeled_duration"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [labeled_duration]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{labeled_duration},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [ld_type ld_duration]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{labeled_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{labeled_duration});
-               %item = (__RULE__ => q{labeled_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [ld_type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{labeled_duration},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [ld_type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{labeled_duration},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [ld_type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{labeled_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{ld_type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [ld_duration]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{labeled_duration},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{ld_duration})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_duration($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [ld_duration]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{labeled_duration},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [ld_duration]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{labeled_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{ld_duration}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [ld_type ld_duration]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{labeled_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_2_of_rule_search_condition"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_2_of_rule_search_condition]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [predicate /SELECTIVITY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_2_of_rule_search_condition});
+    %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_search_condition});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [predicate]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [predicate]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_2_of_rule_search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [predicate]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{predicate}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{labeled_duration},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{labeled_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{labeled_duration},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{labeled_duration},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_end
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"group_end"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [group_end]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{group_end},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_end});
-               %item = (__RULE__ => q{group_end});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_end});
-               %item = (__RULE__ => q{group_end});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_end},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_end},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FOLLOWING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/SELECTIVITY/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/SELECTIVITY/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SELECTIVITY/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_2_of_rule_search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [predicate /SELECTIVITY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' search_condition ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_2_of_rule_search_condition});
+    %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_search_condition});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_2_of_rule_search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{group_end},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{group_end},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{group_end},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{group_end},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::statement
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"statement"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [statement]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{statement},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [comment]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{statement});
-               %item = (__RULE__ => q{statement});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [comment]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{statement},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::comment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [comment]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{statement},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [comment]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{comment}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [create]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{statement});
-               %item = (__RULE__ => q{statement});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [create]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{statement},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::create($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [create]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{statement},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [create]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{create}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [create]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [<error...>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               
-               my $_savetext;
-               @item = (q{statement});
-               %item = (__RULE__ => q{statement});
-               my $repcount = 0;
-
-
-               
-
-               Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
-                                       Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE; 
-               $_tok = do { if (1) { do {
-               my $rule = $item[0];
-                  $rule =~ s/_/ /g;
-               #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
-               push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
-               } unless  $_noactions; undef } else {0} };
-               if (defined($_tok))
-               {
-                       Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
-                                               . $_tok . q{])},
-                                               Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               }
-               else
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match directive>>},
-                                               Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               }
-               
-               last unless defined $_tok;
-               push @item, $item{__DIRECTIVE1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{statement},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{statement},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{statement},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [result_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{result_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [result_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_case_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_case_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_case_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule_case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ELSE\\s+NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_case_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_case_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ELSE\\s+NULL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ELSE\s+NULL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ELSE\\s+NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ELSE/i result_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_case_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_case_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ELSE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ELSE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{result_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_case_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{result_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ELSE/i result_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' search_condition ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule_case_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_2_of_rule_search_condition},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subject_expression
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::name1
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"subject_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [subject_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{subject_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{subject_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{subject_expression});
-               %item = (__RULE__ => q{subject_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{subject_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{subject_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subject_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subject_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { # with static result type that is a used-defined struct type 
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subject_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"name1"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [name1]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{name1},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{name1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{name1});
+    %item = (__RULE__ => q{name1});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{name1},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{name1},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{name1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{subject_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{subject_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{subject_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{subject_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_desc_option
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_desc_option"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_desc_option]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_desc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+FIRST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_desc_option});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_desc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+FIRST/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+FIRST)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+FIRST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+LAST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_desc_option});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_desc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+LAST/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+LAST)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+LAST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{name1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_desc_option},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_desc_option},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{name1},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{name1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{name1},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{name1},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::view_name
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cond
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"view_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [view_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{view_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{view_name});
-               %item = (__RULE__ => q{view_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{view_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{view_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{SCHEMA}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['.']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'.'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{view_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{NAME})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{view_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{view_name});
-               %item = (__RULE__ => q{view_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{view_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{view_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_cond"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_cond]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [predicate /SELECTIVITY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_cond});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [predicate]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [predicate]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [predicate]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{predicate}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{view_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{view_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{view_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{view_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cond
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_cond"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_cond]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/AND/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_cond});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/AND/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/OR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_cond});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/OR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/SELECTIVITY/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/SELECTIVITY/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SELECTIVITY/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [predicate /SELECTIVITY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' search_condition ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_cond});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_cond},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_cond},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numbering_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"numbering_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [numbering_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ROW_NUMBER|ROWNUMBER/i '()' /OVER/i '(' window_partition_clause window_order_clause /RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{numbering_function});
-               %item = (__RULE__ => q{numbering_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ROW_NUMBER|ROWNUMBER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROW_NUMBER|ROWNUMBER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['()']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'()'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OVER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/OVER/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OVER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [window_partition_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{window_partition_clause})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_partition_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_partition_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_partition_clause(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{window_order_clause})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_numbering_function, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_order_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_numbering_function]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_numbering_function(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_numbering_function, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_numbering_function]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule_numbering_function(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING3__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ROW_NUMBER|ROWNUMBER/i '()' /OVER/i '(' window_partition_clause window_order_clause /RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{numbering_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{numbering_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{numbering_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_aggregation_group_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_window_aggregation_group_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ROWS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ROWS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROWS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ROWS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RANGE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RANGE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANGE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RANGE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound1
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"group_bound1"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [group_bound1]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{group_bound1},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound1});
-               %item = (__RULE__ => q{group_bound1});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound1});
-               %item = (__RULE__ => q{group_bound1});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_bound1},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_bound1},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/PRECEDING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound1});
-               %item = (__RULE__ => q{group_bound1});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_bound1},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_bound1},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FOLLOWING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound1});
-               %item = (__RULE__ => q{group_bound1});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' search_condition ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{group_bound1},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{group_bound1},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{group_bound1},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{group_bound1},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule_cond},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OLAP_function
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"OLAP_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [OLAP_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{OLAP_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [ranking_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{OLAP_function});
-               %item = (__RULE__ => q{OLAP_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [ranking_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{OLAP_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ranking_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [ranking_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{OLAP_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [ranking_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{ranking_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [ranking_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [numbering_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{OLAP_function});
-               %item = (__RULE__ => q{OLAP_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [numbering_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{OLAP_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numbering_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [numbering_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{OLAP_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [numbering_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{numbering_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [numbering_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [aggregation_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{OLAP_function});
-               %item = (__RULE__ => q{OLAP_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [aggregation_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{OLAP_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::aggregation_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [aggregation_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{OLAP_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [aggregation_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{aggregation_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [aggregation_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['+', or '-' function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: ['+', or '-']},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['+', or '-']>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{OLAP_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{OLAP_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{OLAP_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{OLAP_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_30_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_30_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_30_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_30_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_30_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DOUBLE_PRECISION/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_30_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_30_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE_PRECISION/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE_PRECISION)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE_PRECISION/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['+', or '-' function, or '(', or constant, or column_name, or host_variable, or special_register, or labeled_duration, or case_expression, or cast_specification, or OLAP_function, or method_invocation, or subtype_treatment, or sequence_reference]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_30_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::FULL
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"FULL"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [FULL]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{FULL},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/full/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{FULL},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{FULL});
-               %item = (__RULE__ => q{FULL});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/full/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{FULL},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:full)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/full/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{FULL},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"SCHEMA"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [SCHEMA]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{SCHEMA},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{SCHEMA});
+    %item = (__RULE__ => q{SCHEMA});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w+)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{FULL},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{FULL},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{FULL},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{FULL},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cast_specification
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_cast_specification"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_cast_specification]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SCOPE/ typed_table_name, or typed_view_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SCOPE/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SCOPE)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{typed_table_name, or typed_view_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SCOPE/ typed_table_name, or typed_view_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::case_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"case_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [case_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CASE/i searched_when_clause, or simple_when_clause /ELSE\\s+NULL/i, or /ELSE/i /END/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{case_expression});
-               %item = (__RULE__ => q{case_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CASE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CASE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_case_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{searched_when_clause, or simple_when_clause})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_case_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_case_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{case_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_case_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_case_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/ELSE\\s+NULL/i, or /ELSE/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/ELSE\\s+NULL/i, or /ELSE/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_case_expression, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/ELSE\\s+NULL/i, or /ELSE/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{case_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_case_expression]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule_case_expression(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/END/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/END/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:END)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CASE/i searched_when_clause, or simple_when_clause /ELSE\\s+NULL/i, or /ELSE/i /END/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/\\w\{1,128\}/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{SCHEMA});
+    %item = (__RULE__ => q{SCHEMA});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{case_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{case_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{case_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/\\w\{1,128\}/]}, Parse::RecDescent::_tracefirst($text),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::operator
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"operator"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [operator]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{operator},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CONCAT/i, or '||']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{operator});
-               %item = (__RULE__ => q{operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_operator]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{operator},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_operator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_operator]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{operator},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_operator]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_operator}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/i, or '||']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['/']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{operator});
-               %item = (__RULE__ => q{operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['/']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\///)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['/']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['*']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{operator});
-               %item = (__RULE__ => q{operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['*']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\*//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['*']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['+']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{operator});
-               %item = (__RULE__ => q{operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['+']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\+//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['+']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['-']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{operator});
-               %item = (__RULE__ => q{operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['-']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['-']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w{1,128})//)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{operator},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{operator},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{operator},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_type
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_2_of_rule_type"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_2_of_rule_type]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_2_of_rule_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INSERT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_2_of_rule_type});
-               %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/INSERT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INSERT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DELETE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_2_of_rule_type});
-               %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DELETE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DELETE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DELETE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UPDATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_2_of_rule_type});
-               %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UPDATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPDATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UPDATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_2_of_rule_type},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_2_of_rule_type},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_8_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_8_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_8_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CONCAT/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_8_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_8_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CONCAT/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CONCAT)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['||']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_8_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_8_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['||']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\|\|//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['||']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/\\w\{1,128\}/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_8_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{SCHEMA},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{SCHEMA},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{SCHEMA},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{SCHEMA},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_reference
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_87_of_rule_sysibm_function
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"sequence_reference"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [sequence_reference]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{sequence_reference},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [nextval_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sequence_reference});
-               %item = (__RULE__ => q{sequence_reference});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [nextval_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sequence_reference},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::nextval_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [nextval_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sequence_reference},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [nextval_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{nextval_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [nextval_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [prevval_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sequence_reference});
-               %item = (__RULE__ => q{sequence_reference});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [prevval_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sequence_reference},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::prevval_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [prevval_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sequence_reference},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [prevval_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{prevval_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [prevval_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_87_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_87_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_87_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/VARIANCE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_87_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_87_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/VARIANCE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARIANCE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{sequence_reference},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{sequence_reference},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{sequence_reference},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{sequence_reference},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABS/i, or /ABSVAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i, or /ABSVAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/AVG/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AVG/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AVG)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/AVG/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/BIGINT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/BIGINT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BIGINT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/BIGINT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/BLOB/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/BLOB/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BLOB)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/BLOB/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CHAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CHAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CHAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CLOB/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CLOB/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CLOB)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CLOB/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COALESCE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[6];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COALESCE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COALESCE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COALESCE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CONCAT/, or '||']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[7];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_8_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_8_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/, or '||']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CORRELATION/i, or /CORR/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[8];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_9_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_9_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CORRELATION/i, or /CORR/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COUNT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[9];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COUNT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COUNT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COUNT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COUNT_BIG/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[10];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COUNT_BIG/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COUNT_BIG)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COUNT_BIG/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COVARIANCE/i, or /COVAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[11];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_12_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_12_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COVARIANCE/i, or /COVAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[12];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[13];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[14];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DBCLOB/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[15];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DBCLOB/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DBCLOB)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DBCLOB/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DECIMAL/i, or /DEC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[16];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_17_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_17_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DECIMAL/i, or /DEC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DECRYPT_BIN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[17];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DECRYPT_BIN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECRYPT_BIN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DECRYPT_BIN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DECRYPT_CHAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[18];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DECRYPT_CHAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECRYPT_CHAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DECRYPT_CHAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DEREF/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[19];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DEREF/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEREF)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DEREF/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DIGITS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[20];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DIGITS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DIGITS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DIGITS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLCOMMENT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[21];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLCOMMENT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLCOMMENT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLCOMMENT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLLINKTYPE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[22];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLLINKTYPE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLLINKTYPE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLLINKTYPE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLURLCOMPLETE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[23];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLURLCOMPLETE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLCOMPLETE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLURLCOMPLETE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLURLPATH/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[24];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLURLPATH/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLPATH)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLURLPATH/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLURLPATHONLY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[25];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLURLPATHONLY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLPATHONLY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLURLPATHONLY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLURLSCHEME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[26];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLURLSCHEME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLSCHEME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLURLSCHEME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLURLSERVER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[27];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLURLSERVER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLSERVER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLURLSERVER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DLVALUE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[28];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DLVALUE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLVALUE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DLVALUE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i, or /DOUBLE_PRECISION/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[29];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_30_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_30_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i, or /DOUBLE_PRECISION/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ENCRYPT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[30];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ENCRYPT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ENCRYPT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ENCRYPT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/EVENT_MON_STATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[31];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/EVENT_MON_STATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:EVENT_MON_STATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/EVENT_MON_STATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/FLOAT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[32];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FLOAT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FLOAT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/FLOAT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/GETHINT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[33];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/GETHINT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GETHINT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/GETHINT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/GENERATE_UNIQUE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[34];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/GENERATE_UNIQUE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GENERATE_UNIQUE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/GENERATE_UNIQUE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/GRAPHIC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[35];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/GRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GRAPHIC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/GRAPHIC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/GROUPING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[36];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/GROUPING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GROUPING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/GROUPING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/HEX/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[37];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/HEX/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HEX)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/HEX/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/HOUR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[38];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/HOUR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HOUR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/HOUR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/IDENTITY_VAL_LOCAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[39];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/IDENTITY_VAL_LOCAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:IDENTITY_VAL_LOCAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/IDENTITY_VAL_LOCAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INTEGER/i, or /INT/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[40];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_41_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_41_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INTEGER/i, or /INT/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LCASE/i, or /LOWER/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[41];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_42_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_42_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i, or /LOWER/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LENGTH/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[42];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LENGTH/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LENGTH)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LENGTH/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LONG_VARCHAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[43];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LONG_VARCHAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LONG_VARCHAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LONG_VARCHAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LONG_VARGRAPHIC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[44];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LONG_VARGRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LONG_VARGRAPHIC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LONG_VARGRAPHIC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LTRIM/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[45];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LTRIM/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LTRIM)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LTRIM/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MAX/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[46];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MAX/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MAX)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MAX/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MICROSECOND/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[47];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MICROSECOND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MICROSECOND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MICROSECOND/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MIN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[48];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MIN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MIN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MIN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MINUTE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[49];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MINUTE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MINUTE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MINUTE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MONTH/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[50];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MONTH/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTH)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MONTH/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MULTIPLY_ACT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[51];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MULTIPLY_ACT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MULTIPLY_ACT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MULTIPLY_ACT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NODENUMBER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[52];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NODENUMBER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NODENUMBER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NODENUMBER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULLIF/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[53];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULLIF/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLIF)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULLIF/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/PARTITON/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[54];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PARTITON/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PARTITON)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/PARTITON/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/POSSTR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[55];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/POSSTR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:POSSTR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/POSSTR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RAISE_ERROR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[56];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RAISE_ERROR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RAISE_ERROR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RAISE_ERROR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[57];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REC2XML/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[58];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REC2XML/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REC2XML)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REC2XML/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_AVGX/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[59];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_AVGX/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_AVGX)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_AVGX/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_AVGY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[60];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_AVGY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_AVGY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_AVGY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_COUNT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[61];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_COUNT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_COUNT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_COUNT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_INTERCEPT/i, or /REGR_ICPT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[62];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_63_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_63_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_INTERCEPT/i, or /REGR_ICPT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_R2/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[63];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_R2/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_R2)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_R2/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_SLOPE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[64];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SLOPE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SLOPE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SLOPE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_SXX/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[65];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SXX/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SXX)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SXX/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_SXY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[66];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SXY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SXY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SXY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_SYY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[67];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SYY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SYY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SYY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RTRIM/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[68];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RTRIM/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RTRIM)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RTRIM/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SECOND/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[69];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SECOND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SECOND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SECOND/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SMALLINT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[70];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SMALLINT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SMALLINT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SMALLINT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/STDDEV/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[71];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/STDDEV/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:STDDEV)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/STDDEV/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SUBSTR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[72];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SUBSTR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SUBSTR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SUBSTR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SUM/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[73];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SUM/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SUM)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SUM/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TABLE_NAME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[74];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TABLE_NAME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TABLE_NAME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TABLE_NAME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TABLE_SCHEMA/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[75];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TABLE_SCHEMA/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TABLE_SCHEMA)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TABLE_SCHEMA/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TIME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[76];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TIME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TIME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMP/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[77];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMP/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMP)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMP/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TRANSLATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[78];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TRANSLATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRANSLATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TRANSLATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TYPE_ID/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[79];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_ID/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_ID)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_ID/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TYPE_NAME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[80];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_NAME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_NAME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_NAME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TYPE_SCHEMA/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[81];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_SCHEMA/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_SCHEMA)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_SCHEMA/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UCASE/i, or /UPPER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[82];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_83_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_83_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i, or /UPPER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VALUE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[83];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/VALUE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VALUE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VALUE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VARCHAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[84];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/VARCHAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARCHAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VARCHAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VARGRAPHIC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[85];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/VARGRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARGRAPHIC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VARGRAPHIC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/VARIANCE/i, or /VAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[86];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_87_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysibm_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_87_of_rule_sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/VARIANCE/i, or /VAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/YEAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[87];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysibm_function});
-               %item = (__RULE__ => q{sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/YEAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:YEAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/YEAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/VARIANCE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"window_partition_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [window_partition_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{window_partition_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/PARTITION\\s+BY/i <leftop: partitioning_expression /,/ partitioning_expression>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{window_partition_clause});
-               %item = (__RULE__ => q{window_partition_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PARTITION\\s+BY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PARTITION\s+BY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: partitioning_expression /,/ partitioning_expression>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_partition_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: partitioning_expression /,/ partitioning_expression>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [partitioning_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_partition_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{partitioning_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::partitioning_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [partitioning_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_partition_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [partitioning_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{partitioning_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'partitioning_expression(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [partitioning_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_partition_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{partitioning_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::partitioning_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [partitioning_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_partition_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [partitioning_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{partitioning_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: partitioning_expression /,/ partitioning_expression>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_partition_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: partitioning_expression /,/ partitioning_expression>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'partitioning_expression(s)'}=$_tok||[];
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/PARTITION\\s+BY/i <leftop: partitioning_expression /,/ partitioning_expression>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/VAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_87_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_87_of_rule_sysibm_function});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{window_partition_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{window_partition_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{window_partition_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{window_partition_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/VAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::WHERE
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"WHERE"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [WHERE]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{WHERE},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/where/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{WHERE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{WHERE});
-               %item = (__RULE__ => q{WHERE});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/where/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{WHERE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:where)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/where/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{WHERE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VAR)//i)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{WHERE},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{WHERE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{WHERE},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{WHERE},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"CREATE"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [CREATE]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{CREATE},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/create/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{CREATE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{CREATE});
-               %item = (__RULE__ => q{CREATE});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/create/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{CREATE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:create)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/create/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{CREATE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{CREATE},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{CREATE},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{CREATE},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{CREATE},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysfun
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_sysfun"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ABS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABSVAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ABSVAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABSVAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABSVAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/VAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_sysfun},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_sysfun},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_87_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_87_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_function
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SYSIBM\\.|/i sysibm_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SYSIBM\\.|/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SYSIBM\.|)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sysibm_function})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sysibm_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sysibm_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sysibm_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SYSIBM\\.|/i sysibm_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SYSFUN\\.|/i sysfun_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SYSFUN\\.|/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SYSFUN\.|)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sysfun_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sysfun_function})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysfun_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sysfun_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sysfun_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sysfun_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SYSFUN\\.|/i sysfun_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [userdefined_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [userdefined_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::userdefined_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [userdefined_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [userdefined_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{userdefined_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [userdefined_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['+']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['+']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\+//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['+']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['-']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['-']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"identifier"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [identifier]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{identifier},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{identifier},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{identifier});
-               %item = (__RULE__ => q{identifier});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{identifier},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{identifier},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{identifier},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{identifier},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: ['-']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{identifier},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{identifier},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{identifier},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{identifier},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::get_bracketed
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [asc_option]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [asc_option]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::asc_option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [asc_option]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [asc_option]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{asc_option}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [asc_option]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [desc_option]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [desc_option]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::desc_option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [desc_option]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [desc_option]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{desc_option}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [desc_option]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"get_bracketed"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [get_bracketed]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{get_bracketed},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: []},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{get_bracketed},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{get_bracketed});
+    %item = (__RULE__ => q{get_bracketed});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{get_bracketed},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    extract_bracketed($text, '(');
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"result_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [result_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{result_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{result_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{result_expression});
-               %item = (__RULE__ => q{result_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{result_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{result_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{result_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{result_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: []<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{get_bracketed},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{result_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{result_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{result_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{result_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{get_bracketed},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{get_bracketed},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{get_bracketed},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{get_bracketed},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scoped_reference_expression
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::labeled_duration
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"scoped_reference_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [scoped_reference_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{scoped_reference_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{scoped_reference_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{scoped_reference_expression});
-               %item = (__RULE__ => q{scoped_reference_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{scoped_reference_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{scoped_reference_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scoped_reference_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scoped_reference_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { # scoped, reference 
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scoped_reference_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"labeled_duration"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [labeled_duration]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{labeled_duration},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [ld_type ld_duration]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{labeled_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{labeled_duration});
+    %item = (__RULE__ => q{labeled_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [ld_type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{labeled_duration},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [ld_type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{labeled_duration},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [ld_type]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{labeled_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{ld_type}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{scoped_reference_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{scoped_reference_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{scoped_reference_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{scoped_reference_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [typed_table_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [typed_table_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::typed_table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [typed_table_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [typed_table_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{typed_table_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [typed_table_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [typed_view_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [typed_view_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::typed_view_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [typed_view_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [typed_view_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{typed_view_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [typed_view_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying subrule: [ld_duration]},
+          Parse::RecDescent::_tracefirst($text),
+          q{labeled_duration},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{ld_duration})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_duration($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [ld_duration]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{labeled_duration},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [ld_duration]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{labeled_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{ld_duration}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WHEN/i '(' search_condition ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{when_clause});
-               %item = (__RULE__ => q{when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {$return = $item[3]};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i '(' search_condition ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [ld_type ld_duration]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{labeled_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{labeled_duration},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{labeled_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{labeled_duration},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{labeled_duration},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_asc_option
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_end
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_asc_option"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_asc_option]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_asc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+FIRST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_asc_option});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_asc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+FIRST/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+FIRST)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+FIRST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+LAST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_asc_option});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_asc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+LAST/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+LAST)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+LAST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"group_end"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [group_end]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{group_end},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_end});
+    %item = (__RULE__ => q{group_end});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_end});
+    %item = (__RULE__ => q{group_end});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_end},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_end},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_asc_option},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_asc_option},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"sequence_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [sequence_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{sequence_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sequence_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sequence_name});
-               %item = (__RULE__ => q{sequence_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sequence_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sequence_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sequence_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FOLLOWING/i})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{sequence_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{sequence_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{sequence_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{sequence_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_duration
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"ld_duration"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [ld_duration]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{ld_duration},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/YEARS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/YEARS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:YEARS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/YEARS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MONTHS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MONTHS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTHS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MONTHS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/HOURS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/HOURS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HOURS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/HOURS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MINUTES?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MINUTES?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MINUTES?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MINUTES?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SECONDS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SECONDS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SECONDS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SECONDS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MICROSECONDS?/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[6];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_duration});
-               %item = (__RULE__ => q{ld_duration});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MICROSECONDS?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MICROSECONDS?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MICROSECONDS?/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{ld_duration},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{ld_duration},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{ld_duration},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{ld_duration},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_a
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"reference_a"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [reference_a]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{reference_a},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REFERENCING/i old_new_corr old_new_table]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{reference_a});
-               %item = (__RULE__ => q{reference_a});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REFERENCING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REFERENCING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_corr]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{reference_a},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{old_new_corr})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr, 0, 2, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_corr]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{reference_a},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_corr]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{old_new_corr(0..2)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_table]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{reference_a},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{old_new_table})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_table, 0, 2, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_table]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{reference_a},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_table]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{old_new_table(0..2)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', $item[1], join(' ', @{$item[2]}), join(' ', @{$item[3]})  ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REFERENCING/i old_new_corr old_new_table]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{reference_a},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{reference_a},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{reference_a},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{reference_a},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{group_end},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{group_end},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{group_end},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{group_end},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cast_specification
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::statement
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"cast_specification"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [cast_specification]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CAST/i '(' expression, or /NULL/i, or parameter_marker /AS/i data_type /SCOPE/ ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{cast_specification});
-               %item = (__RULE__ => q{cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CAST/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CAST)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_cast_specification]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{expression, or /NULL/i, or parameter_marker})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_cast_specification]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_cast_specification]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_cast_specification}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AS/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [data_type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{data_type})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::data_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [data_type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [data_type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{data_type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/SCOPE/]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/SCOPE/})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cast_specification, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SCOPE/]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_cast_specification]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule_cast_specification(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CAST/i '(' expression, or /NULL/i, or parameter_marker /AS/i data_type /SCOPE/ ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"statement"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [statement]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{statement},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [comment]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{statement});
+    %item = (__RULE__ => q{statement});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [comment]},
+          Parse::RecDescent::_tracefirst($text),
+          q{statement},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::comment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [comment]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{statement},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [comment]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{comment}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{cast_specification},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{cast_specification},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{cast_specification},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [create]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{statement});
+    %item = (__RULE__ => q{statement});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [create]},
+          Parse::RecDescent::_tracefirst($text),
+          q{statement},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::create($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [create]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{statement},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [create]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{create}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [create]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [<error...>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+
+    my $_savetext;
+    @item = (q{statement});
+    %item = (__RULE__ => q{statement});
+    my $repcount = 0;
+
+
+
+
+    Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
+          Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_tok = do { if (1) { do {
+    my $rule = $item[0];
+       $rule =~ s/_/ /g;
+    #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
+    push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
+    } unless  $_noactions; undef } else {0} };
+    if (defined($_tok))
+    {
+      Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    }
+    else
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match directive>>},
+            Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    }
+
+    last unless defined $_tok;
+    push @item, $item{__DIRECTIVE1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{statement},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{statement},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{statement},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [result_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{result_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [result_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_case_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_case_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_case_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule_case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ELSE\\s+NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_case_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_case_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ELSE\\s+NULL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ELSE\s+NULL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ELSE\\s+NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ELSE/i result_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_case_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_case_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ELSE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ELSE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{result_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_case_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{result_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ELSE/i result_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule_case_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule_case_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subject_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"subject_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [subject_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{subject_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{subject_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{subject_expression});
+    %item = (__RULE__ => q{subject_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{subject_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{subject_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{subject_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{subject_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { # with static result type that is a used-defined struct type
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{subject_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{subject_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{subject_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{subject_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{subject_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_desc_option
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_desc_option"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_desc_option]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_desc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+FIRST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_desc_option});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_desc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+FIRST/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+FIRST)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+FIRST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+LAST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_desc_option});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_desc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+LAST/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+LAST)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+LAST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_desc_option},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_desc_option},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::view_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"view_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [view_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{view_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{view_name});
+    %item = (__RULE__ => q{view_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
+          Parse::RecDescent::_tracefirst($text),
+          q{view_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{view_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{SCHEMA}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['.']},
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'.'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{view_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{NAME})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{view_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{view_name});
+    %item = (__RULE__ => q{view_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{view_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{view_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{view_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{view_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{view_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{view_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cond
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_cond"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_cond]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/AND/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_cond});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AND)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/AND/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/OR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_cond});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/OR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_cond},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_cond},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numbering_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"numbering_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [numbering_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ROW_NUMBER|ROWNUMBER/i '()' /OVER/i '(' window_partition_clause window_order_clause /RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{numbering_function});
+    %item = (__RULE__ => q{numbering_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ROW_NUMBER|ROWNUMBER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROW_NUMBER|ROWNUMBER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['()']},
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'()'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OVER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/OVER/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OVER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [window_partition_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{window_partition_clause})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_partition_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_partition_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_partition_clause(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [window_order_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{window_order_clause})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_numbering_function, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_order_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_numbering_function]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_numbering_function(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_numbering_function, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_numbering_function]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule_numbering_function(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING3__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ROW_NUMBER|ROWNUMBER/i '()' /OVER/i '(' window_partition_clause window_order_clause /RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i, or window_aggregation_group_clause ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{numbering_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{numbering_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{numbering_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_aggregation_group_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_window_aggregation_group_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ROWS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ROWS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROWS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ROWS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RANGE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RANGE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANGE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RANGE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound1
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"group_bound1"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [group_bound1]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{group_bound1},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound1});
+    %item = (__RULE__ => q{group_bound1});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound1});
+    %item = (__RULE__ => q{group_bound1});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_bound1},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_bound1},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/PRECEDING/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound1});
+    %item = (__RULE__ => q{group_bound1});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_bound1},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_bound1},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FOLLOWING/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound1});
+    %item = (__RULE__ => q{group_bound1});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{group_bound1},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{group_bound1},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{group_bound1},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{group_bound1},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OLAP_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"OLAP_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [OLAP_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{OLAP_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [ranking_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{OLAP_function});
+    %item = (__RULE__ => q{OLAP_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [ranking_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{OLAP_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ranking_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [ranking_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{OLAP_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [ranking_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{ranking_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [ranking_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [numbering_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{OLAP_function});
+    %item = (__RULE__ => q{OLAP_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [numbering_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{OLAP_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numbering_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [numbering_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{OLAP_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [numbering_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{numbering_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [numbering_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [aggregation_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{OLAP_function});
+    %item = (__RULE__ => q{OLAP_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [aggregation_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{OLAP_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::aggregation_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [aggregation_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{OLAP_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [aggregation_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{aggregation_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [aggregation_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{OLAP_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{OLAP_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{OLAP_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{OLAP_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_30_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_30_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_30_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_30_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_30_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_30_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DOUBLE_PRECISION/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_30_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_30_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE_PRECISION/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE_PRECISION)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE_PRECISION/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_30_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_30_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::FULL
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"FULL"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [FULL]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{FULL},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/full/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{FULL},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{FULL});
+    %item = (__RULE__ => q{FULL});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/full/i]}, Parse::RecDescent::_tracefirst($text),
+            q{FULL},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:full)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/full/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{FULL},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{FULL},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{FULL},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{FULL},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{FULL},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cast_specification
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_cast_specification"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_cast_specification]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SCOPE/ typed_table_name, or typed_view_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SCOPE/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SCOPE)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{typed_table_name, or typed_view_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SCOPE/ typed_table_name, or typed_view_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule_cast_specification},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::case_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"case_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [case_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CASE/i searched_when_clause, or simple_when_clause /ELSE\\s+NULL/i, or /ELSE/i /END/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{case_expression});
+    %item = (__RULE__ => q{case_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CASE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CASE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_case_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{searched_when_clause, or simple_when_clause})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_case_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_case_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{case_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_case_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_case_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/ELSE\\s+NULL/i, or /ELSE/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/ELSE\\s+NULL/i, or /ELSE/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_case_expression, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/ELSE\\s+NULL/i, or /ELSE/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{case_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_case_expression]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule_case_expression(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/END/i]}, Parse::RecDescent::_tracefirst($text),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/END/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:END)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CASE/i searched_when_clause, or simple_when_clause /ELSE\\s+NULL/i, or /ELSE/i /END/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{case_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{case_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{case_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::operator
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"operator"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [operator]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{operator},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CONCAT/i, or '||']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{operator});
+    %item = (__RULE__ => q{operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_operator]},
+          Parse::RecDescent::_tracefirst($text),
+          q{operator},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_operator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_operator]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{operator},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_operator]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_operator}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/i, or '||']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['/']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{operator});
+    %item = (__RULE__ => q{operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['/']},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\///)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['/']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['*']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{operator});
+    %item = (__RULE__ => q{operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['*']},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\*//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['*']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['+']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{operator});
+    %item = (__RULE__ => q{operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['+']},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\+//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['+']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['-']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{operator});
+    %item = (__RULE__ => q{operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['-']},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['-']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{operator},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{operator},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{operator},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_type
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_2_of_rule_type"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_2_of_rule_type]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_2_of_rule_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INSERT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_2_of_rule_type});
+    %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/INSERT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INSERT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DELETE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_2_of_rule_type});
+    %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DELETE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DELETE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DELETE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UPDATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_2_of_rule_type});
+    %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UPDATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPDATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UPDATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_2_of_rule_type},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_2_of_rule_type},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_8_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_8_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_8_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_8_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CONCAT/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_8_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_8_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CONCAT/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CONCAT)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['||']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_8_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_8_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['||']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\|\|//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['||']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_8_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_8_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_reference
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"sequence_reference"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [sequence_reference]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{sequence_reference},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [nextval_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sequence_reference});
+    %item = (__RULE__ => q{sequence_reference});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [nextval_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sequence_reference},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::nextval_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [nextval_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sequence_reference},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [nextval_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{nextval_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [nextval_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [prevval_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sequence_reference});
+    %item = (__RULE__ => q{sequence_reference});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [prevval_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sequence_reference},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::prevval_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [prevval_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sequence_reference},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [prevval_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{prevval_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [prevval_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{sequence_reference},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{sequence_reference},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{sequence_reference},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{sequence_reference},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ABS/i, or /ABSVAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i, or /ABSVAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/AVG/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AVG/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AVG)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/AVG/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/BIGINT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/BIGINT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BIGINT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/BIGINT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/BLOB/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/BLOB/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BLOB)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/BLOB/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CHAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CHAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CHAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CLOB/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CLOB/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CLOB)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CLOB/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COALESCE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[6];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COALESCE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COALESCE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COALESCE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CONCAT/, or '||']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[7];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_8_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_8_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_8_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/, or '||']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CORRELATION/i, or /CORR/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[8];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_9_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_9_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_9_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CORRELATION/i, or /CORR/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COUNT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[9];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COUNT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COUNT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COUNT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COUNT_BIG/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[10];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COUNT_BIG/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COUNT_BIG)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COUNT_BIG/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COVARIANCE/i, or /COVAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[11];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_12_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_12_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_12_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COVARIANCE/i, or /COVAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[12];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[13];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[14];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DBCLOB/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[15];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DBCLOB/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DBCLOB)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DBCLOB/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DECIMAL/i, or /DEC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[16];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_17_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_17_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_17_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DECIMAL/i, or /DEC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DECRYPT_BIN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[17];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DECRYPT_BIN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECRYPT_BIN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DECRYPT_BIN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DECRYPT_CHAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[18];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DECRYPT_CHAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DECRYPT_CHAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DECRYPT_CHAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DEREF/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[19];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DEREF/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEREF)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DEREF/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DIGITS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[20];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DIGITS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DIGITS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DIGITS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLCOMMENT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[21];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLCOMMENT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLCOMMENT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLCOMMENT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLLINKTYPE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[22];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLLINKTYPE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLLINKTYPE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLLINKTYPE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLURLCOMPLETE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[23];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLURLCOMPLETE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLCOMPLETE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLURLCOMPLETE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLURLPATH/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[24];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLURLPATH/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLPATH)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLURLPATH/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLURLPATHONLY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[25];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLURLPATHONLY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLPATHONLY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLURLPATHONLY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLURLSCHEME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[26];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLURLSCHEME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLSCHEME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLURLSCHEME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLURLSERVER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[27];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLURLSERVER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLURLSERVER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLURLSERVER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DLVALUE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[28];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DLVALUE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DLVALUE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DLVALUE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i, or /DOUBLE_PRECISION/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[29];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_30_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_30_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_30_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i, or /DOUBLE_PRECISION/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ENCRYPT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[30];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ENCRYPT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ENCRYPT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ENCRYPT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/EVENT_MON_STATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[31];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/EVENT_MON_STATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:EVENT_MON_STATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/EVENT_MON_STATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/FLOAT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[32];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FLOAT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FLOAT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/FLOAT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/GETHINT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[33];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/GETHINT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GETHINT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/GETHINT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/GENERATE_UNIQUE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[34];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/GENERATE_UNIQUE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GENERATE_UNIQUE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/GENERATE_UNIQUE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/GRAPHIC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[35];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/GRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GRAPHIC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/GRAPHIC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/GROUPING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[36];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/GROUPING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GROUPING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/GROUPING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/HEX/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[37];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/HEX/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HEX)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/HEX/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/HOUR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[38];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/HOUR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HOUR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/HOUR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/IDENTITY_VAL_LOCAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[39];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/IDENTITY_VAL_LOCAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:IDENTITY_VAL_LOCAL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/IDENTITY_VAL_LOCAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INTEGER/i, or /INT/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[40];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_41_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_41_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_41_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INTEGER/i, or /INT/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LCASE/i, or /LOWER/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[41];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_42_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_42_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_42_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i, or /LOWER/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LENGTH/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[42];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LENGTH/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LENGTH)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LENGTH/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LONG_VARCHAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[43];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LONG_VARCHAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LONG_VARCHAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LONG_VARCHAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LONG_VARGRAPHIC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[44];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LONG_VARGRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LONG_VARGRAPHIC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LONG_VARGRAPHIC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LTRIM/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[45];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LTRIM/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LTRIM)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LTRIM/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MAX/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[46];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MAX/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MAX)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MAX/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MICROSECOND/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[47];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MICROSECOND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MICROSECOND)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MICROSECOND/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MIN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[48];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MIN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MIN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MIN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MINUTE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[49];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MINUTE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MINUTE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MINUTE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MONTH/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[50];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MONTH/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTH)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MONTH/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MULTIPLY_ACT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[51];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MULTIPLY_ACT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MULTIPLY_ACT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MULTIPLY_ACT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NODENUMBER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[52];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NODENUMBER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NODENUMBER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NODENUMBER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULLIF/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[53];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULLIF/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLIF)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULLIF/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/PARTITON/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[54];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PARTITON/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PARTITON)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/PARTITON/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/POSSTR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[55];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/POSSTR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:POSSTR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/POSSTR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RAISE_ERROR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[56];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RAISE_ERROR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RAISE_ERROR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RAISE_ERROR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[57];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REAL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REC2XML/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[58];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REC2XML/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REC2XML)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REC2XML/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_AVGX/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[59];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_AVGX/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_AVGX)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_AVGX/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_AVGY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[60];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_AVGY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_AVGY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_AVGY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_COUNT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[61];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_COUNT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_COUNT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_COUNT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_INTERCEPT/i, or /REGR_ICPT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[62];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_63_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_63_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_63_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_INTERCEPT/i, or /REGR_ICPT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_R2/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[63];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_R2/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_R2)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_R2/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_SLOPE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[64];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SLOPE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SLOPE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SLOPE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_SXX/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[65];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SXX/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SXX)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SXX/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_SXY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[66];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SXY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SXY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SXY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_SYY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[67];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_SYY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_SYY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_SYY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RTRIM/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[68];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RTRIM/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RTRIM)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RTRIM/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SECOND/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[69];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SECOND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SECOND)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SECOND/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SMALLINT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[70];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SMALLINT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SMALLINT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SMALLINT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/STDDEV/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[71];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/STDDEV/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:STDDEV)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/STDDEV/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SUBSTR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[72];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SUBSTR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SUBSTR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SUBSTR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SUM/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[73];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SUM/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SUM)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SUM/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TABLE_NAME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[74];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TABLE_NAME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TABLE_NAME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TABLE_NAME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TABLE_SCHEMA/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[75];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TABLE_SCHEMA/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TABLE_SCHEMA)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TABLE_SCHEMA/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TIME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[76];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TIME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TIME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMP/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[77];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMP/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMP)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMP/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TRANSLATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[78];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TRANSLATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRANSLATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TRANSLATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TYPE_ID/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[79];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_ID/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_ID)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_ID/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TYPE_NAME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[80];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_NAME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_NAME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_NAME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TYPE_SCHEMA/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[81];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TYPE_SCHEMA/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TYPE_SCHEMA)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TYPE_SCHEMA/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UCASE/i, or /UPPER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[82];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_83_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_83_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_83_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i, or /UPPER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/VALUE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[83];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/VALUE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VALUE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/VALUE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/VARCHAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[84];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/VARCHAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARCHAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/VARCHAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/VARGRAPHIC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[85];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/VARGRAPHIC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:VARGRAPHIC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/VARGRAPHIC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/VARIANCE/i, or /VAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[86];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_87_of_rule_sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysibm_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_87_of_rule_sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_87_of_rule_sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/VARIANCE/i, or /VAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/YEAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[87];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysibm_function});
+    %item = (__RULE__ => q{sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/YEAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:YEAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/YEAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"window_partition_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [window_partition_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{window_partition_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/PARTITION\\s+BY/i <leftop: partitioning_expression /,/ partitioning_expression>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{window_partition_clause});
+    %item = (__RULE__ => q{window_partition_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PARTITION\\s+BY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PARTITION\s+BY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: partitioning_expression /,/ partitioning_expression>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_partition_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: partitioning_expression /,/ partitioning_expression>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [partitioning_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_partition_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{partitioning_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::partitioning_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [partitioning_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_partition_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [partitioning_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{partitioning_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+      $repcount++;
+
+      my $savetext = $text;
+      my $backtrack;
+
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'partitioning_expression(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [partitioning_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_partition_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{partitioning_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::partitioning_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [partitioning_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_partition_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [partitioning_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{partitioning_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
+
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: partitioning_expression /,/ partitioning_expression>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_partition_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: partitioning_expression /,/ partitioning_expression>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'partitioning_expression(s)'}=$_tok||[];
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/PARTITION\\s+BY/i <leftop: partitioning_expression /,/ partitioning_expression>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{window_partition_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{window_partition_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{window_partition_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{window_partition_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::WHERE
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"WHERE"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [WHERE]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{WHERE},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/where/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{WHERE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{WHERE});
+    %item = (__RULE__ => q{WHERE});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/where/i]}, Parse::RecDescent::_tracefirst($text),
+            q{WHERE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:where)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/where/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{WHERE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{WHERE},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{WHERE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{WHERE},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{WHERE},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"CREATE"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [CREATE]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{CREATE},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/create/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{CREATE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{CREATE});
+    %item = (__RULE__ => q{CREATE});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/create/i]}, Parse::RecDescent::_tracefirst($text),
+            q{CREATE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:create)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/create/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{CREATE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{CREATE},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{CREATE},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{CREATE},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{CREATE},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysfun
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_sysfun"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ABS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ABS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ABSVAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ABSVAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABSVAL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABSVAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_sysfun},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_sysfun},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SYSIBM\\.|/i sysibm_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SYSIBM\\.|/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SYSIBM\.|)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sysibm_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sysibm_function})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysibm_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sysibm_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sysibm_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sysibm_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SYSIBM\\.|/i sysibm_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SYSFUN\\.|/i sysfun_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SYSFUN\\.|/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SYSFUN\.|)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sysfun_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sysfun_function})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysfun_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sysfun_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sysfun_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sysfun_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SYSFUN\\.|/i sysfun_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [userdefined_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [userdefined_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::userdefined_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [userdefined_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [userdefined_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{userdefined_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [userdefined_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"identifier"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [identifier]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{identifier},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{identifier},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{identifier});
+    %item = (__RULE__ => q{identifier});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{identifier},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{identifier},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{identifier},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{identifier},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{identifier},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{identifier},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{identifier},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{identifier},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [asc_option]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [asc_option]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::asc_option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [asc_option]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [asc_option]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{asc_option}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [asc_option]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [desc_option]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [desc_option]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::desc_option($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [desc_option]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [desc_option]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{desc_option}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [desc_option]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"result_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [result_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{result_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{result_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{result_expression});
+    %item = (__RULE__ => q{result_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{result_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{result_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{result_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{result_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{result_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{result_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{result_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{result_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scoped_reference_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"scoped_reference_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [scoped_reference_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{scoped_reference_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{scoped_reference_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{scoped_reference_expression});
+    %item = (__RULE__ => q{scoped_reference_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{scoped_reference_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{scoped_reference_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{scoped_reference_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{scoped_reference_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { # scoped, reference
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{scoped_reference_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{scoped_reference_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{scoped_reference_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{scoped_reference_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{scoped_reference_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [typed_table_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [typed_table_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::typed_table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [typed_table_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [typed_table_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{typed_table_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [typed_table_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [typed_view_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [typed_view_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::typed_view_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [typed_view_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [typed_view_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{typed_view_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [typed_view_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WHEN/i '(' search_condition ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{when_clause});
+    %item = (__RULE__ => q{when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {$return = $item[3]};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i '(' search_condition ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_asc_option
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_asc_option"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_asc_option]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_asc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+FIRST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_asc_option});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_asc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+FIRST/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+FIRST)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+FIRST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULLS\\s+LAST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_asc_option});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_asc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULLS\\s+LAST/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULLS\s+LAST)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULLS\\s+LAST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_asc_option},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_asc_option},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"sequence_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [sequence_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{sequence_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sequence_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sequence_name});
+    %item = (__RULE__ => q{sequence_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sequence_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sequence_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sequence_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{sequence_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{sequence_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{sequence_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{sequence_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_duration
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"ld_duration"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [ld_duration]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{ld_duration},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/YEARS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/YEARS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:YEARS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/YEARS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MONTHS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MONTHS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTHS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MONTHS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/HOURS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/HOURS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:HOURS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/HOURS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MINUTES?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MINUTES?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MINUTES?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MINUTES?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SECONDS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SECONDS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SECONDS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SECONDS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MICROSECONDS?/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[6];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_duration});
+    %item = (__RULE__ => q{ld_duration});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MICROSECONDS?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MICROSECONDS?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MICROSECONDS?/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{ld_duration},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{ld_duration},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{ld_duration},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{ld_duration},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_a
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"reference_a"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [reference_a]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{reference_a},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REFERENCING/i old_new_corr old_new_table]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{reference_a});
+    %item = (__RULE__ => q{reference_a});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REFERENCING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REFERENCING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_corr]},
+          Parse::RecDescent::_tracefirst($text),
+          q{reference_a},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{old_new_corr})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr, 0, 2, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_corr]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{reference_a},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_corr]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{old_new_corr(0..2)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_table]},
+          Parse::RecDescent::_tracefirst($text),
+          q{reference_a},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{old_new_table})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_table, 0, 2, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_table]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{reference_a},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_table]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{old_new_table(0..2)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', $item[1], join(' ', @{$item[2]}), join(' ', @{$item[3]})  ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REFERENCING/i old_new_corr old_new_table]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{reference_a},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{reference_a},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{reference_a},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{reference_a},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cast_specification
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"cast_specification"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [cast_specification]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CAST/i '(' expression, or /NULL/i, or parameter_marker /AS/i data_type /SCOPE/ ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{cast_specification});
+    %item = (__RULE__ => q{cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CAST/i]}, Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CAST)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_cast_specification]},
+          Parse::RecDescent::_tracefirst($text),
+          q{cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{expression, or /NULL/i, or parameter_marker})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_cast_specification]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_cast_specification]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_cast_specification}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AS/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [data_type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{data_type})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::data_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [data_type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [data_type]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{data_type}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/SCOPE/]},
+          Parse::RecDescent::_tracefirst($text),
+          q{cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/SCOPE/})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cast_specification, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/SCOPE/]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_2_of_production_1_of_rule_cast_specification]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule_cast_specification(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CAST/i '(' expression, or /NULL/i, or parameter_marker /AS/i data_type /SCOPE/ ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{cast_specification},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{cast_specification},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{cast_specification},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"type"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [type]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UPDATE/i /OF/i <leftop: column_name /,/ column_name>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{type});
+    %item = (__RULE__ => q{type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UPDATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPDATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OF/i]}, Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/OF/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OF)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: column_name /,/ column_name>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: column_name /,/ column_name>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+      $repcount++;
+
+      my $savetext = $text;
+      my $backtrack;
+
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN3__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'column_name(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
+
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: column_name /,/ column_name>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: column_name /,/ column_name>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'column_name(s)'}=$_tok||[];
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { event  => 'update_on',
+              fields => $item[3] }
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UPDATE/i /OF/i <leftop: column_name /,/ column_name>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INSERT/i, or /DELETE/i, or /UPDATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{type});
+    %item = (__RULE__ => q{type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_2_of_rule_type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_2_of_rule_type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_2_of_rule_type]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_2_of_rule_type}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { event => $item[1] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i, or /DELETE/i, or /UPDATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{type},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{type},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{type},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_12_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_12_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_12_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_12_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COVARIANCE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_12_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_12_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COVARIANCE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COVARIANCE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COVARIANCE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COVAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_12_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_12_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COVAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COVAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COVAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_12_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_12_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scalar_fullselect
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"scalar_fullselect"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [scalar_fullselect]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{scalar_fullselect},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' fullselect ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{scalar_fullselect});
+    %item = (__RULE__ => q{scalar_fullselect});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
+          Parse::RecDescent::_tracefirst($text),
+          q{scalar_fullselect},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{fullselect})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{scalar_fullselect},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{fullselect}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' fullselect ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{scalar_fullselect},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{scalar_fullselect},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{scalar_fullselect},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{scalar_fullselect},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_options
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_options"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_options]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_options},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CASCADED/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_options});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_options});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CASCADED/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CASCADED)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CASCADED/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LOCAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_options});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_options});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LOCAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOCAL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LOCAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_options},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_options},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"func_args"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [func_args]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{func_args},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{func_args},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{func_args});
+    %item = (__RULE__ => q{func_args});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{func_args},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{func_args},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{func_args},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{func_args},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{func_args},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{func_args},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{func_args},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{func_args},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"trigger_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [trigger_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{trigger_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{trigger_name});
+    %item = (__RULE__ => q{trigger_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
+          Parse::RecDescent::_tracefirst($text),
+          q{trigger_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{trigger_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{SCHEMA}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['.']},
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'.'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{trigger_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{NAME})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{trigger_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{trigger_name});
+    %item = (__RULE__ => q{trigger_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{trigger_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{trigger_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{trigger_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{trigger_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{trigger_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{trigger_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_numbering_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_numbering_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_numbering_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule_numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_numbering_function});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_numbering_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANGE\s+BETWEEN\s+UNBOUNDED\s+PRECEDING\s+AND\s+UNBBOUNDED\s+FOLLOWING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [window_aggregation_group_clause]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_numbering_function});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_numbering_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_aggregation_group_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [window_aggregation_group_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_aggregation_group_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [window_aggregation_group_clause]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule_numbering_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"method_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [method_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{method_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{method_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{method_name});
+    %item = (__RULE__ => q{method_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{method_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{method_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{method_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{method_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { # must be a method of subject_expression
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{method_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{method_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{method_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{method_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{method_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::quantified_p
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"quantified_p"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [quantified_p]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{quantified_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression1 /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ /SOME|ANY|ALL/i '(' fullselect ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{quantified_p});
+    %item = (__RULE__ => q{quantified_p});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression1]},
+          Parse::RecDescent::_tracefirst($text),
+          q{quantified_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression1]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{quantified_p},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression1]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression1}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/]}, Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(=|<>|<|>|<=|=>|\^=|\^<|\^>|\!=))//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SOME|ANY|ALL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/SOME|ANY|ALL/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SOME|ANY|ALL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
+          Parse::RecDescent::_tracefirst($text),
+          q{quantified_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{fullselect})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{quantified_p},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{fullselect}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression1 /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ /SOME|ANY|ALL/i '(' fullselect ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{quantified_p},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{quantified_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{quantified_p},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{quantified_p},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"common_table_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [common_table_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [table_name column_list /AS/i get_bracketed]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{common_table_expression});
+    %item = (__RULE__ => q{common_table_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{table_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_list]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_list})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_list]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_list]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_list}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AS/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [get_bracketed]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{get_bracketed})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::get_bracketed($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [get_bracketed]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [get_bracketed]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{get_bracketed}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    $return = { name  => $item{table_name}{name},
+                query => $item[4]
+                };
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [table_name column_list /AS/i get_bracketed]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [table_name column_list /AS/i '(' fullselect ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{common_table_expression});
+    %item = (__RULE__ => q{common_table_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{table_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_list]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_list})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_list]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_list]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_list}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AS/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
+          Parse::RecDescent::_tracefirst($text),
+          q{common_table_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{fullselect})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{common_table_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{fullselect}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [table_name column_list /AS/i '(' fullselect ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{common_table_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{common_table_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{common_table_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{common_table_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::after
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"after"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [after]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{after},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/AFTER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{after},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{after});
+    %item = (__RULE__ => q{after});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AFTER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{after},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AFTER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/AFTER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{after},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{after},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{after},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{after},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{after},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"predicate"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [predicate]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [basic_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [basic_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::basic_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [basic_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [basic_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{basic_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [basic_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [quantified_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [quantified_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::quantified_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [quantified_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [quantified_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{quantified_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [quantified_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [between_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [between_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::between_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [between_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [between_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{between_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [between_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [exists_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [exists_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::exists_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [exists_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [exists_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{exists_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [exists_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [in_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [in_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::in_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [in_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [in_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{in_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [in_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [like_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [like_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::like_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [like_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [like_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{like_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [like_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [null_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[6];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [null_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::null_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [null_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [null_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{null_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [null_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [type_p]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[7];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{predicate});
+    %item = (__RULE__ => q{predicate});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [type_p]},
+          Parse::RecDescent::_tracefirst($text),
+          q{predicate},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [type_p]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{predicate},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [type_p]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{type_p}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [type_p]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{predicate},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{predicate},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{predicate},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{predicate},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"column_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [column_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{column_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{column_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{column_name});
+    %item = (__RULE__ => q{column_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{column_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{column_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{column_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{column_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{column_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{column_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{column_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_invocation
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"method_invocation"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [method_invocation]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [subject_expression '..' method_name '(']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{method_invocation});
+    %item = (__RULE__ => q{method_invocation});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [subject_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subject_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [subject_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{method_invocation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [subject_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{subject_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['..']},
+            Parse::RecDescent::_tracefirst($text),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'..'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.\.//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [method_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{method_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [method_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{method_invocation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [method_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{method_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: ['(']},
+          Parse::RecDescent::_tracefirst($text),
+          q{method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{'('})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_method_invocation, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['(']>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{method_invocation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_method_invocation]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_method_invocation(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [subject_expression '..' method_name '(']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{method_invocation},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{method_invocation},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{method_invocation},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_dereference_operation
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_dereference_operation"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_dereference_operation]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_dereference_operation});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_dereference_operation});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{expression})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression, 1, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_dereference_operation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [expression]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression(s)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_dereference_operation},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_dereference_operation},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_searched_when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_searched_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_searched_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_searched_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_searched_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/THEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/THEN/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:THEN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{result_expression, or /NULL/i})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound2
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"group_bound2"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [group_bound2]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{group_bound2},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound2});
+    %item = (__RULE__ => q{group_bound2});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound2});
+    %item = (__RULE__ => q{group_bound2});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_bound2},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_bound2},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/PRECEDING/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound2});
+    %item = (__RULE__ => q{group_bound2});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_bound2},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_bound2},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FOLLOWING/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_bound2});
+    %item = (__RULE__ => q{group_bound2});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{group_bound2},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{group_bound2},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{group_bound2},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{group_bound2},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::searched_when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"searched_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [searched_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WHEN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{searched_when_clause});
+    %item = (__RULE__ => q{searched_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/WHEN/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_searched_when_clause, 1, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/WHEN/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{searched_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_searched_when_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_searched_when_clause(s)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{searched_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{searched_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{searched_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::basic_p
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"basic_p"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [basic_p]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{basic_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{basic_p});
+    %item = (__RULE__ => q{basic_p});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{basic_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{basic_p},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/]}, Parse::RecDescent::_tracefirst($text),
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(=|<>|<|>|<=|=>|\^=|\^<|\^>|\!=))//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{basic_p},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{basic_p},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{basic_p},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{basic_p},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{basic_p},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{basic_p},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::asc_option
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"asc_option"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [asc_option]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{asc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ASC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{asc_option});
+    %item = (__RULE__ => q{asc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ASC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{asc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_asc_option, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{asc_option},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_asc_option]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_asc_option(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ASC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{asc_option},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{asc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{asc_option},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{asc_option},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"search_condition"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [search_condition]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/[^)]+/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{search_condition});
+    %item = (__RULE__ => q{search_condition});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/[^)]+/]}, Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^)]+)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/[^)]+/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NOT|/i predicate, or '(' cond]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{search_condition});
+    %item = (__RULE__ => q{search_condition});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NOT|/i]}, Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NOT|)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_2_of_rule_search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{predicate, or '('})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_2_of_rule_search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_2_of_rule_search_condition]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_2_of_rule_search_condition}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [cond]},
+          Parse::RecDescent::_tracefirst($text),
+          q{search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{cond})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cond, 0, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [cond]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [cond]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{cond(s?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NOT|/i predicate, or '(' cond]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{search_condition},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{search_condition},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{search_condition},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_operator
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_operator"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_operator]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_operator},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CONCAT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_operator});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CONCAT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CONCAT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['||']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_operator});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_operator});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['||']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\|\|//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['||']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_operator},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_operator},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::simple_when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"simple_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [simple_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression /WHEN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{simple_when_clause});
+    %item = (__RULE__ => q{simple_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{simple_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/WHEN/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/WHEN/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_simple_when_clause, 1, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/WHEN/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{simple_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_simple_when_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_simple_when_clause(s)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression /WHEN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{simple_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{simple_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{simple_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::INNER
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"INNER"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [INNER]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{INNER},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/inner/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{INNER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{INNER});
+    %item = (__RULE__ => q{INNER});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/inner/i]}, Parse::RecDescent::_tracefirst($text),
+            q{INNER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:inner)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/inner/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{INNER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{INNER},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{INNER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{INNER},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{INNER},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::eofile
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"eofile"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [eofile]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{eofile},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/^\\Z/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{eofile},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{eofile});
+    %item = (__RULE__ => q{eofile});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/^\\Z/]}, Parse::RecDescent::_tracefirst($text),
+            q{eofile},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:^\Z)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/^\\Z/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{eofile},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{eofile},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{eofile},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{eofile},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{eofile},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cond
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"cond"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [cond]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/AND/i, or /OR/i /NOT|/i predicate, or '(']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{cond});
+    %item = (__RULE__ => q{cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_cond]},
+          Parse::RecDescent::_tracefirst($text),
+          q{cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cond($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_cond]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_cond]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_cond}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NOT|/i]}, Parse::RecDescent::_tracefirst($text),
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/NOT|/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NOT|)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule_cond]},
+          Parse::RecDescent::_tracefirst($text),
+          q{cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{predicate, or '('})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cond($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule_cond]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule_cond]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule_cond}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/AND/i, or /OR/i /NOT|/i predicate, or '(']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{cond},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{cond},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{cond},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_type
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"ld_type"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [ld_type]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_type});
+    %item = (__RULE__ => q{ld_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ld_type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_type});
+    %item = (__RULE__ => q{ld_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ld_type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [constant]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_type});
+    %item = (__RULE__ => q{ld_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ld_type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [constant]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [column_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_type});
+    %item = (__RULE__ => q{ld_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ld_type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [column_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [host_variable]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ld_type});
+    %item = (__RULE__ => q{ld_type});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [host_variable]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ld_type},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::host_variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [host_variable]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ld_type},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [host_variable]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{host_variable}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [host_variable]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{ld_type},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{ld_type},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{ld_type},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{ld_type},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::RIGHT
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"RIGHT"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [RIGHT]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{RIGHT},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/right/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{RIGHT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{RIGHT});
+    %item = (__RULE__ => q{RIGHT});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/right/i]}, Parse::RecDescent::_tracefirst($text),
+            q{RIGHT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:right)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/right/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{RIGHT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{RIGHT},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{RIGHT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{RIGHT},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{RIGHT},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_method_invocation
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_method_invocation"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_method_invocation]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_method_invocation});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_method_invocation});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_method_invocation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{expression})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression, 1, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_method_invocation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [expression]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression(s)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_method_invocation},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_method_invocation},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::LEFT
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"LEFT"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [LEFT]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{LEFT},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/left/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{LEFT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{LEFT});
+    %item = (__RULE__ => q{LEFT});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/left/i]}, Parse::RecDescent::_tracefirst($text),
+            q{LEFT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:left)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/left/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{LEFT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{LEFT},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{LEFT},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{LEFT},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{LEFT},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"table_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [table_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{table_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{table_name});
+    %item = (__RULE__ => q{table_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
+          Parse::RecDescent::_tracefirst($text),
+          q{table_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{table_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{SCHEMA}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['.']},
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'.'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{table_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{NAME})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{table_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{table_name});
+    %item = (__RULE__ => q{table_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{table_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{table_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{table_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{table_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{table_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{table_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_53_of_rule_sysfun
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_53_of_rule_sysfun"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_53_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_53_of_rule_sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TRUNCATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_53_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_53_of_rule_sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TRUNCATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRUNCATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TRUNCATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TRUNC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_53_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_53_of_rule_sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TRUNC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRUNC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TRUNC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_53_of_rule_sysfun},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_53_of_rule_sysfun},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::options
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"options"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [options]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{options},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WITH/i /CASCADED/i, or /LOCAL/i /CHECK\\s+OPTION/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{options});
+    %item = (__RULE__ => q{options});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WITH/i]}, Parse::RecDescent::_tracefirst($text),
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WITH)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_options]},
+          Parse::RecDescent::_tracefirst($text),
+          q{options},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{/CASCADED/i, or /LOCAL/i})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_options($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_options]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{options},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_options]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_options}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CHECK\\s+OPTION/i]}, Parse::RecDescent::_tracefirst($text),
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/CHECK\\s+OPTION/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHECK\s+OPTION)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WITH/i /CASCADED/i, or /LOCAL/i /CHECK\\s+OPTION/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{options},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{options},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{options},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{options},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SYSIBM\\.|/i, or /SYSFUN\\.|/i, or userdefined_function '(' <leftop: func_args /,/ func_args> ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{function});
+    %item = (__RULE__ => q{function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: func_args /,/ func_args>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: func_args /,/ func_args>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [func_args]},
+          Parse::RecDescent::_tracefirst($text),
+          q{function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{func_args})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [func_args]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [func_args]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{func_args}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+      $repcount++;
+
+      my $savetext = $text;
+      my $backtrack;
+
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'func_args(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [func_args]},
+          Parse::RecDescent::_tracefirst($text),
+          q{function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{func_args})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [func_args]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [func_args]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{func_args}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
+
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: func_args /,/ func_args>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: func_args /,/ func_args>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'func_args(s)'}=$_tok||[];
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SYSIBM\\.|/i, or /SYSFUN\\.|/i, or userdefined_function '(' <leftop: func_args /,/ func_args> ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_41_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_41_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_41_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_41_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INTEGER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_41_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_41_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/INTEGER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INTEGER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INTEGER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INT/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_41_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_41_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/INT/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INT)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INT/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_41_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_41_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_case_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_case_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_case_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [searched_when_clause]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_case_expression});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_case_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [searched_when_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::searched_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [searched_when_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_case_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [searched_when_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{searched_when_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [searched_when_clause]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [simple_when_clause]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_case_expression});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_case_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [simple_when_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_case_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::simple_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [simple_when_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_case_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [simple_when_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{simple_when_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [simple_when_clause]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_case_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_case_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_window_order_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [sort_key_expression asc_option, or desc_option]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_window_order_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_order_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sort_key_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sort_key_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sort_key_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sort_key_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sort_key_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [asc_option, or desc_option]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{asc_option, or desc_option})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [asc_option, or desc_option]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [sort_key_expression asc_option, or desc_option]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_window_order_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_window_order_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::create
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"create"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [create]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [CREATE TRIGGER trigger_name before type /ON/i table_name reference_b /FOR EACH ROW/i 'MODE DB2SQL' triggered_action]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{create});
+    %item = (__RULE__ => q{create});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{CREATE}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [TRIGGER]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{TRIGGER})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::TRIGGER($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [TRIGGER]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [TRIGGER]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{TRIGGER}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [trigger_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{trigger_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [trigger_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [trigger_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{trigger_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [before]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{before})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::before($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [before]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [before]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{before}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{type})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{type}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ON/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/ON/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ON)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{table_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{table_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [reference_b]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{reference_b})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_b, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [reference_b]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reference_b]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{reference_b(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FOR EACH ROW/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FOR EACH ROW/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOR EACH ROW)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['MODE DB2SQL']},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'MODE DB2SQL'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\AMODE\ DB2SQL//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [triggered_action]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{triggered_action})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [triggered_action]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [triggered_action]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{triggered_action}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    my $table_name = $item{'table_name'}{'name'};
+    $return =  {
+        table      => $table_name,
+        schema     => $item{'trigger_name'}{'schema'},
+        name       => $item{'trigger_name'}{'name'},
+        when       => 'before',
+        db_event   => $item{'type'}->{'event'},
+        fields     => $item{'type'}{'fields'},
+        condition  => $item{'triggered_action'}{'condition'},
+        reference  => $item{'reference_b'},
+        granularity => $item[9],
+        action     => $item{'triggered_action'}{'statement'}
+    };
+
+    push @triggers, $return;
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [CREATE TRIGGER trigger_name before type /ON/i table_name reference_b /FOR EACH ROW/i 'MODE DB2SQL' triggered_action]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [CREATE TRIGGER trigger_name after type /ON/i table_name reference_a /FOR EACH ROW|FOR EACH STATEMENT/i 'MODE DB2SQL' triggered_action]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{create});
+    %item = (__RULE__ => q{create});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{CREATE}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [TRIGGER]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{TRIGGER})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::TRIGGER($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [TRIGGER]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [TRIGGER]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{TRIGGER}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [trigger_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{trigger_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [trigger_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [trigger_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{trigger_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [after]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{after})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::after($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [after]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [after]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{after}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{type})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{type}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ON/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/ON/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ON)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{table_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{table_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [reference_a]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{reference_a})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_a, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [reference_a]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reference_a]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{reference_a(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FOR EACH ROW|FOR EACH STATEMENT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FOR EACH ROW|FOR EACH STATEMENT/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOR EACH ROW|FOR EACH STATEMENT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['MODE DB2SQL']},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'MODE DB2SQL'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\AMODE\ DB2SQL//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [triggered_action]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{triggered_action})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [triggered_action]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [triggered_action]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{triggered_action}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    my $table_name = $item{'table_name'}{'name'};
+    $return = {
+        table      => $table_name,
+        schema     => $item{'trigger_name'}{'schema'},
+        name       => $item{'trigger_name'}{'name'},
+        when       => 'after',
+        db_event   => $item{'type'}{'event'},
+        fields     => $item{'type'}{'fields'},
+        condition  => $item{'triggered_action'}{'condition'},
+        reference  => $item{'reference_a'},
+        granularity => $item[9],
+        action     => $item{'triggered_action'}{'statement'}
+    };
+
+    push @triggers, $return;
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [CREATE TRIGGER trigger_name after type /ON/i table_name reference_a /FOR EACH ROW|FOR EACH STATEMENT/i 'MODE DB2SQL' triggered_action]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [CREATE /FEDERATED|/i VIEW view_name column_list /AS/i with_expression SQL_procedure_statement]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{create});
+    %item = (__RULE__ => q{create});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{CREATE}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FEDERATED|/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/FEDERATED|/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FEDERATED|)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [VIEW]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{VIEW})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::VIEW($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [VIEW]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [VIEW]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{VIEW}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [view_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{view_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::view_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [view_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [view_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{view_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [column_list]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{column_list})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [column_list]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [column_list]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_list(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AS/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [with_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{with_expression})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::with_expression, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [with_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [with_expression]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{with_expression(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [SQL_procedure_statement]},
+          Parse::RecDescent::_tracefirst($text),
+          q{create},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{SQL_procedure_statement})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [SQL_procedure_statement]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{create},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [SQL_procedure_statement]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{SQL_procedure_statement}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    $return = {
+        name   => $item{view_name}{name},
+        sql    => $item{SQL_procedure_statement},
+        with   => $item{'with_expression(?)'},
+        fields => $item{'column_list(?)'}
+    };
+    push @views, $return;
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [CREATE /FEDERATED|/i VIEW view_name column_list /AS/i with_expression SQL_procedure_statement]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{create},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{create},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{create},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{create},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysfun
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"sysfun"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [sysfun]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ABS/i, or /ABSVAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_sysfun]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysfun},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_sysfun]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_sysfun}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i, or /ABSVAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ACOS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ACOS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ACOS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ACOS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ASCII/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ASCII/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASCII)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ASCII/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ASIN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ASIN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASIN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ASIN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ATAN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ATAN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ATAN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ATAN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ATAN2/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ATAN2/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ATAN2)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ATAN2/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CEIL/i, or /CEILING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[6];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_7_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_7_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_7_of_rule_sysfun]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysfun},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_7_of_rule_sysfun]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_7_of_rule_sysfun}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CEIL/i, or /CEILING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CHAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[7];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CHAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CHAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CHR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[8];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CHR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CHR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[9];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/COT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[10];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/COT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/COT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYNAME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[11];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYNAME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYNAME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYNAME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYOFWEEK/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[12];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFWEEK/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFWEEK)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFWEEK/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYOFWEEK_ISO/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[13];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFWEEK_ISO/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFWEEK_ISO)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFWEEK_ISO/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DAYOFYEAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[14];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFYEAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFYEAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFYEAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DEGREES/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[15];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DEGREES/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEGREES)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DEGREES/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DIFFERENCE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[16];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DIFFERENCE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DIFFERENCE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DIFFERENCE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[17];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/EXP/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[18];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/EXP/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:EXP)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/EXP/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/FLOOR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[19];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/FLOOR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FLOOR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/FLOOR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/GET_ROUTINE_SAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[20];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/GET_ROUTINE_SAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GET_ROUTINE_SAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/GET_ROUTINE_SAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/INSERT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[21];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/INSERT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INSERT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/JULIAN_DAY/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[22];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/JULIAN_DAY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:JULIAN_DAY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/JULIAN_DAY/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LCASE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[23];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LCASE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LCASE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LEFT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[24];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LEFT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LEFT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LEFT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[25];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LOCATE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[26];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LOCATE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOCATE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LOCATE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LOG/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[27];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LOG/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOG)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LOG/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LOG10/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[28];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LOG10/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOG10)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LOG10/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LTRIM/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[29];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LTRIM/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LTRIM)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LTRIM/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MIDNIGHT_SECONDS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[30];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MIDNIGHT_SECONDS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MIDNIGHT_SECONDS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MIDNIGHT_SECONDS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MOD/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[31];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MOD/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MOD)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MOD/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/MONTHNAME/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[32];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/MONTHNAME/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTHNAME)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/MONTHNAME/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/POWER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[33];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/POWER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:POWER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/POWER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/PUT_ROUTINE_SAR/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[34];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PUT_ROUTINE_SAR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PUT_ROUTINE_SAR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/PUT_ROUTINE_SAR/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/QUARTER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[35];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/QUARTER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:QUARTER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/QUARTER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RADIANS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[36];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RADIANS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RADIANS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RADIANS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RAND/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[37];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RAND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RAND)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RAND/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REPEAT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[38];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REPEAT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REPEAT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REPEAT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REPLACE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[39];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REPLACE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REPLACE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/REPLACE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RIGHT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[40];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RIGHT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RIGHT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RIGHT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ROUND/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[41];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ROUND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROUND)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ROUND/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RTRIM/ I]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[42];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RTRIM/]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RTRIM)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [I]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{I})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::I($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [I]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysfun},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [I]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{I}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RTRIM/ I]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SIGN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[43];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SIGN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SIGN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SIGN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SIN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[44];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SIN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SIN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SIN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SOUNDEX/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[45];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SOUNDEX/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SOUNDEX)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SOUNDEX/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SPACE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[46];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SPACE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SPACE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SPACE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SQLCACHE_SNAPSHOT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[47];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SQLCACHE_SNAPSHOT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SQLCACHE_SNAPSHOT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SQLCACHE_SNAPSHOT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SQRT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[48];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SQRT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SQRT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SQRT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TAN/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[49];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TAN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TAN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TAN/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMP_ISO/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[50];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMP_ISO/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMP_ISO)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMP_ISO/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMPDIFF/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[51];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMPDIFF/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMPDIFF)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMPDIFF/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TRUNCATE/i, or /TRUNC/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[52];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_53_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($text),
+          q{sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_53_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_53_of_rule_sysfun]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{sysfun},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_53_of_rule_sysfun]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_53_of_rule_sysfun}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TRUNCATE/i, or /TRUNC/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UCASE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[53];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UCASE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UCASE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WEEK/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[54];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WEEK/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WEEK)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WEEK/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WEEK_ISO/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[55];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{sysfun});
+    %item = (__RULE__ => q{sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WEEK_ISO/i]}, Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WEEK_ISO)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WEEK_ISO/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{sysfun},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{sysfun},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{sysfun},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SELECTIVITY/i numeric_constant]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SELECTIVITY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SELECTIVITY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [numeric_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{numeric_constant})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [numeric_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [numeric_constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{numeric_constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SELECTIVITY/i numeric_constant]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"NAME"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [NAME]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{NAME},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{NAME});
+    %item = (__RULE__ => q{NAME});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w+)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/\\w\{1,18\}/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{NAME});
+    %item = (__RULE__ => q{NAME});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/\\w\{1,18\}/]}, Parse::RecDescent::_tracefirst($text),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w{1,18})//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/\\w\{1,18\}/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{NAME},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{NAME},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{NAME},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{NAME},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"constant"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [constant]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [int_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [int_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::int_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [int_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [int_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{int_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [int_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [float_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [float_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::float_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [float_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [float_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{float_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [float_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [dec_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [dec_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::dec_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [dec_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [dec_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{dec_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [dec_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [char_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [char_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::char_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [char_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [char_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{char_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [char_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [hex_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [hex_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::hex_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [hex_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [hex_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{hex_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [hex_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [grastr_const]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{constant});
+    %item = (__RULE__ => q{constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [grastr_const]},
+          Parse::RecDescent::_tracefirst($text),
+          q{constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::grastr_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [grastr_const]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{constant},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [grastr_const]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{grastr_const}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [grastr_const]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{constant},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{constant},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{constant},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_ranking_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_ranking_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_ranking_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_ranking_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RANK/ '()']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_ranking_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_ranking_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/RANK/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANK)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['()']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'()'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RANK/ '()']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DENSE_RANK|DENSERANK/i '()']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_ranking_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_ranking_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DENSE_RANK|DENSERANK/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DENSE_RANK|DENSERANK)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['()']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'()'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DENSE_RANK|DENSERANK/i '()']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_ranking_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_ranking_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"window_aggregation_group_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ROWS/i, or /RANGE/i group_start, or group_between, or group_end]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{window_aggregation_group_clause});
+    %item = (__RULE__ => q{window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_aggregation_group_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{group_start, or group_between, or group_end})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_aggregation_group_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ROWS/i, or /RANGE/i group_start, or group_between, or group_end]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{window_aggregation_group_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{window_aggregation_group_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{window_aggregation_group_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_window_aggregation_group_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_window_aggregation_group_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [group_start]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [group_start]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_start($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_start]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [group_start]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{group_start}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [group_start]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [group_between]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [group_between]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_between($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_between]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [group_between]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{group_between}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [group_between]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [group_end]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [group_end]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_end($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_end]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [group_end]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{group_end}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [group_end]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::VIEW
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"VIEW"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [VIEW]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{VIEW},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/view/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{VIEW},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{VIEW});
+    %item = (__RULE__ => q{VIEW});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/view/i]}, Parse::RecDescent::_tracefirst($text),
+            q{VIEW},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:view)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/view/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{VIEW},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{VIEW},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{VIEW},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{VIEW},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{VIEW},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::with_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"with_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [with_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{with_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WITH/i <leftop: common_table_expression /,/ common_table_expression>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{with_expression});
+    %item = (__RULE__ => q{with_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WITH/i]}, Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WITH)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: common_table_expression /,/ common_table_expression>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{with_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: common_table_expression /,/ common_table_expression>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [common_table_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{with_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{common_table_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [common_table_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{with_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [common_table_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{common_table_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+      $repcount++;
+
+      my $savetext = $text;
+      my $backtrack;
+
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'common_table_expression(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [common_table_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{with_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{common_table_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [common_table_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{with_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [common_table_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{common_table_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
+
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: common_table_expression /,/ common_table_expression>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{with_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: common_table_expression /,/ common_table_expression>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'common_table_expression(s)'}=$_tok||[];
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    $return = $item{'common_table_expression'};
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WITH/i <leftop: common_table_expression /,/ common_table_expression>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{with_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{with_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{with_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{with_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"numeric_constant"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [numeric_constant]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{numeric_constant},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/\\d+/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{numeric_constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{numeric_constant});
+    %item = (__RULE__ => q{numeric_constant});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
+            q{numeric_constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\d+)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{numeric_constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{numeric_constant},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{numeric_constant},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{numeric_constant},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{numeric_constant},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_table
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"old_new_table"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [old_new_table]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{old_new_table},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/OLD_TABLE/i /(AS)?/i identifier]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{old_new_table});
+    %item = (__RULE__ => q{old_new_table});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OLD_TABLE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OLD_TABLE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(AS)?/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+          Parse::RecDescent::_tracefirst($text),
+          q{old_new_table},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{identifier})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{old_new_table},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{identifier}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/OLD_TABLE/i /(AS)?/i identifier]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NEW_TABLE/i /(AS)?/i identifier]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{old_new_table});
+    %item = (__RULE__ => q{old_new_table});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NEW_TABLE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEW_TABLE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(AS)?/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
+          Parse::RecDescent::_tracefirst($text),
+          q{old_new_table},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{identifier})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{old_new_table},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{identifier}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NEW_TABLE/i /(AS)?/i identifier]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{old_new_table},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{old_new_table},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{old_new_table},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{old_new_table},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_numbering_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_numbering_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_numbering_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [window_order_clause window_aggregation_group_clause]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_numbering_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_numbering_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [window_order_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_order_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [window_order_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_order_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [window_aggregation_group_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_numbering_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{window_aggregation_group_clause})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_aggregation_group_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_numbering_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_aggregation_group_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_aggregation_group_clause(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [window_order_clause window_aggregation_group_clause]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_numbering_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_numbering_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [result_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{result_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [result_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"old_new_corr"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [old_new_corr]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{old_new_corr},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/OLD/i /(AS)?/i correlation_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{old_new_corr});
+    %item = (__RULE__ => q{old_new_corr});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OLD/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OLD)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(AS)?/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [correlation_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{old_new_corr},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{correlation_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [correlation_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{old_new_corr},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [correlation_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{correlation_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/OLD/i /(AS)?/i correlation_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NEW/i /(AS)?/i correlation_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{old_new_corr});
+    %item = (__RULE__ => q{old_new_corr});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NEW/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEW)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(AS)?/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [correlation_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{old_new_corr},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{correlation_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [correlation_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{old_new_corr},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [correlation_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{correlation_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NEW/i /(AS)?/i correlation_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{old_new_corr},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{old_new_corr},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{old_new_corr},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{old_new_corr},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_42_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_42_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_42_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_42_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LCASE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_42_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_42_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LCASE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LCASE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/LOWER/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_42_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_42_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/LOWER/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOWER)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/LOWER/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_42_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_42_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subtype_treatment
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"subtype_treatment"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [subtype_treatment]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{subtype_treatment},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/TREAT/i '(' expression /AS/i data_type ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{subtype_treatment});
+    %item = (__RULE__ => q{subtype_treatment});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/TREAT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TREAT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{subtype_treatment},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{subtype_treatment},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AS/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [data_type]},
+          Parse::RecDescent::_tracefirst($text),
+          q{subtype_treatment},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{data_type})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::data_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [data_type]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{subtype_treatment},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [data_type]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{data_type}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/TREAT/i '(' expression /AS/i data_type ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{subtype_treatment},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{subtype_treatment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{subtype_treatment},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{subtype_treatment},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"type"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [type]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UPDATE/i /OF/i <leftop: column_name /,/ column_name>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{type});
-               %item = (__RULE__ => q{type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UPDATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPDATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OF/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/OF/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OF)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: column_name /,/ column_name>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: column_name /,/ column_name>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN3__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'column_name(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: column_name /,/ column_name>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: column_name /,/ column_name>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'column_name(s)'}=$_tok||[];
-
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { event  => 'update_on',
-              fields => $item[3] }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [<leftop: '+', or '-' /operator/ '+', or '-'>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{expression});
+    %item = (__RULE__ => q{expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{'+', or '-'})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+      $repcount++;
+
+      my $savetext = $text;
+      my $backtrack;
+
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/operator/]}, Parse::RecDescent::_tracefirst($text),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/operator/})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:operator)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'_alternation_1_of_production_1_of_rule_expression(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{'+', or '-'})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
+
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'_alternation_1_of_production_1_of_rule_expression(s)'}=$_tok||[];
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [<leftop: '+', or '-' /operator/ '+', or '-'>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [constant]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{constant}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [constant]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [column_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[3];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [column_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [host_variable]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[4];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [host_variable]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::host_variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [host_variable]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [host_variable]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{host_variable}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [host_variable]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [special_register]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[5];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [special_register]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::special_register($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [special_register]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [special_register]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{special_register}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [special_register]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' scalar_fullselect ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[6];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [scalar_fullselect]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{scalar_fullselect})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scalar_fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [scalar_fullselect]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [scalar_fullselect]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{scalar_fullselect}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' scalar_fullselect ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [labeled_duration]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[7];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [labeled_duration]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::labeled_duration($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [labeled_duration]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [labeled_duration]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{labeled_duration}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [labeled_duration]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [case_expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[8];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [case_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::case_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [case_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [case_expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{case_expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [case_expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [cast_specification]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[9];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [cast_specification]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [cast_specification]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [cast_specification]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{cast_specification}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [cast_specification]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [OLAP_function]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[10];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [OLAP_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OLAP_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [OLAP_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [OLAP_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{OLAP_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [OLAP_function]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [method_invocation]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[11];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [method_invocation]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_invocation($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [method_invocation]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [method_invocation]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{method_invocation}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [method_invocation]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [subtype_treatment]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[12];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [subtype_treatment]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subtype_treatment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [subtype_treatment]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [subtype_treatment]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{subtype_treatment}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [subtype_treatment]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [sequence_reference]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[13];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sequence_reference]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_reference($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_reference]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_reference]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sequence_reference}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [sequence_reference]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::startrule
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"startrule"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [startrule]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{startrule},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [statement eofile]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{startrule});
+    %item = (__RULE__ => q{startrule});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [statement]},
+          Parse::RecDescent::_tracefirst($text),
+          q{startrule},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::statement, 1, 100000000, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [statement]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{startrule},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [statement]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{statement(s)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [eofile]},
+          Parse::RecDescent::_tracefirst($text),
+          q{startrule},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{eofile})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::eofile($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [eofile]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{startrule},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [eofile]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{eofile}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
+    $return      = {
+        tables   => \%tables,
+        views    => \@views,
+        triggers => \@triggers,
+    }
 };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UPDATE/i /OF/i <leftop: column_name /,/ column_name>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INSERT/i, or /DELETE/i, or /UPDATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{type});
-               %item = (__RULE__ => q{type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_2_of_rule_type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_2_of_rule_type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_2_of_rule_type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_2_of_rule_type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { event => $item[1] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i, or /DELETE/i, or /UPDATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [statement eofile]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{startrule},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{startrule},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{startrule},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{startrule},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cast_specification
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_cast_specification"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_cast_specification]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [expression]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{expression}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [parameter_marker]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [parameter_marker]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_cast_specification},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::parameter_marker($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [parameter_marker]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_cast_specification},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [parameter_marker]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{parameter_marker}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [parameter_marker]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_cast_specification},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_cast_specification},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::before
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"before"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [before]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{before},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NO CASCADE BEFORE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{before},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{before});
+    %item = (__RULE__ => q{before});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NO CASCADE BEFORE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{before},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NO CASCADE BEFORE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NO CASCADE BEFORE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{before},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{before},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{before},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{before},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{before},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_83_of_rule_sysibm_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_83_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_83_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_83_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UCASE/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_83_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_83_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UCASE/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UCASE)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UPPER/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_83_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_83_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UPPER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPPER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UPPER/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+        unless ( $_matched || defined($return) || defined($score) )
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_83_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_83_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
+}
+
+# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ranking_function
+{
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"ranking_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [ranking_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{ranking_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/RANK/, or /DENSE_RANK|DENSERANK/i /OVER/i '(' window_partition_clause window_order_clause ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{ranking_function});
+    %item = (__RULE__ => q{ranking_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_ranking_function]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ranking_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_ranking_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_ranking_function]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ranking_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_ranking_function]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_ranking_function}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/OVER/i]}, Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/OVER/i})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OVER)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'('})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [window_partition_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ranking_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{window_partition_clause})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_partition_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ranking_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_partition_clause]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_partition_clause(?)}} = $_tok;
+    push @item, $_tok;
+
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [window_order_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{ranking_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{window_order_clause})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_order_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{ranking_function},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [window_order_clause]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{window_order_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/RANK/, or /DENSE_RANK|DENSERANK/i /OVER/i '(' window_partition_clause window_order_clause ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{type},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{type},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{type},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{ranking_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{ranking_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{ranking_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{ranking_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_12_of_rule_sysibm_function
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_12_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_12_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COVARIANCE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_12_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_12_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COVARIANCE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COVARIANCE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COVARIANCE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COVAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_12_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_12_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COVAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COVAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COVAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/SELECTIVITY/i numeric_constant]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/SELECTIVITY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SELECTIVITY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [numeric_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{numeric_constant})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [numeric_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [numeric_constant]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{numeric_constant}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_12_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scalar_fullselect
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"scalar_fullselect"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [scalar_fullselect]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{scalar_fullselect},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' fullselect ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{scalar_fullselect});
-               %item = (__RULE__ => q{scalar_fullselect});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{scalar_fullselect},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{fullselect})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{scalar_fullselect},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{fullselect}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' fullselect ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/SELECTIVITY/i numeric_constant]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{scalar_fullselect},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{scalar_fullselect},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{scalar_fullselect},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{scalar_fullselect},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_options
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysibm_function
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_options"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_options]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_options},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CASCADED/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_options});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_options});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CASCADED/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CASCADED)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CASCADED/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LOCAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_options});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_options});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LOCAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOCAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LOCAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ABS/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ABS/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABS)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_options},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_options},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"func_args"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [func_args]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{func_args},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{func_args},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{func_args});
-               %item = (__RULE__ => q{func_args});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{func_args},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{func_args},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{func_args},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{func_args},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{func_args},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{func_args},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{func_args},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{func_args},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"trigger_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [trigger_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{trigger_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{trigger_name});
-               %item = (__RULE__ => q{trigger_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{trigger_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{trigger_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{SCHEMA}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['.']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'.'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{trigger_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{NAME})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{trigger_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{trigger_name});
-               %item = (__RULE__ => q{trigger_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{trigger_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{trigger_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/ABSVAL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysibm_function});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{trigger_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{trigger_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{trigger_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{trigger_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/ABSVAL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_numbering_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_numbering_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_numbering_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_numbering_function});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_numbering_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANGE\s+BETWEEN\s+UNBOUNDED\s+PRECEDING\s+AND\s+UNBBOUNDED\s+FOLLOWING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RANGE\\s+BETWEEN\\s+UNBOUNDED\\s+PRECEDING\\s+AND\\s+UNBBOUNDED\\s+FOLLOWING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [window_aggregation_group_clause]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_numbering_function});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_numbering_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_aggregation_group_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [window_aggregation_group_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_aggregation_group_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [window_aggregation_group_clause]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABSVAL)//i)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"method_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [method_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{method_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{method_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{method_name});
-               %item = (__RULE__ => q{method_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{method_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{method_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { # must be a method of subject_expression 
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{method_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{method_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{method_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{method_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::quantified_p
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"quantified_p"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [quantified_p]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{quantified_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression1 /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ /SOME|ANY|ALL/i '(' fullselect ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{quantified_p});
-               %item = (__RULE__ => q{quantified_p});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression1]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{quantified_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression1]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{quantified_p},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression1]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression1}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(=|<>|<|>|<=|=>|\^=|\^<|\^>|\!=))//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SOME|ANY|ALL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/SOME|ANY|ALL/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SOME|ANY|ALL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{quantified_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{fullselect})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{quantified_p},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{fullselect}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression1 /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ /SOME|ANY|ALL/i '(' fullselect ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/ABSVAL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{quantified_p},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{quantified_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{quantified_p},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{quantified_p},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_b
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"common_table_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [common_table_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [table_name column_list /AS/i get_bracketed]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{common_table_expression});
-               %item = (__RULE__ => q{common_table_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{table_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [column_list]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_list})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_list]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_list]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_list}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AS/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [get_bracketed]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{get_bracketed})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::get_bracketed($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [get_bracketed]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [get_bracketed]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{get_bracketed}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    $return = { name  => $item{table_name}{name}, 
-                query => $item[4]
-                };
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [table_name column_list /AS/i get_bracketed]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [table_name column_list /AS/i '(' fullselect ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{common_table_expression});
-               %item = (__RULE__ => q{common_table_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{table_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [column_list]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_list})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_list]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_list]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_list}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AS/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [fullselect]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{common_table_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{fullselect})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [fullselect]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{common_table_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [fullselect]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{fullselect}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [table_name column_list /AS/i '(' fullselect ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"reference_b"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [reference_b]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{reference_b},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REFERENCING/i old_new_corr]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{reference_b});
+    %item = (__RULE__ => q{reference_b});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REFERENCING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REFERENCING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_corr]},
+          Parse::RecDescent::_tracefirst($text),
+          q{reference_b},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{old_new_corr})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr, 0, 2, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_corr]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{reference_b},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_corr]<< (}
+          . @$_tok . q{ times)},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{old_new_corr(0..2)}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{common_table_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{common_table_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{common_table_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{common_table_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::after
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"after"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [after]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{after},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/AFTER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{after},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{after});
-               %item = (__RULE__ => q{after});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AFTER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{after},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AFTER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/AFTER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{after},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{after},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{after},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{after},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{after},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::predicate
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"predicate"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [predicate]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [basic_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [basic_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::basic_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [basic_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [basic_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{basic_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [basic_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [quantified_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [quantified_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::quantified_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [quantified_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [quantified_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{quantified_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [quantified_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [between_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [between_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::between_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [between_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [between_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{between_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [between_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [exists_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [exists_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::exists_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [exists_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [exists_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{exists_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [exists_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [in_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [in_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::in_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [in_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [in_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{in_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [in_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [like_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [like_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::like_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [like_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [like_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{like_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [like_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [null_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[6];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [null_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::null_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [null_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [null_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{null_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [null_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [type_p]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[7];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{predicate});
-               %item = (__RULE__ => q{predicate});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [type_p]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{predicate},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type_p($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [type_p]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{predicate},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [type_p]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{type_p}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [type_p]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    $_tok = ($_noactions) ? 0 : do { $return = join(' ', $item[1], join(' ', @{$item[2]}) ) };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{predicate},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{predicate},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{predicate},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{predicate},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"column_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{column_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{column_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{column_name});
-               %item = (__RULE__ => q{column_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{column_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{column_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/REFERENCING/i old_new_corr]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{column_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{column_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{column_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{column_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{reference_b},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{reference_b},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{reference_b},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{reference_b},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_invocation
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_simple_when_clause
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"method_invocation"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [method_invocation]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [subject_expression '..' method_name '(']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{method_invocation});
-               %item = (__RULE__ => q{method_invocation});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [subject_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subject_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [subject_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{method_invocation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [subject_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{subject_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['..']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'..'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.\.//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [method_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{method_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [method_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{method_invocation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [method_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{method_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: ['(']},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{'('})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_method_invocation, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['(']>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{method_invocation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_method_invocation]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_method_invocation(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [subject_expression '..' method_name '(']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_simple_when_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_simple_when_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_1_of_rule_simple_when_clause});
+    %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_simple_when_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{method_invocation},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{method_invocation},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{method_invocation},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_dereference_operation
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_dereference_operation"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_dereference_operation]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_dereference_operation});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_dereference_operation});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{expression})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression, 1, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [expression]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression(s)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [/THEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/THEN/i})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_dereference_operation},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:THEN)//i)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_searched_when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_searched_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_searched_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_searched_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_searched_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/THEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/THEN/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:THEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{result_expression, or /NULL/i})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{result_expression, or /NULL/i})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]<< (return value: [}
+          . $_tok . q{]},
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause}} = $_tok;
+    push @item, $_tok;
+
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound2
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"group_bound2"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [group_bound2]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{group_bound2},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound2});
-               %item = (__RULE__ => q{group_bound2});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound2});
-               %item = (__RULE__ => q{group_bound2});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_bound2},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_bound2},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/PRECEDING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /FOLLOWING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound2});
-               %item = (__RULE__ => q{group_bound2});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_bound2},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_bound2},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FOLLOWING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FOLLOWING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOLLOWING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /FOLLOWING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_bound2});
-               %item = (__RULE__ => q{group_bound2});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{group_bound2},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{group_bound2},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{group_bound2},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{group_bound2},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_1_of_rule_simple_when_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::searched_when_clause
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_9_of_rule_sysibm_function
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"searched_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [searched_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WHEN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{searched_when_clause});
-               %item = (__RULE__ => q{searched_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/WHEN/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_searched_when_clause, 1, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/WHEN/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{searched_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_searched_when_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_searched_when_clause(s)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_9_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_9_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_9_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CORRELATION/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_9_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_9_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CORRELATION/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CORRELATION)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{searched_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{searched_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{searched_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::basic_p
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"basic_p"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [basic_p]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{basic_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{basic_p});
-               %item = (__RULE__ => q{basic_p});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{basic_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{basic_p},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(=|<>|<|>|<=|=>|\^=|\^<|\^>|\!=))//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{basic_p},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{basic_p},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression /(=|<>|<|>|<=|=>|\\^=|\\^<|\\^>|\\!=)/ expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/CORRELATION/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{basic_p},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{basic_p},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{basic_p},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{basic_p},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::asc_option
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"asc_option"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [asc_option]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{asc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ASC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{asc_option});
-               %item = (__RULE__ => q{asc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ASC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{asc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_asc_option, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{asc_option},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_asc_option]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_asc_option(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ASC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/CORR/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_9_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_9_of_rule_sysibm_function});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{asc_option},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{asc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{asc_option},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{asc_option},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/CORR/]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"search_condition"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/[^)]+/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{search_condition});
-               %item = (__RULE__ => q{search_condition});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/[^)]+/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^)]+)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/[^)]+/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NOT|/i predicate, or '(' cond]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{search_condition});
-               %item = (__RULE__ => q{search_condition});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NOT|/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NOT|)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_2_of_rule_search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{predicate, or '('})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_2_of_rule_search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_2_of_rule_search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_2_of_rule_search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_2_of_rule_search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [cond]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{cond})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cond, 0, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [cond]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [cond]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{cond(s?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NOT|/i predicate, or '(' cond]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CORR)//)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{search_condition},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{search_condition},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{search_condition},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_operator
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_operator"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_operator]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_operator},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CONCAT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_operator});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CONCAT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CONCAT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CONCAT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['||']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_operator});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_operator});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['||']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\|\|//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['||']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_operator},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_operator},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::simple_when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"simple_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [simple_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression /WHEN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{simple_when_clause});
-               %item = (__RULE__ => q{simple_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{simple_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/WHEN/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/WHEN/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_simple_when_clause, 1, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/WHEN/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{simple_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_simple_when_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_simple_when_clause(s)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression /WHEN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/CORR/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{simple_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{simple_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{simple_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_9_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_9_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::INNER
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_7_of_rule_sysfun
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"INNER"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [INNER]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{INNER},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/inner/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{INNER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{INNER});
-               %item = (__RULE__ => q{INNER});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/inner/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{INNER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:inner)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/inner/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{INNER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_7_of_rule_sysfun"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_7_of_rule_sysfun]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_7_of_rule_sysfun},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CEIL/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_7_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_7_of_rule_sysfun});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CEIL/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CEIL)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{INNER},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{INNER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{INNER},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{INNER},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::eofile
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"eofile"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [eofile]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{eofile},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/^\\Z/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{eofile},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{eofile});
-               %item = (__RULE__ => q{eofile});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/^\\Z/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{eofile},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:^\Z)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/^\\Z/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{eofile},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/CEIL/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{eofile},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{eofile},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{eofile},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{eofile},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cond
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"cond"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [cond]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/AND/i, or /OR/i /NOT|/i predicate, or '(']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{cond});
-               %item = (__RULE__ => q{cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_cond]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cond($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_cond]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_cond]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_cond}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NOT|/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/NOT|/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NOT|)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule_cond]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{predicate, or '('})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_cond($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule_cond]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule_cond]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule_cond}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/AND/i, or /OR/i /NOT|/i predicate, or '(']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/CEILING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_7_of_rule_sysfun});
+    %item = (__RULE__ => q{_alternation_1_of_production_7_of_rule_sysfun});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{cond},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{cond},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{cond},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/CEILING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ld_type
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"ld_type"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [ld_type]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_type});
-               %item = (__RULE__ => q{ld_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ld_type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_type});
-               %item = (__RULE__ => q{ld_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ld_type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [constant]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_type});
-               %item = (__RULE__ => q{ld_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ld_type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [constant]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [column_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_type});
-               %item = (__RULE__ => q{ld_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ld_type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [column_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [host_variable]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ld_type});
-               %item = (__RULE__ => q{ld_type});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [host_variable]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ld_type},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::host_variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [host_variable]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ld_type},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [host_variable]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{host_variable}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [host_variable]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CEILING)//i)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{ld_type},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{ld_type},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{ld_type},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{ld_type},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::RIGHT
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"RIGHT"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [RIGHT]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{RIGHT},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/right/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{RIGHT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{RIGHT});
-               %item = (__RULE__ => q{RIGHT});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/right/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{RIGHT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:right)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/right/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{RIGHT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{RIGHT},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{RIGHT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{RIGHT},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{RIGHT},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_method_invocation
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_method_invocation"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_method_invocation]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_method_invocation});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_method_invocation});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{expression})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression, 1, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [expression]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression(s)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/CEILING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_method_invocation},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_7_of_rule_sysfun},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_7_of_rule_sysfun},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::LEFT
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::prevval_expression
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"LEFT"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [LEFT]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{LEFT},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/left/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{LEFT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{LEFT});
-               %item = (__RULE__ => q{LEFT});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/left/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{LEFT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:left)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/left/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{LEFT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"prevval_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [prevval_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{prevval_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/PREVVAL\\s+FOR/i sequence_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{prevval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{prevval_expression});
+    %item = (__RULE__ => q{prevval_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/PREVVAL\\s+FOR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{prevval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PREVVAL\s+FOR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sequence_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{prevval_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sequence_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{prevval_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_name]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{prevval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sequence_name}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{LEFT},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{LEFT},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{LEFT},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{LEFT},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"table_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [table_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{table_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [SCHEMA '.' NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{table_name});
-               %item = (__RULE__ => q{table_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [SCHEMA]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{table_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SCHEMA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [SCHEMA]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{table_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [SCHEMA]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{SCHEMA}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['.']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'.'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\.//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{table_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{NAME})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{table_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { schema => $item[1], name => $item[3] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [SCHEMA '.' NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{table_name});
-               %item = (__RULE__ => q{table_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{table_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{table_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = { name => $item[1] } };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/PREVVAL\\s+FOR/i sequence_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{prevval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{table_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{table_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{table_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{table_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{prevval_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{prevval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{prevval_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{prevval_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_53_of_rule_sysfun
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::where_clause
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_53_of_rule_sysfun"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_53_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_53_of_rule_sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TRUNCATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_53_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_53_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TRUNCATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRUNCATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TRUNCATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TRUNC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_53_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_53_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TRUNC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TRUNC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TRUNC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"where_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [where_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{where_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [WHERE search_condition]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{where_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{where_clause});
+    %item = (__RULE__ => q{where_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [WHERE]},
+          Parse::RecDescent::_tracefirst($text),
+          q{where_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::WHERE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [WHERE]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{where_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [WHERE]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{where_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{WHERE}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_53_of_rule_sysfun},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_53_of_rule_sysfun},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::options
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"options"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [options]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{options},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WITH/i /CASCADED/i, or /LOCAL/i /CHECK\\s+OPTION/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{options});
-               %item = (__RULE__ => q{options});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WITH/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WITH)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_options]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{options},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{/CASCADED/i, or /LOCAL/i})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_options($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_options]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{options},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_options]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_options}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CHECK\\s+OPTION/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/CHECK\\s+OPTION/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHECK\s+OPTION)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WITH/i /CASCADED/i, or /LOCAL/i /CHECK\\s+OPTION/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
+          Parse::RecDescent::_tracefirst($text),
+          q{where_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{search_condition})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{where_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{where_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{search_condition}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{options},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{options},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{options},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{options},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SYSIBM\\.|/i, or /SYSFUN\\.|/i, or userdefined_function '(' <leftop: func_args /,/ func_args> ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{function});
-               %item = (__RULE__ => q{function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: func_args /,/ func_args>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: func_args /,/ func_args>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [func_args]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{func_args})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [func_args]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [func_args]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{func_args}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'func_args(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [func_args]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{func_args})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::func_args($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [func_args]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [func_args]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{func_args}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: func_args /,/ func_args>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: func_args /,/ func_args>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'func_args(s)'}=$_tok||[];
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SYSIBM\\.|/i, or /SYSFUN\\.|/i, or userdefined_function '(' <leftop: func_args /,/ func_args> ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [WHERE search_condition]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{where_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{where_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{where_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{where_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{where_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_41_of_rule_sysibm_function
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_start
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_41_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_41_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INTEGER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_41_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_41_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/INTEGER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INTEGER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INTEGER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INT/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_41_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_41_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/INT/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INT)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INT/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"group_start"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [group_start]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{group_start},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_start});
+    %item = (__RULE__ => q{group_start});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_start});
+    %item = (__RULE__ => q{group_start});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_start},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_start},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{unsigned_constant}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_41_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_case_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_case_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_case_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [searched_when_clause]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_case_expression});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_case_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [searched_when_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::searched_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [searched_when_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_case_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [searched_when_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{searched_when_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [searched_when_clause]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [simple_when_clause]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_case_expression});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_case_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [simple_when_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_case_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::simple_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [simple_when_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_case_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [simple_when_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{simple_when_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [simple_when_clause]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/PRECEDING/i})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_case_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_case_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_window_order_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [sort_key_expression asc_option, or desc_option]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_window_order_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_window_order_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sort_key_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sort_key_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sort_key_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sort_key_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sort_key_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [asc_option, or desc_option]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{asc_option, or desc_option})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [asc_option, or desc_option]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_window_order_clause(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [sort_key_expression asc_option, or desc_option]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_window_order_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::create
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"create"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [create]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [CREATE TRIGGER trigger_name before type /ON/i table_name reference_b /FOR EACH ROW/i 'MODE DB2SQL' triggered_action]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{create});
-               %item = (__RULE__ => q{create});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{CREATE}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [TRIGGER]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{TRIGGER})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::TRIGGER($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [TRIGGER]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [TRIGGER]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{TRIGGER}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [trigger_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{trigger_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [trigger_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [trigger_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{trigger_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [before]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{before})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::before($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [before]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [before]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{before}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{type})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ON/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/ON/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ON)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{table_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{table_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [reference_b]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{reference_b})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_b, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [reference_b]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reference_b]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{reference_b(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FOR EACH ROW/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FOR EACH ROW/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOR EACH ROW)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['MODE DB2SQL']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'MODE DB2SQL'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\AMODE\ DB2SQL//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [triggered_action]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{triggered_action})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [triggered_action]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [triggered_action]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{triggered_action}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    my $table_name = $item{'table_name'}{'name'};
-    $return =  {
-        table      => $table_name,
-        schema     => $item{'trigger_name'}{'schema'},
-        name       => $item{'trigger_name'}{'name'},
-        when       => 'before',
-        db_event   => $item{'type'}->{'event'},
-        fields     => $item{'type'}{'fields'},
-        condition  => $item{'triggered_action'}{'condition'},
-        reference  => $item{'reference_b'},
-        granularity => $item[9],
-        action     => $item{'triggered_action'}{'statement'}
-    };
 
-    push @triggers, $return;
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [CREATE TRIGGER trigger_name before type /ON/i table_name reference_b /FOR EACH ROW/i 'MODE DB2SQL' triggered_action]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [CREATE TRIGGER trigger_name after type /ON/i table_name reference_a /FOR EACH ROW|FOR EACH STATEMENT/i 'MODE DB2SQL' triggered_action]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{create});
-               %item = (__RULE__ => q{create});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{CREATE}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [TRIGGER]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{TRIGGER})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::TRIGGER($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [TRIGGER]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [TRIGGER]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{TRIGGER}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [trigger_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{trigger_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::trigger_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [trigger_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [trigger_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{trigger_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [after]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{after})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::after($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [after]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [after]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{after}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{type})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ON/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/ON/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ON)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [table_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{table_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::table_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [table_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [table_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{table_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [reference_a]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{reference_a})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_a, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [reference_a]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reference_a]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{reference_a(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FOR EACH ROW|FOR EACH STATEMENT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FOR EACH ROW|FOR EACH STATEMENT/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FOR EACH ROW|FOR EACH STATEMENT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['MODE DB2SQL']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'MODE DB2SQL'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\AMODE\ DB2SQL//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [triggered_action]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{triggered_action})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::triggered_action($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [triggered_action]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [triggered_action]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{triggered_action}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    my $table_name = $item{'table_name'}{'name'};
-    $return = {
-        table      => $table_name,
-        schema     => $item{'trigger_name'}{'schema'},
-        name       => $item{'trigger_name'}{'name'},
-        when       => 'after',
-        db_event   => $item{'type'}{'event'},
-        fields     => $item{'type'}{'fields'},
-        condition  => $item{'triggered_action'}{'condition'},
-        reference  => $item{'reference_a'},
-        granularity => $item[9],
-        action     => $item{'triggered_action'}{'statement'}
-    };
+    Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
-    push @triggers, $return;
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [CREATE TRIGGER trigger_name after type /ON/i table_name reference_a /FOR EACH ROW|FOR EACH STATEMENT/i 'MODE DB2SQL' triggered_action]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [CREATE /FEDERATED|/i VIEW view_name column_list /AS/i with_expression SQL_procedure_statement]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{create});
-               %item = (__RULE__ => q{create});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [CREATE]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::CREATE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [CREATE]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [CREATE]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{CREATE}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FEDERATED|/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/FEDERATED|/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FEDERATED|)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [VIEW]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{VIEW})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::VIEW($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [VIEW]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [VIEW]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{VIEW}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [view_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{view_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::view_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [view_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [view_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{view_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [column_list]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{column_list})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [column_list]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [column_list]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_list(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AS/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [with_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{with_expression})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::with_expression, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [with_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [with_expression]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{with_expression(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [SQL_procedure_statement]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{create},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{SQL_procedure_statement})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [SQL_procedure_statement]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{create},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [SQL_procedure_statement]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{SQL_procedure_statement}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    $return = {
-        name   => $item{view_name}{name},
-        sql    => $item{SQL_procedure_statement},
-        with   => $item{'with_expression(?)'},
-        fields => $item{'column_list(?)'}
-    };
-    push @views, $return;
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [CREATE /FEDERATED|/i VIEW view_name column_list /AS/i with_expression SQL_procedure_statement]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[2];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_start});
+    %item = (__RULE__ => q{group_start});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{create},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{create},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{create},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{create},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{group_start},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{group_start},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{group_start},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{group_start},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sysfun
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"sysfun"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [sysfun]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABS/i, or /ABSVAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_sysfun]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysfun},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_sysfun]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_sysfun}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i, or /ABSVAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ACOS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ACOS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ACOS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ACOS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ASCII/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ASCII/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASCII)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ASCII/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ASIN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ASIN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ASIN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ASIN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ATAN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ATAN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ATAN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ATAN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ATAN2/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ATAN2/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ATAN2)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ATAN2/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CEIL/i, or /CEILING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[6];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_7_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_7_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_7_of_rule_sysfun]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysfun},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_7_of_rule_sysfun]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_7_of_rule_sysfun}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CEIL/i, or /CEILING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CHAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[7];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CHAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CHAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CHR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[8];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CHR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CHR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CHR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[9];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/COT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[10];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/COT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:COT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/COT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYNAME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[11];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYNAME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYNAME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYNAME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYOFWEEK/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[12];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFWEEK/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFWEEK)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFWEEK/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYOFWEEK_ISO/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[13];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFWEEK_ISO/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFWEEK_ISO)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFWEEK_ISO/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DAYOFYEAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[14];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DAYOFYEAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DAYOFYEAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DAYOFYEAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DEGREES/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[15];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DEGREES/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DEGREES)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DEGREES/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DIFFERENCE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[16];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DIFFERENCE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DIFFERENCE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DIFFERENCE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DOUBLE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[17];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DOUBLE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DOUBLE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DOUBLE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/EXP/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[18];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/EXP/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:EXP)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/EXP/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/FLOOR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[19];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/FLOOR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:FLOOR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/FLOOR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/GET_ROUTINE_SAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[20];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/GET_ROUTINE_SAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:GET_ROUTINE_SAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/GET_ROUTINE_SAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/INSERT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[21];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/INSERT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:INSERT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/INSERT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/JULIAN_DAY/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[22];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/JULIAN_DAY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:JULIAN_DAY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/JULIAN_DAY/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LCASE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[23];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LCASE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LCASE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LEFT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[24];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LEFT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LEFT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LEFT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[25];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LOCATE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[26];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LOCATE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOCATE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LOCATE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LOG/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[27];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LOG/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOG)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LOG/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LOG10/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[28];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LOG10/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOG10)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LOG10/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LTRIM/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[29];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LTRIM/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LTRIM)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LTRIM/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MIDNIGHT_SECONDS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[30];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MIDNIGHT_SECONDS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MIDNIGHT_SECONDS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MIDNIGHT_SECONDS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MOD/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[31];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MOD/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MOD)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MOD/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/MONTHNAME/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[32];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/MONTHNAME/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:MONTHNAME)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/MONTHNAME/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/POWER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[33];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/POWER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:POWER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/POWER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/PUT_ROUTINE_SAR/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[34];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PUT_ROUTINE_SAR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PUT_ROUTINE_SAR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/PUT_ROUTINE_SAR/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/QUARTER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[35];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/QUARTER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:QUARTER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/QUARTER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RADIANS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[36];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RADIANS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RADIANS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RADIANS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RAND/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[37];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RAND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RAND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RAND/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REPEAT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[38];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REPEAT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REPEAT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REPEAT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REPLACE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[39];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REPLACE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REPLACE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REPLACE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RIGHT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[40];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RIGHT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RIGHT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RIGHT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ROUND/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[41];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ROUND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ROUND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ROUND/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RTRIM/ I]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[42];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RTRIM/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RTRIM)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [I]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{I})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::I($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [I]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysfun},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [I]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{I}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RTRIM/ I]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SIGN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[43];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SIGN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SIGN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SIGN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SIN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[44];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SIN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SIN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SIN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SOUNDEX/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[45];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SOUNDEX/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SOUNDEX)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SOUNDEX/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SPACE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[46];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SPACE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SPACE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SPACE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SQLCACHE_SNAPSHOT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[47];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SQLCACHE_SNAPSHOT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SQLCACHE_SNAPSHOT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SQLCACHE_SNAPSHOT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SQRT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[48];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SQRT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SQRT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SQRT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TAN/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[49];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TAN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TAN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TAN/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMP_ISO/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[50];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMP_ISO/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMP_ISO)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMP_ISO/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TIMESTAMPDIFF/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[51];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TIMESTAMPDIFF/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TIMESTAMPDIFF)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TIMESTAMPDIFF/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TRUNCATE/i, or /TRUNC/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[52];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_53_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_53_of_rule_sysfun($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_53_of_rule_sysfun]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{sysfun},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_53_of_rule_sysfun]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_53_of_rule_sysfun}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TRUNCATE/i, or /TRUNC/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UCASE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[53];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UCASE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UCASE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WEEK/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[54];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WEEK/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WEEK)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WEEK/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WEEK_ISO/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[55];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{sysfun});
-               %item = (__RULE__ => q{sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WEEK_ISO/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WEEK_ISO)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WEEK_ISO/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"correlation_name"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [correlation_name]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{correlation_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [NAME]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{correlation_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{correlation_name});
+    %item = (__RULE__ => q{correlation_name});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
+          Parse::RecDescent::_tracefirst($text),
+          q{correlation_name},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{correlation_name},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
+          . $_tok . q{]},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{correlation_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{NAME}} = $_tok;
+    push @item, $_tok;
+
+    }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{correlation_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{sysfun},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{sysfun},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{sysfun},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{correlation_name},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{correlation_name},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{correlation_name},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{correlation_name},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SELECTIVITY/i numeric_constant]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SELECTIVITY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SELECTIVITY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [numeric_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{numeric_constant})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [numeric_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [numeric_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{numeric_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SELECTIVITY/i numeric_constant]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"SQL_procedure_statement"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [SQL_procedure_statement]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{SQL_procedure_statement},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/[^;]*/ /(;|\\z)/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{SQL_procedure_statement});
+    %item = (__RULE__ => q{SQL_procedure_statement});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/[^;]*/]}, Parse::RecDescent::_tracefirst($text),
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^;]*)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_2_of_production_1_of_rule_cond},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/(;|\\z)/]}, Parse::RecDescent::_tracefirst($text),
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/(;|\\z)/})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"NAME"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{NAME},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/\\w+/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{NAME});
-               %item = (__RULE__ => q{NAME});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/\\w+/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w+)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/\\w+/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/\\w\{1,18\}/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{NAME});
-               %item = (__RULE__ => q{NAME});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/\\w\{1,18\}/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\w{1,18})//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/\\w\{1,18\}/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(;|\z))//)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{NAME},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{NAME},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{NAME},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{NAME},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"constant"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [constant]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [int_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [int_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::int_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [int_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [int_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{int_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [int_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [float_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [float_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::float_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [float_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [float_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{float_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [float_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [dec_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [dec_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::dec_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [dec_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [dec_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{dec_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [dec_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [char_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [char_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::char_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [char_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [char_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{char_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [char_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [hex_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [hex_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::hex_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [hex_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [hex_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{hex_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [hex_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [grastr_const]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{constant});
-               %item = (__RULE__ => q{constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [grastr_const]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::grastr_const($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [grastr_const]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{constant},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [grastr_const]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{grastr_const}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [grastr_const]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do { $return = $item[1] . $item[2] };
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{constant},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{constant},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{constant},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_ranking_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_ranking_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_ranking_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RANK/ '()']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_ranking_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_ranking_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/RANK/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:RANK)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['()']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'()'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RANK/ '()']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DENSE_RANK|DENSERANK/i '()']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_ranking_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_ranking_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DENSE_RANK|DENSERANK/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DENSE_RANK|DENSERANK)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['()']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'()'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DENSE_RANK|DENSERANK/i '()']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/[^;]*/ /(;|\\z)/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_ranking_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{SQL_procedure_statement},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{SQL_procedure_statement},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{SQL_procedure_statement},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{SQL_procedure_statement},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_between
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"window_aggregation_group_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ROWS/i, or /RANGE/i group_start, or group_between, or group_end]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{window_aggregation_group_clause});
-               %item = (__RULE__ => q{window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_aggregation_group_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_aggregation_group_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_window_aggregation_group_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{group_start, or group_between, or group_end})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_window_aggregation_group_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_aggregation_group_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ROWS/i, or /RANGE/i group_start, or group_between, or group_end]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"group_between"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [group_between]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{group_between},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/BETWEEN/i group_bound1 /AND/i group_bound2]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{group_between});
+    %item = (__RULE__ => q{group_between});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/BETWEEN/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BETWEEN)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [group_bound1]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_between},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{group_bound1})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_bound1]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_between},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [group_bound1]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{group_bound1}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{window_aggregation_group_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{window_aggregation_group_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{window_aggregation_group_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule_window_aggregation_group_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule_window_aggregation_group_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule_window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [group_start]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [group_start]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_start($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_start]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [group_start]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{group_start}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [group_start]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [group_between]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [group_between]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_between($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_between]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [group_between]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{group_between}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [group_between]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [group_end]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [group_end]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_end($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_end]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [group_end]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{group_end}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [group_end]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: [/AND/i]}, Parse::RecDescent::_tracefirst($text),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/AND/i})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule_window_aggregation_group_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AND)//i)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::VIEW
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"VIEW"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [VIEW]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{VIEW},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/view/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{VIEW},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{VIEW});
-               %item = (__RULE__ => q{VIEW});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/view/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{VIEW},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:view)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/view/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{VIEW},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [group_bound2]},
+          Parse::RecDescent::_tracefirst($text),
+          q{group_between},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{group_bound2})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_bound2]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{group_between},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [group_bound2]<< (return value: [}
+          . $_tok . q{]},
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{VIEW},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{VIEW},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{VIEW},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{VIEW},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+            Parse::RecDescent::_tracefirst($text),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{group_bound2}} = $_tok;
+    push @item, $_tok;
+
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::with_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"with_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [with_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{with_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WITH/i <leftop: common_table_expression /,/ common_table_expression>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{with_expression});
-               %item = (__RULE__ => q{with_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WITH/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WITH)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: common_table_expression /,/ common_table_expression>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{with_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: common_table_expression /,/ common_table_expression>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [common_table_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{with_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{common_table_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [common_table_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{with_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [common_table_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{common_table_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'common_table_expression(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [common_table_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{with_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{common_table_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::common_table_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [common_table_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{with_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [common_table_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{common_table_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: common_table_expression /,/ common_table_expression>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{with_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: common_table_expression /,/ common_table_expression>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'common_table_expression(s)'}=$_tok||[];
-
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    $return = $item{'common_table_expression'};
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WITH/i <leftop: common_table_expression /,/ common_table_expression>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/BETWEEN/i group_bound1 /AND/i group_bound2]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{with_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{with_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{with_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{with_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{group_between},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{group_between},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{group_between},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{group_between},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::nextval_expression
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"numeric_constant"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [numeric_constant]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{numeric_constant},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/\\d+/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{numeric_constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{numeric_constant});
-               %item = (__RULE__ => q{numeric_constant});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/\\d+/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{numeric_constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:\d+)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/\\d+/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{numeric_constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"nextval_expression"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [nextval_expression]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{nextval_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/NEXTVAL\\s+FOR/i sequence_name]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{nextval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{nextval_expression});
+    %item = (__RULE__ => q{nextval_expression});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/NEXTVAL\\s+FOR/i]}, Parse::RecDescent::_tracefirst($text),
+            q{nextval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEXTVAL\s+FOR)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [sequence_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{nextval_expression},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sequence_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{nextval_expression},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_name]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{nextval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{sequence_name}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{numeric_constant},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{numeric_constant},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{numeric_constant},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{numeric_constant},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_table
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"old_new_table"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [old_new_table]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{old_new_table},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/OLD_TABLE/i /(AS)?/i identifier]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{old_new_table});
-               %item = (__RULE__ => q{old_new_table});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OLD_TABLE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OLD_TABLE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(AS)?/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{old_new_table},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{identifier})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{old_new_table},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{identifier}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/OLD_TABLE/i /(AS)?/i identifier]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NEW_TABLE/i /(AS)?/i identifier]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{old_new_table});
-               %item = (__RULE__ => q{old_new_table});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NEW_TABLE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEW_TABLE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(AS)?/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{old_new_table},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{identifier})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [identifier]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{old_new_table},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{identifier}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NEW_TABLE/i /(AS)?/i identifier]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/NEXTVAL\\s+FOR/i sequence_name]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{nextval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{old_new_table},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{old_new_table},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{old_new_table},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{old_new_table},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{nextval_expression},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{nextval_expression},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{nextval_expression},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{nextval_expression},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_numbering_function
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::desc_option
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_numbering_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_numbering_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [window_order_clause window_aggregation_group_clause]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_numbering_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_numbering_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_order_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [window_order_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_order_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [window_aggregation_group_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{window_aggregation_group_clause})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_aggregation_group_clause, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_aggregation_group_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_aggregation_group_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_aggregation_group_clause(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [window_order_clause window_aggregation_group_clause]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"desc_option"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [desc_option]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{desc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/DESC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{desc_option});
+    %item = (__RULE__ => q{desc_option});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/DESC/i]}, Parse::RecDescent::_tracefirst($text),
+            q{desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DESC)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
+          Parse::RecDescent::_tracefirst($text),
+          q{desc_option},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_desc_option, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{desc_option},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_desc_option]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_desc_option(?)}} = $_tok;
+    push @item, $_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_numbering_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [result_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [result_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::result_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [result_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [result_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{result_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [result_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/DESC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_searched_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{desc_option},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{desc_option},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{desc_option},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{desc_option},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"old_new_corr"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [old_new_corr]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{old_new_corr},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/OLD/i /(AS)?/i correlation_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{old_new_corr});
-               %item = (__RULE__ => q{old_new_corr});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OLD/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OLD)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(AS)?/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [correlation_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{old_new_corr},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{correlation_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [correlation_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{old_new_corr},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [correlation_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{correlation_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/OLD/i /(AS)?/i correlation_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NEW/i /(AS)?/i correlation_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{old_new_corr});
-               %item = (__RULE__ => q{old_new_corr});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NEW/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEW)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(AS)?/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(AS)?/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(AS)?)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [correlation_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{old_new_corr},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{correlation_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [correlation_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{old_new_corr},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [correlation_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{correlation_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', @item[1..3] ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NEW/i /(AS)?/i correlation_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"column_list"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [column_list]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{column_list},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: ['(' <leftop: column_name /,/ column_name> ')']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{column_list});
+    %item = (__RULE__ => q{column_list});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: ['(']},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: column_name /,/ column_name>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{column_list},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: column_name /,/ column_name>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{column_list},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{column_list},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{old_new_corr},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{old_new_corr},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{old_new_corr},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{old_new_corr},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_42_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_42_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_42_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LCASE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_42_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_42_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LCASE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LCASE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LCASE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/LOWER/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_42_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_42_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/LOWER/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:LOWER)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/LOWER/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+      $repcount++;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_42_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      my $savetext = $text;
+      my $backtrack;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subtype_treatment
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"subtype_treatment"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [subtype_treatment]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{subtype_treatment},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/TREAT/i '(' expression /AS/i data_type ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{subtype_treatment});
-               %item = (__RULE__ => q{subtype_treatment});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/TREAT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:TREAT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{subtype_treatment},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{subtype_treatment},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AS/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [data_type]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{subtype_treatment},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{data_type})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::data_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [data_type]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{subtype_treatment},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [data_type]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{data_type}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/TREAT/i '(' expression /AS/i data_type ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
 
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{subtype_treatment},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{subtype_treatment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{subtype_treatment},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{subtype_treatment},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [<leftop: '+', or '-' /operator/ '+', or '-'>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{expression});
-               %item = (__RULE__ => q{expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{'+', or '-'})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/operator/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/operator/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:operator)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'_alternation_1_of_production_1_of_rule_expression(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{'+', or '-'})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: '+', or '-' /operator/ '+', or '-'>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'_alternation_1_of_production_1_of_rule_expression(s)'}=$_tok||[];
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [<leftop: '+', or '-' /operator/ '+', or '-'>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
 
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'column_name(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
+          Parse::RecDescent::_tracefirst($text),
+          q{column_list},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{column_name})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{column_list},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
+          . $_tok . q{]},
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' expression ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' expression ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [constant]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [constant]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [column_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[3];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [column_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [host_variable]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[4];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [host_variable]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::host_variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [host_variable]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [host_variable]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{host_variable}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [host_variable]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [special_register]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[5];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [special_register]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::special_register($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [special_register]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [special_register]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{special_register}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [special_register]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' scalar_fullselect ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[6];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [scalar_fullselect]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{scalar_fullselect})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scalar_fullselect($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [scalar_fullselect]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [scalar_fullselect]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{scalar_fullselect}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' scalar_fullselect ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [labeled_duration]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[7];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [labeled_duration]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::labeled_duration($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [labeled_duration]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [labeled_duration]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{labeled_duration}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [labeled_duration]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [case_expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[8];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [case_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::case_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [case_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [case_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{case_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [case_expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [cast_specification]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[9];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [cast_specification]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::cast_specification($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [cast_specification]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [cast_specification]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{cast_specification}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [cast_specification]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [OLAP_function]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[10];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [OLAP_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OLAP_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [OLAP_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [OLAP_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{OLAP_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [OLAP_function]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [method_invocation]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[11];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [method_invocation]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::method_invocation($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [method_invocation]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [method_invocation]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{method_invocation}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [method_invocation]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [subtype_treatment]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[12];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [subtype_treatment]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::subtype_treatment($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [subtype_treatment]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [subtype_treatment]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{subtype_treatment}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [subtype_treatment]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [sequence_reference]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[13];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               %item = (__RULE__ => q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sequence_reference]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_reference($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_reference]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_reference]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sequence_reference}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [sequence_reference]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{column_name}} = $_tok;
+    push @item, $_tok;
 
+    }
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_2_of_production_1_of_rule__alternation_1_of_production_1_of_rule_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::startrule
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"startrule"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [startrule]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{startrule},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [statement eofile]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{startrule});
-               %item = (__RULE__ => q{startrule});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [statement]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{startrule},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::statement, 1, 100000000, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [statement]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{startrule},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [statement]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{statement(s)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [eofile]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{startrule},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{eofile})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::eofile($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [eofile]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{startrule},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [eofile]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{eofile}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    $return      = {
-        tables   => \%tables,
-        views    => \@views,
-        triggers => \@triggers,
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
     }
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [statement eofile]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: column_name /,/ column_name>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{column_list},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: column_name /,/ column_name>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{startrule},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{startrule},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{startrule},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{startrule},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    push @item, $item{'column_name(s)'}=$_tok||[];
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_cast_specification
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_cast_specification"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_cast_specification]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [expression]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [expression]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NULL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NULL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [parameter_marker]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_cast_specification});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_cast_specification});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [parameter_marker]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::parameter_marker($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [parameter_marker]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [parameter_marker]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{parameter_marker}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [parameter_marker]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    Parse::RecDescent::_trace(q{Trying terminal: [')']},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{')'})->at($text);
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_cast_specification},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::before
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"before"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [before]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{before},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NO CASCADE BEFORE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{before},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{before});
-               %item = (__RULE__ => q{before});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NO CASCADE BEFORE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{before},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NO CASCADE BEFORE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NO CASCADE BEFORE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{before},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
+    {
 
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING2__}=$&;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{before},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{before},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{before},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{before},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_83_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_83_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_83_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UCASE/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_83_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_83_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UCASE/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UCASE)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UCASE/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UPPER/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_83_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_83_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UPPER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UPPER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UPPER/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_83_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    $_tok = ($_noactions) ? 0 : do {
+    $return = join(' ', '(', @{$item[2]}, ')');
+};
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::ranking_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"ranking_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [ranking_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{ranking_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/RANK/, or /DENSE_RANK|DENSERANK/i /OVER/i '(' window_partition_clause window_order_clause ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{ranking_function});
-               %item = (__RULE__ => q{ranking_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_ranking_function]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ranking_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_ranking_function($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_ranking_function]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ranking_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_ranking_function]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_ranking_function}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/OVER/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/OVER/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:OVER)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'('})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [window_partition_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ranking_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{window_partition_clause})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_partition_clause, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [window_partition_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ranking_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [window_partition_clause]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_partition_clause(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{ranking_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{window_order_clause})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [window_order_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{ranking_function},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [window_order_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{window_order_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/RANK/, or /DENSE_RANK|DENSERANK/i /OVER/i '(' window_partition_clause window_order_clause ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: ['(' <leftop: column_name /,/ column_name> ')']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{ranking_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{ranking_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{ranking_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{ranking_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{column_list},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{column_list},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{column_list},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{column_list},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_63_of_rule_sysibm_function
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/SELECTIVITY/i numeric_constant]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/SELECTIVITY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:SELECTIVITY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [numeric_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{numeric_constant})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::numeric_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [numeric_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [numeric_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{numeric_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/SELECTIVITY/i numeric_constant]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_63_of_rule_sysibm_function"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_63_of_rule_sysibm_function]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{_alternation_1_of_production_63_of_rule_sysibm_function},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_INTERCEPT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_63_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_63_of_rule_sysibm_function});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_INTERCEPT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_INTERCEPT)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_2_of_rule_search_condition},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABS/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ABS/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABS)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABS/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ABSVAL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ABSVAL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ABSVAL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ABSVAL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_INTERCEPT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+  while (!$_matched && !$commit)
+  {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::reference_b
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"reference_b"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [reference_b]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{reference_b},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REFERENCING/i old_new_corr]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{reference_b});
-               %item = (__RULE__ => q{reference_b});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REFERENCING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REFERENCING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [old_new_corr]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{reference_b},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{old_new_corr})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::old_new_corr, 0, 2, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [old_new_corr]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{reference_b},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [old_new_corr]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{old_new_corr(0..2)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = join(' ', $item[1], join(' ', @{$item[2]}) ) };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REFERENCING/i old_new_corr]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying production: [/REGR_ICPT/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[1];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{_alternation_1_of_production_63_of_rule_sysibm_function});
+    %item = (__RULE__ => q{_alternation_1_of_production_63_of_rule_sysibm_function});
+    my $repcount = 0;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{reference_b},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{reference_b},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{reference_b},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{reference_b},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    Parse::RecDescent::_trace(q{Trying terminal: [/REGR_ICPT/i]}, Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_simple_when_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_simple_when_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_simple_when_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_1_of_rule_simple_when_clause});
-               %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_simple_when_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/WHEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:WHEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/THEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/THEN/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:THEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{result_expression, or /NULL/i})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule__alternation_1_of_production_1_of_rule_simple_when_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/WHEN/i search_condition /THEN/i result_expression, or /NULL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_ICPT)//i)
+    {
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_1_of_rule_simple_when_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_9_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_9_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_9_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CORRELATION/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_9_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_9_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CORRELATION/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CORRELATION)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CORRELATION/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CORR/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_9_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_9_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CORR/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CORR)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CORR/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_9_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_7_of_rule_sysfun
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_7_of_rule_sysfun"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_7_of_rule_sysfun]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_7_of_rule_sysfun},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CEIL/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_7_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_7_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CEIL/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CEIL)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CEIL/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CEILING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_7_of_rule_sysfun});
-               %item = (__RULE__ => q{_alternation_1_of_production_7_of_rule_sysfun});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CEILING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CEILING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CEILING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/REGR_ICPT/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_7_of_rule_sysfun},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_7_of_rule_sysfun},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{_alternation_1_of_production_63_of_rule_sysibm_function},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{_alternation_1_of_production_63_of_rule_sysibm_function},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::prevval_expression
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::dereference_operation
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"prevval_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [prevval_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{prevval_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/PREVVAL\\s+FOR/i sequence_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{prevval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{prevval_expression});
-               %item = (__RULE__ => q{prevval_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PREVVAL\\s+FOR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{prevval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PREVVAL\s+FOR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sequence_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{prevval_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sequence_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{prevval_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{prevval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sequence_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/PREVVAL\\s+FOR/i sequence_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{prevval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"dereference_operation"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [dereference_operation]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [scoped_reference_expression '->' name1 '(']},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{dereference_operation});
+    %item = (__RULE__ => q{dereference_operation});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [scoped_reference_expression]},
+          Parse::RecDescent::_tracefirst($text),
+          q{dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scoped_reference_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [scoped_reference_expression]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{dereference_operation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [scoped_reference_expression]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{scoped_reference_expression}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{prevval_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{prevval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{prevval_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{prevval_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::where_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"where_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [where_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{where_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [WHERE search_condition]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{where_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{where_clause});
-               %item = (__RULE__ => q{where_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [WHERE]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{where_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::WHERE($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [WHERE]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{where_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [WHERE]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{where_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{WHERE}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying subrule: [search_condition]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{where_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{search_condition})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::search_condition($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [search_condition]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{where_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [search_condition]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{where_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{search_condition}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [WHERE search_condition]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{where_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying terminal: ['->']},
+            Parse::RecDescent::_tracefirst($text),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{'->'})->at($text);
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{where_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{where_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{where_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{where_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-\>//)
+    {
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_start
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"group_start"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [group_start]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{group_start},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/UNBOUNDED\\s+PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_start});
-               %item = (__RULE__ => q{group_start});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/UNBOUNDED\\s+PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:UNBOUNDED\s+PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/UNBOUNDED\\s+PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [unsigned_constant /PRECEDING/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_start});
-               %item = (__RULE__ => q{group_start});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [unsigned_constant]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_start},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::unsigned_constant($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [unsigned_constant]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_start},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [unsigned_constant]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{unsigned_constant}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/PRECEDING/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/PRECEDING/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:PRECEDING)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [unsigned_constant /PRECEDING/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/CURRENT\\s+ROW/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[2];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_start});
-               %item = (__RULE__ => q{group_start});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/CURRENT\\s+ROW/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:CURRENT\s+ROW)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/CURRENT\\s+ROW/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      $expectation->failed();
+      Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+              if defined $::RD_TRACE;
+    push @item, $item{__STRING1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying subrule: [name1]},
+          Parse::RecDescent::_tracefirst($text),
+          q{dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{name1})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::name1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [name1]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{dereference_operation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [name1]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{name1}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{group_start},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{group_start},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{group_start},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{group_start},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::correlation_name
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"correlation_name"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [correlation_name]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{correlation_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [NAME]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{correlation_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{correlation_name});
-               %item = (__RULE__ => q{correlation_name});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [NAME]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{correlation_name},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::NAME($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [NAME]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{correlation_name},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [NAME]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{correlation_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{NAME}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [NAME]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{correlation_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{Trying repeated subrule: ['(']},
+          Parse::RecDescent::_tracefirst($text),
+          q{dereference_operation},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{'('})->at($text);
+
+    unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_dereference_operation, 0, 1, $_noactions,$expectation,undef)))
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['(']>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{dereference_operation},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_dereference_operation]<< (}
+          . @$_tok . q{ times)},
+
+            Parse::RecDescent::_tracefirst($text),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_dereference_operation(?)}} = $_tok;
+    push @item, $_tok;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{correlation_name},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{correlation_name},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{correlation_name},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{correlation_name},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::SQL_procedure_statement
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"SQL_procedure_statement"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [SQL_procedure_statement]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{SQL_procedure_statement},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/[^;]*/ /(;|\\z)/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{SQL_procedure_statement});
-               %item = (__RULE__ => q{SQL_procedure_statement});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/[^;]*/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:[^;]*)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/(;|\\z)/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/(;|\\z)/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:(;|\z))//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do { $return = $item[1] . $item[2] };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/[^;]*/ /(;|\\z)/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+
+    Parse::RecDescent::_trace(q{>>Matched production: [scoped_reference_expression '->' name1 '(']<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{SQL_procedure_statement},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{SQL_procedure_statement},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{SQL_procedure_statement},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{SQL_procedure_statement},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{dereference_operation},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{dereference_operation},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{dereference_operation},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{dereference_operation},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_between
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OUTER
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"group_between"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [group_between]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{group_between},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/BETWEEN/i group_bound1 /AND/i group_bound2]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{group_between});
-               %item = (__RULE__ => q{group_between});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/BETWEEN/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:BETWEEN)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [group_bound1]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_between},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{group_bound1})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_bound1]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_between},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [group_bound1]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{group_bound1}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/AND/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/AND/i})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:AND)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [group_bound2]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{group_between},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{group_bound2})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::group_bound2($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [group_bound2]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{group_between},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [group_bound2]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{group_bound2}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/BETWEEN/i group_bound1 /AND/i group_bound2]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"OUTER"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [OUTER]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{OUTER},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/outer/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{OUTER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{OUTER});
+    %item = (__RULE__ => q{OUTER});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/outer/i]}, Parse::RecDescent::_tracefirst($text),
+            q{OUTER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:outer)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
 
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{group_between},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{group_between},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{group_between},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{group_between},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::nextval_expression
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"nextval_expression"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [nextval_expression]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{nextval_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/NEXTVAL\\s+FOR/i sequence_name]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{nextval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{nextval_expression});
-               %item = (__RULE__ => q{nextval_expression});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/NEXTVAL\\s+FOR/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{nextval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:NEXTVAL\s+FOR)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [sequence_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{nextval_expression},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sequence_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::sequence_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [sequence_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{nextval_expression},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [sequence_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{nextval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{sequence_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/NEXTVAL\\s+FOR/i sequence_name]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{nextval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    Parse::RecDescent::_trace(q{>>Matched production: [/outer/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{OUTER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{nextval_expression},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{nextval_expression},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{nextval_expression},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{nextval_expression},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{OUTER},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{OUTER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{OUTER},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{OUTER},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::desc_option
+sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"desc_option"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [desc_option]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{desc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/DESC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{desc_option});
-               %item = (__RULE__ => q{desc_option});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/DESC/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:DESC)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{desc_option},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_desc_option, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [/NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{desc_option},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_desc_option]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_desc_option(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/DESC/i /NULLS\\s+FIRST/i, or /NULLS\\s+LAST/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"window_order_clause"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [window_order_clause]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/ORDER\\s+BY/i <leftop: sort_key_expression /,/ sort_key_expression>]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{window_order_clause});
+    %item = (__RULE__ => q{window_order_clause});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/ORDER\\s+BY/i]}, Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ORDER\s+BY)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying operator: [<leftop: sort_key_expression /,/ sort_key_expression>]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    $expectation->is(q{<leftop: sort_key_expression /,/ sort_key_expression>})->at($text);
+
+    $_tok = undef;
+    OPLOOP: while (1)
+    {
+      $repcount = 0;
+      my  @item;
+
+      # MATCH LEFTARG
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sort_key_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]<< (return value: [}
+          . $_tok . q{]},
 
+            Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_window_order_clause}} = $_tok;
+    push @item, $_tok;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{desc_option},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{desc_option},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{desc_option},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{desc_option},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+    }
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_list
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"column_list"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [column_list]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{column_list},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: ['(' <leftop: column_name /,/ column_name> ')']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{column_list});
-               %item = (__RULE__ => q{column_list});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['(']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\(//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: column_name /,/ column_name>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{column_list},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: column_name /,/ column_name>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{column_list},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{column_list},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'column_name(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [column_name]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{column_list},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{column_name})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::column_name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [column_name]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{column_list},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [column_name]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{column_name}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: column_name /,/ column_name>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{column_list},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: column_name /,/ column_name>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'column_name(s)'}=$_tok||[];
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [')']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{')'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING2__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
-    $return = join(' ', '(', @{$item[2]}, ')');
-};
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: ['(' <leftop: column_name /,/ column_name> ')']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
 
+      $repcount++;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{column_list},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{column_list},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{column_list},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{column_list},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      my $savetext = $text;
+      my $backtrack;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_63_of_rule_sysibm_function
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_63_of_rule_sysibm_function"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_63_of_rule_sysibm_function]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_INTERCEPT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_63_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_63_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_INTERCEPT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_INTERCEPT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_INTERCEPT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
-
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/REGR_ICPT/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[1];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{_alternation_1_of_production_63_of_rule_sysibm_function});
-               %item = (__RULE__ => q{_alternation_1_of_production_63_of_rule_sysibm_function});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/REGR_ICPT/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:REGR_ICPT)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/REGR_ICPT/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      # MATCH (OP RIGHTARG)(s)
+      while ($repcount < 100000000)
+      {
+      $backtrack = 0;
 
+    Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{/,/})->at($text);
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{_alternation_1_of_production_63_of_rule_sysibm_function},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::dereference_operation
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"dereference_operation"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [dereference_operation]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [scoped_reference_expression '->' name1 '(']},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{dereference_operation});
-               %item = (__RULE__ => q{dereference_operation});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying subrule: [scoped_reference_expression]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::scoped_reference_expression($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [scoped_reference_expression]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{dereference_operation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [scoped_reference_expression]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{scoped_reference_expression}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying terminal: ['->']},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{'->'})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A\-\>//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                                       if defined $::RD_TRACE;
-               push @item, $item{__STRING1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying subrule: [name1]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{name1})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::name1($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [name1]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{dereference_operation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [name1]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{name1}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-               Parse::RecDescent::_trace(q{Trying repeated subrule: ['(']},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{dereference_operation},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{'('})->at($text);
-               
-               unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_dereference_operation, 0, 1, $_noactions,$expectation,undef))) 
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: ['(']>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{dereference_operation},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_dereference_operation]<< (}
-                                       . @$_tok . q{ times)},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_dereference_operation(?)}} = $_tok;
-               push @item, $_tok;
-               
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [scoped_reference_expression '->' name1 '(']<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
+    {
 
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{dereference_operation},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{dereference_operation},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{dereference_operation},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{dereference_operation},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN2__}=$&;
+
+
+      pop @item;
+      if (defined $1) {push @item, $item{'_alternation_1_of_production_1_of_rule_window_order_clause(s)'}=$1; $backtrack=1;}
+
+    Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
+          Parse::RecDescent::_tracefirst($text),
+          q{window_order_clause},
+          $tracelevel)
+          if defined $::RD_TRACE;
+    if (1) { no strict qw{refs};
+    $expectation->is(q{sort_key_expression})->at($text);
+    unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
+    {
+
+      Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]<< (return value: [}
+          . $_tok . q{]},
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::OUTER
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"OUTER"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [OUTER]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{OUTER},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/outer/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{OUTER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{OUTER});
-               %item = (__RULE__ => q{OUTER});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/outer/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{OUTER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:outer)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/outer/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{OUTER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+            Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $item{q{_alternation_1_of_production_1_of_rule_window_order_clause}} = $_tok;
+    push @item, $_tok;
 
+    }
 
-        unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{OUTER},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{OUTER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{OUTER},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{OUTER},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
-}
+      $savetext = $text;
+      $repcount++;
+      }
+      $text = $savetext;
+      pop @item if $backtrack;
 
-# ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
-sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::window_order_clause
-{
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"window_order_clause"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/ORDER\\s+BY/i <leftop: sort_key_expression /,/ sort_key_expression>]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{window_order_clause});
-               %item = (__RULE__ => q{window_order_clause});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/ORDER\\s+BY/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:ORDER\s+BY)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying operator: [<leftop: sort_key_expression /,/ sort_key_expression>]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               $expectation->is(q{<leftop: sort_key_expression /,/ sort_key_expression>})->at($text);
-
-               $_tok = undef;
-               OPLOOP: while (1)
-               {
-                 $repcount = 0;
-                 my  @item;
-                 
-                 # MATCH LEFTARG
-                 
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sort_key_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_window_order_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-
-                 $repcount++;
-
-                 my $savetext = $text;
-                 my $backtrack;
-
-                 # MATCH (OP RIGHTARG)(s)
-                 while ($repcount < 100000000)
-                 {
-                       $backtrack = 0;
-                       
-               Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{/,/})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:,)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN2__}=$&;
-               
-
-                       pop @item;
-                       if (defined $1) {push @item, $item{'_alternation_1_of_production_1_of_rule_window_order_clause(s)'}=$1; $backtrack=1;}
-                       
-               Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]},
-                                 Parse::RecDescent::_tracefirst($text),
-                                 q{window_order_clause},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-               if (1) { no strict qw{refs};
-               $expectation->is(q{sort_key_expression})->at($text);
-               unless (defined ($_tok = Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::_alternation_1_of_production_1_of_rule_window_order_clause($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
-               {
-                       
-                       Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_window_order_clause]<< (return value: [}
-                                       . $_tok . q{]},
-                                         
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $item{q{_alternation_1_of_production_1_of_rule_window_order_clause}} = $_tok;
-               push @item, $_tok;
-               
-               }
-
-                       $savetext = $text;
-                       $repcount++;
-                 }
-                 $text = $savetext;
-                 pop @item if $backtrack;
-
-                 unless (@item) { undef $_tok; last }
-                 $_tok = [ @item ];
-                 last;
-               } 
-
-               unless ($repcount>=1)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: sort_key_expression /,/ sort_key_expression>]>>},
-                                                 Parse::RecDescent::_tracefirst($text),
-                                                 q{window_order_clause},
-                                                 $tracelevel)
-                                                       if defined $::RD_TRACE;
-                       $expectation->failed();
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: sort_key_expression /,/ sort_key_expression>]<< (return value: [}
-                                         . qq{@{$_tok||[]}} . q{]},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-
-               push @item, $item{'_alternation_1_of_production_1_of_rule_window_order_clause(s)'}=$_tok||[];
-
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/ORDER\\s+BY/i <leftop: sort_key_expression /,/ sort_key_expression>]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+      unless (@item) { undef $_tok; last }
+      $_tok = [ @item ];
+      last;
+    }
+
+    unless ($repcount>=1)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match operator: [<leftop: sort_key_expression /,/ sort_key_expression>]>>},
+              Parse::RecDescent::_tracefirst($text),
+              q{window_order_clause},
+              $tracelevel)
+              if defined $::RD_TRACE;
+      $expectation->failed();
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched operator: [<leftop: sort_key_expression /,/ sort_key_expression>]<< (return value: [}
+            . qq{@{$_tok||[]}} . q{]},
+            Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+    push @item, $item{'_alternation_1_of_production_1_of_rule_window_order_clause(s)'}=$_tok||[];
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/ORDER\\s+BY/i <leftop: sort_key_expression /,/ sort_key_expression>]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{window_order_clause},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{window_order_clause},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{window_order_clause},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{window_order_clause},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{window_order_clause},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{window_order_clause},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{window_order_clause},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{window_order_clause},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
 sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::TRIGGER
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"TRIGGER"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [TRIGGER]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{TRIGGER},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/trigger/i]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{TRIGGER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{TRIGGER});
-               %item = (__RULE__ => q{TRIGGER});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/trigger/i]}, Parse::RecDescent::_tracefirst($text),
-                                         q{TRIGGER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:trigger)//i)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/trigger/i]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{TRIGGER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"TRIGGER"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [TRIGGER]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{TRIGGER},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/trigger/i]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{TRIGGER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{TRIGGER});
+    %item = (__RULE__ => q{TRIGGER});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/trigger/i]}, Parse::RecDescent::_tracefirst($text),
+            q{TRIGGER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:trigger)//i)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/trigger/i]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{TRIGGER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{TRIGGER},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{TRIGGER},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{TRIGGER},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{TRIGGER},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{TRIGGER},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{TRIGGER},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{TRIGGER},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{TRIGGER},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 
 # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
 sub Parse::RecDescent::SQL::Translator::Parser::DB2::Grammar::comment
 {
-       my $thisparser = $_[0];
-       use vars q{$tracelevel};
-       local $tracelevel = ($tracelevel||0)+1;
-       $ERRORS = 0;
-       my $thisrule = $thisparser->{"rules"}{"comment"};
-       
-       Parse::RecDescent::_trace(q{Trying rule: [comment]},
-                                 Parse::RecDescent::_tracefirst($_[1]),
-                                 q{comment},
-                                 $tracelevel)
-                                       if defined $::RD_TRACE;
-
-       
-       my $err_at = @{$thisparser->{errors}};
-
-       my $score;
-       my $score_return;
-       my $_tok;
-       my $return = undef;
-       my $_matched=0;
-       my $commit=0;
-       my @item = ();
-       my %item = ();
-       my $repeating =  defined($_[2]) && $_[2];
-       my $_noactions = defined($_[3]) && $_[3];
-       my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
-       my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
-       my $text;
-       my $lastsep="";
-       my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
-       $expectation->at($_[1]);
-       
-       my $thisline;
-       tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
-
-       
-
-       while (!$_matched && !$commit)
-       {
-               
-               Parse::RecDescent::_trace(q{Trying production: [/^\\s*-\{2\}.*\\n/]},
-                                         Parse::RecDescent::_tracefirst($_[1]),
-                                         q{comment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               my $thisprod = $thisrule->{"prods"}[0];
-               $text = $_[1];
-               my $_savetext;
-               @item = (q{comment});
-               %item = (__RULE__ => q{comment});
-               my $repcount = 0;
-
-
-               Parse::RecDescent::_trace(q{Trying terminal: [/^\\s*-\{2\}.*\\n/]}, Parse::RecDescent::_tracefirst($text),
-                                         q{comment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $lastsep = "";
-               $expectation->is(q{})->at($text);
-               
-
-               unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:^\s*-{2}.*\n)//)
-               {
-                       
-                       $expectation->failed();
-                       Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
-                                               . $& . q{])},
-                                                 Parse::RecDescent::_tracefirst($text))
-                                       if defined $::RD_TRACE;
-               push @item, $item{__PATTERN1__}=$&;
-               
-
-               Parse::RecDescent::_trace(q{Trying action},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{comment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               
-
-               $_tok = ($_noactions) ? 0 : do {
+  my $thisparser = $_[0];
+  use vars q{$tracelevel};
+  local $tracelevel = ($tracelevel||0)+1;
+  $ERRORS = 0;
+  my $thisrule = $thisparser->{"rules"}{"comment"};
+
+  Parse::RecDescent::_trace(q{Trying rule: [comment]},
+          Parse::RecDescent::_tracefirst($_[1]),
+          q{comment},
+          $tracelevel)
+          if defined $::RD_TRACE;
+
+
+  my $err_at = @{$thisparser->{errors}};
+
+  my $score;
+  my $score_return;
+  my $_tok;
+  my $return = undef;
+  my $_matched=0;
+  my $commit=0;
+  my @item = ();
+  my %item = ();
+  my $repeating =  defined($_[2]) && $_[2];
+  my $_noactions = defined($_[3]) && $_[3];
+   my @arg =        defined $_[4] ? @{ &{$_[4]} } : ();
+  my %arg =        ($#arg & 01) ? @arg : (@arg, undef);
+  my $text;
+  my $lastsep="";
+  my $expectation = new Parse::RecDescent::Expectation($thisrule->expected());
+  $expectation->at($_[1]);
+
+  my $thisline;
+  tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
+
+
+
+  while (!$_matched && !$commit)
+  {
+
+    Parse::RecDescent::_trace(q{Trying production: [/^\\s*-\{2\}.*\\n/]},
+            Parse::RecDescent::_tracefirst($_[1]),
+            q{comment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    my $thisprod = $thisrule->{"prods"}[0];
+    $text = $_[1];
+    my $_savetext;
+    @item = (q{comment});
+    %item = (__RULE__ => q{comment});
+    my $repcount = 0;
+
+
+    Parse::RecDescent::_trace(q{Trying terminal: [/^\\s*-\{2\}.*\\n/]}, Parse::RecDescent::_tracefirst($text),
+            q{comment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $lastsep = "";
+    $expectation->is(q{})->at($text);
+
+
+    unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and   $text =~ s/\A(?:^\s*-{2}.*\n)//)
+    {
+
+      $expectation->failed();
+      Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
+            . $& . q{])},
+              Parse::RecDescent::_tracefirst($text))
+          if defined $::RD_TRACE;
+    push @item, $item{__PATTERN1__}=$&;
+
+
+    Parse::RecDescent::_trace(q{Trying action},
+            Parse::RecDescent::_tracefirst($text),
+            q{comment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+
+
+    $_tok = ($_noactions) ? 0 : do {
         my $comment =  $item[1];
         $comment    =~ s/^\s*(-{2})\s*//;
         $comment    =~ s/\s*$//;
         $return     = $comment;
     };
-               unless (defined $_tok)
-               {
-                       Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
-                                       if defined $::RD_TRACE;
-                       last;
-               }
-               Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
-                                         . $_tok . q{])},
-                                         Parse::RecDescent::_tracefirst($text))
-                                               if defined $::RD_TRACE;
-               push @item, $_tok;
-               $item{__ACTION1__}=$_tok;
-               
-
-
-               Parse::RecDescent::_trace(q{>>Matched production: [/^\\s*-\{2\}.*\\n/]<<},
-                                         Parse::RecDescent::_tracefirst($text),
-                                         q{comment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $_matched = 1;
-               last;
-       }
+    unless (defined $_tok)
+    {
+      Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
+          if defined $::RD_TRACE;
+      last;
+    }
+    Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
+            . $_tok . q{])},
+            Parse::RecDescent::_tracefirst($text))
+            if defined $::RD_TRACE;
+    push @item, $_tok;
+    $item{__ACTION1__}=$_tok;
+
+
+
+    Parse::RecDescent::_trace(q{>>Matched production: [/^\\s*-\{2\}.*\\n/]<<},
+            Parse::RecDescent::_tracefirst($text),
+            q{comment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $_matched = 1;
+    last;
+  }
 
 
         unless ( $_matched || defined($return) || defined($score) )
-       {
-               
-
-               $_[1] = $text;  # NOT SURE THIS IS NEEDED
-               Parse::RecDescent::_trace(q{<<Didn't match rule>>},
-                                        Parse::RecDescent::_tracefirst($_[1]),
-                                        q{comment},
-                                        $tracelevel)
-                                       if defined $::RD_TRACE;
-               return undef;
-       }
-       if (!defined($return) && defined($score))
-       {
-               Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
-                                         q{comment},
-                                         $tracelevel)
-                                               if defined $::RD_TRACE;
-               $return = $score_return;
-       }
-       splice @{$thisparser->{errors}}, $err_at;
-       $return = $item[$#item] unless defined $return;
-       if (defined $::RD_TRACE)
-       {
-               Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
-                                         $return . q{])}, "",
-                                         q{comment},
-                                         $tracelevel);
-               Parse::RecDescent::_trace(q{(consumed: [} .
-                                         Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, 
-                                         Parse::RecDescent::_tracefirst($text),
-                                         , q{comment},
-                                         $tracelevel)
-       }
-       $_[1] = $text;
-       return $return;
+  {
+
+
+    $_[1] = $text;  # NOT SURE THIS IS NEEDED
+    Parse::RecDescent::_trace(q{<<Didn't match rule>>},
+           Parse::RecDescent::_tracefirst($_[1]),
+           q{comment},
+           $tracelevel)
+          if defined $::RD_TRACE;
+    return undef;
+  }
+  if (!defined($return) && defined($score))
+  {
+    Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
+            q{comment},
+            $tracelevel)
+            if defined $::RD_TRACE;
+    $return = $score_return;
+  }
+  splice @{$thisparser->{errors}}, $err_at;
+  $return = $item[$#item] unless defined $return;
+  if (defined $::RD_TRACE)
+  {
+    Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
+            $return . q{])}, "",
+            q{comment},
+            $tracelevel);
+    Parse::RecDescent::_trace(q{(consumed: [} .
+            Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
+            Parse::RecDescent::_tracefirst($text),
+            , q{comment},
+            $tracelevel)
+  }
+  $_[1] = $text;
+  return $return;
 }
 }
 package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
@@ -36905,7 +36905,7 @@ package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
                                                                                                       'hashname' => '__ACTION1__',
                                                                                                       'lookahead' => 0,
                                                                                                       'line' => 170,
-                                                                                                      'code' => '{ 
+                                                                                                      'code' => '{
     extract_bracketed($text, \'(\');
 }'
                                                                                                     }, 'Parse::RecDescent::Action' )
@@ -37246,7 +37246,7 @@ package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
                                                                                                            'hashname' => '__ACTION1__',
                                                                                                            'lookahead' => 0,
                                                                                                            'line' => 599,
-                                                                                                           'code' => '{ # with static result type that is a used-defined struct type 
+                                                                                                           'code' => '{ # with static result type that is a used-defined struct type
 }'
                                                                                                          }, 'Parse::RecDescent::Action' )
                                                                                                 ],
@@ -40656,7 +40656,7 @@ package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
                                                                                                                     'hashname' => '__ACTION1__',
                                                                                                                     'lookahead' => 0,
                                                                                                                     'line' => 533,
-                                                                                                                    'code' => '{ # scoped, reference 
+                                                                                                                    'code' => '{ # scoped, reference
 }'
                                                                                                                   }, 'Parse::RecDescent::Action' )
                                                                                                          ],
@@ -41659,7 +41659,7 @@ package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
                                                                                                     'hashname' => '__ACTION1__',
                                                                                                     'lookahead' => 0,
                                                                                                     'line' => 603,
-                                                                                                    'code' => '{ # must be a method of subject_expression 
+                                                                                                    'code' => '{ # must be a method of subject_expression
 }'
                                                                                                   }, 'Parse::RecDescent::Action' )
                                                                                          ],
@@ -41805,7 +41805,7 @@ package SQL::Translator::Parser::DB2::Grammar; sub new { my $self = bless( {
                                                                                                                 'lookahead' => 0,
                                                                                                                 'line' => 163,
                                                                                                                 'code' => '{
-    $return = { name  => $item{table_name}{name}, 
+    $return = { name  => $item{table_name}{name},
                 query => $item[4]
                 };
 }'