×
Create a new article
Write your page title here:
We currently have 3,189 articles on s23. Type your article name above or create one of the articles listed here!



    s23
    3,189Articles
    Revision as of 09:20, 10 September 2006 by imported>mutante (Concord sub-category of networking, pages shouldnt be in category and subcategory at the same time)
    (diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

    here is a little script i wrote to change DCI rules foles to csv formated files.


    #!/bin/perl
    
    use strict;
    use warnings;
    use Getopt::Long;
    
    Getopt::Long::config qw(no_ignore_case);
    
    
    my ( $inputFile, $outputAllFields, $searchKey, $outputFields );
    our @foundSegments;
    {
    
      $outputFields = 'name,deviceSpeedIn,deviceSpeedOut';
      
      my $needHelp;
      GetOptions( 	'dciInFile=s' 		=> \$inputFile,
    		'findField=s'		=> \$searchKey,
    		'showFields=s'		=> \$outputFields,
    		'listAllFields'		=> \$outputAllFields,
    		'help|h|H|?|HELP'  	=> \$needHelp
    	);
      die usage() if $needHelp;
    }
    
    ############################################################
    # Data collection
    #  using an input file
    #  else quit
    ############################################################
    
    if ($inputFile){  
    
        findVars($inputFile); 
    } else {
    die usage() 
    } 
    
    
    ############################################################
    # Data output 
    #	if request for keys print all keys
    #	else print results
    ############################################################
    
    if ($outputAllFields) {
      foreach ( @foundSegments ) {
        foreach (keys %$_) {
          print "$_, ";
        }
      print "\n";
      }
    
    } else {
      foreach my $found (@foundSegments) {
        foreach my $showKey (split /,/, $outputFields) {
          print "$found->{$showKey},";	
        }
      print "\n";
      }
    }
    
    
    sub usage {
      return <<USAGETEXT;
    usage: $0 -dciInFile filename  
    	-dciInFile filename  is the dci file you want to scan
    	the following options are also availble
    	[ -findField fieldName ] this is the search key to be used (by default all elements will be returned)
    	[ -showFields field names ] feilds to output (default is name,deviceSpeedIn,deviceSpeedOut)
    	[ -listAllFields ] list avalible fields
    	[ -help] this help text
    USAGETEXT
    }
    
    sub findVars {
    ############################################################
    # find infomation form Concord's dci files
    # usage:
    #  findVars("key to search in","value to search for")
    #
    # output:
    #  an aray of Hashes containing all matched segments and keys
    ############################################################
    
    
    my ($dciFile, $segmentFieldKey, %segment, $segmentFieldValue, %segmentFields, $nullVar);
    my $inElementSection;
    
    # read in dci filename from parent
    
    $dciFile=$_[0] || die qq( FindVars function: Missing dciInfile  value $!);
    
    chomp $dciFile;
    
    open(DCIFILE, "<$dciFile") || die "FindVars function: can not open : $!";
    
    
    foreach my $line (<DCIFILE>) {
      chomp $line;
    
      if ( $line =~ /^FN,Elements,/ ) {
        $line =~ s/FN\,Elements\,//g;
        our $i="0";
        foreach (split(/\,/,$line)) {
          $i++;
          $segmentFields{ $i } = $_;
        }
      next;
    }; 
      if ( $line =~ /^DS,,Elements,/ ) {$inElementSection=1; next;} #marks start of elements
      if ( $line =~ /^DE/ ) {$inElementSection=0; next;} #marks end of elements
      if ($inElementSection==1) {
        our $ii="0";
        foreach (split(/\,/,$line)) {
          if ($_ =~ /^$/) {$segment{$segmentFields{$ii}}="void";}
          $ii++;
          $segment{$segmentFields{$ii}}=$_;
        }
        push @foundSegments,{%segment};
        next;
      }
    }
    close DCIFILE;
    
    return (@foundSegments);      # return to main ruteen
    
    }

    Back to Concord Index

    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.