#!/iag/bin/perl $outNc = shift; $inNc = shift; unless( -e $outNc and -e $inNc ) { print STDERR "Usage: ncCat.pl outNc inNc\n"; exit(1); } use NetCDF; $outNcID = NetCDF::open( $outNc, NetCDF::WRITE ); $inNcID = NetCDF::open( $inNc, NetCDF::NOWRITE ); $outRecDimID = NetCDF::dimid( $outNcID, "oasisTime" ); $inRecDimID = NetCDF::dimid( $inNcID, "oasisTime" ); $outRecVarID = NetCDF::varid( $outNcID, "oasisTime" ); $inRecVarID = NetCDF::varid( $inNcID, "oasisTime" ); NetCDF::diminq( $outNcID, $outRecDimID, $junk, $outRecs ); NetCDF::diminq( $inNcID, $inRecDimID, $junk, $inRecs ); if( $outRecs > 0 ) { @start = 0; NetCDF::varget1($inNcID, $inRecVarID, \@start, $firstIn); @start = 1; NetCDF::varget1($inNcID, $inRecVarID, \@start, $nextIn); $step = $nextIn - $firstIn; @start = $outRecs-1; NetCDF::varget1($outNcID, $outRecVarID, \@start, $lastOut); if( $firstIn > ($lastOut+$step) ) { print "fill between $lastOut to $firstIn at $step\n"; for( $i=$lastOut+$step; $i < $firstIn; $i += $step ) { push( @fillTime, $i ); } @start = $outRecs; @count = $#fillTime + 1; NetCDF::varput($outNcID, $outRecVarID, \@start, \@count, \@fillTime); NetCDF::close( $outNcID ); NetCDF::close( $inNcID ); } else { print "no gap between files\n"; } } system( join(' ', "bin/nccat", $outNc, $inNc) ); exit;