#!perl                                                      #<HTML><PRE>
#
# Subroutine file 'sep.pl' to read data in the form of the SEP header
# or parameter files.
#
# Version: 5.20
# Date: 1998, November 2
#
# Coded by: Ludek Klimes
#     Department of Geophysics, Charles University Prague,
#     Ke Karlovu 3, 121 16 Praha 2, Czech Republic,
#     E-mail: klimes@seis.karlov.mff.cuni.cz
#
#.......................................................................
#
# This file consists of the following PERL subroutines:
#     RSEP1...Subroutine designed to read a SEP-like parameter or header
#             file and to store the parameter names and values for
#             future use.
#             <A HREF="#RSEP1">RSEP1</A>
#     RSEP3...Subroutine designed to read the value of a given text,
#             integer or real-valued parameter from a previously stored
#             contents of SEP-like parameter or header file.
#             <A HREF="#RSEP3">RSEP3</A>
#
#.......................................................................
#
#                                                    <A NAME="data"></A>
# Form of the SEP (Stanford Exploration Project) parameter files:
#     Refer to Fortran file <A HREF="sep.for#data">sep.for</A>.
#
#=======================================================================
#
# <A NAME="RSEP1"></A>
#
# Subroutine RSEP1($FILE)
# ~~~~~~~~~~~~~~~~~~~~~~~
# Subroutine designed to read a SEP-like parameter or header file and to
# store the parameter names and values for future use.
#
# Input:
#     $FILE...String containing the name of the input SEP parameter
#             file to be read.
#             If $FILE=' ', no action is done.
#
# No output.
#
#-----------------------------------------------------------------------
#
sub RSEP1 {
  package Sep;
  $FILE=$_[0];
#
  if ($FILE eq ' ') {
    @SEPSTR=();
  } else {
    open(LU,"<$FILE");
#   Reading the SEP file into string array @SEPSTR
    @SEPSTR=<LU>;
    close(LU) || die "Error when closing '$FILE'";
  }
}
#=======================================================================
#
# <A NAME="RSEP3"></A>
#
# Subroutine RSEP3($NAME,$OUT,$DEF)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Subroutine designed to read the value of a given text, integer or
# real-valued parameter from a previously stored contents of SEP-like
# parameter or header file.
#
# Input:
#     $NAME...String containing the name of the parameter.  Except for
#             its case, it should match the parameter name in the input
#             SEP parameter file.
#     $DEF... Default value of the parameter.
#
# Output:
#     $OUT... Value of the parameter.
#
#-----------------------------------------------------------------------
#
sub RSEP3 {
  package Sep;
  $NAME=$_[0]; $DEF=$_[2];
  #---------------------------------------------------------------------
  # Converting the parameter name to the lowercase string to be searched
  $nameeq=' '."\L$NAME\E".'=';
  #
  # Setting the default value
  $OUT=$DEF;
  #
  # Loop over lines
  foreach $SEPSTR (@SEPSTR) {
    $i=index($SEPSTR,'#',0)-1;
    if ($i==-2) {
      $i=length($SEPSTR);
    }
#   Converting string $SEPSTR to lowercase
    $sepstr="\L$SEPSTR\E";
    $i=rindex($sepstr,$nameeq,$i);
    if ($i>-1) {
      # Line contains string $nameeq
      $i=$i+length($nameeq);
      if (substr($SEPSTR,$i,1) eq "'") {
        # Parameter value is a string in apostrophes
        $i=$i+1;
        $j=index($SEPSTR,"'",$i);
      } elsif (substr($SEPSTR,$i,1) eq '"') {
        # Parameter value is a string in double quotes
        $i=$i+1;
        $j=index($SEPSTR,'"',$i);
      } else {
        # Parameter value is terminated by ' ' or ',' or end of line or '#'
        $j=index($SEPSTR,' ',$i);
        $k=index($SEPSTR,',',$i);
        if ($j<=-1 || ($k>-1 && $j>$k)) {
          $j=$k;
        }
        if ($j<=-1) {
          $j=length($SEPSTR)-1;
        }
        $k=index($SEPSTR,'#',0);
        if ($k>-1 && $j>$k) {
          $j=$k;
        }
      }
      $j=$j-$i;
      if ($j>0) {
        $OUT=substr($SEPSTR,$i,$j);
      }
    }
  }
  #---------------------------------------------------------------------
  $_[1]=$OUT;
}
#=======================================================================
1;                                                               #</PRE>
