#! /bin/sh

#   extract n-mer output generated for MacMolPlt (nfrnd=2) 
#       version 1.1
# written March 12, 2009
# last updated July 11, 1012
#   Dmitri G. Fedorov
#         AIST
# Required FMO version: 4.3 and up.
# Arguments: GAMESS FMO output file(s) (* will be added to treat GDDI output) 
# Output: n-mer outputs 
# example:
# frgout FMOtuto.out
# (Do not use as: frgout FMOtuto.out*)
#
if [  $# -ne 1 ] ; then 
  echo GAMESS output should be the only argument.
  exit
fi
name=$1
n1=${#name}
let "n0=$n1-3" 
ext=${name:$n0:$n1}
stub=${name%$ext}
#tmp=tmptmptmp
split ()
{
a1=$1
a2=$2
a3=$3
a4=$4
a5=$5
ilay=$6
ifg=$7
jfg=$8
kfg=$9
shift
iter=$9
}
OIFS=$IFS
for k in `ls $1*`
do
   echo $k
   curfile=none
   while IFS=@ ; read line
   do
      IFS=$OIFS
#     why echo "$line" | read    DOES NOT WORK?!!!
#     echo "$line" >$tmp && read <$tmp a1 a2 a3 a4 a5 ilay ifg jfg kfg iter a6
      split $line
      if [ $curfile = none ] ; then
         if [ "$a2" = BEGIN -a "$a3" = FMO ] ; then
            curfile=$stub$ilay.$ifg.$jfg.$kfg.$iter.$ext
            if [ -e $curfile ] ; then
              rm -f $curfile 
            fi
            if [ $jfg = 0 ] ; then 
               echo Processing layer $ilay monomer $ifg iter $iter ...
            elif [ $kfg = 0 ] ; then 
               echo Processing layer $ilay dimer $ifg $jfg
            else
               echo Processing layer $ilay trimer $ifg $jfg $kfg
            fi
         fi
      else
          if [ "$a2" = END -a "$a3" = FMO ] ; then
             curfile=none
          else
             echo "$line" >>$curfile 
          fi 
      fi
   done <$k
done
#rm -f $tmp
