#! /bin/sh
#      MLP Batch Processing Job
#      standard for batch processing
# -- 2/17/96 moved to lsp bin
source $LSPBIN/nlplogin
PARSER=$HOME/parser/mlpparser; export PARSER
clear
echo "      MEDICAL LANGUAGE PROCESSING"
echo "      Processing English document $1.ocf"
echo "      `date`" 
echo ""
echo "      collects lexical classes, parses,"
echo "      sublanguage cooccurrence selection,"
echo "      conjunction expansion,"
echo "      basic medical statement formation,"
echo "      fitting text into 2 format frames..."
echo ""
if test -f $1.ocf
then
   echo "    --- Processing text input $1.ocf"
else
   echo "*** No text input found: $1.ocf !"
   echo ""
   exit
fi
ulimit -S -c 500
# -- dictionary lookup
\rm $1.dst* $1.er1
echo "    --- Dictionary word class labelling"
DOSEFILE="$DOSEFILE"
export DOSEFILE
EKGNOKEYFILE=""
# EKGNOKEYFILE="$EKGNONEFILE"
export EKGNOKEYFILE
EKGRHSFILE=""
# EKGRHSFILE="$EKGRHSFILE"
export EKGRHSFILE
MEDICFILE="$MEDICFILE"
export MEDICFILE
ORGANISMFILE="$ORGANISMFILE"
export ORGANISMFILE
GEOFILE="$GEOFILE"
export GEOFILE
PTFILE="$PTFILE"
export PTFILE
STAFFFILE="$STAFFFILE"
export STAFFFILE
INSTFILE="$INSTFILE"
export INSTFILE
WRDICT="$EMED"
export WRDICT
SENFILE=$1.ocf
export SENFILE
WRDICTSEL=$1.wlu
export WRDICTSEL
rm  $WRDICTSEL
if [ -z "$WRDST" ]
then
   WDSYMTTEMP="$1.dst$$"
   export WDSYMTTEMP
fi
$DICTLOOKUP >$WRDICTSEL
if [ $? -lt 0 ]
then
   echo "some error message appeared"
   echo "$?"
   exit
fi
# ------ Word class generation
\rm $1.par $1.mlpclass $1.neg $1.log1 $1.wdc.err
echo "    --- Word class generation  -> $1.mlpclass"
GRAMIN="$LSPLIB/cword.obg"
export GRAMIN
GRAMIS="$LSPLIB/cword.sym"
export GRAMIS
ERRORS="$1.wdc.err"
export ERRORS
# DRAWTREFILE="$1.draw"
# export DRAWTREFILE
LEDATRACE="$1.leda"
export LEDATRACE
\rm $LEDATRACE
SEGWORDS="$LSPLIB/esep1.txt"
export SEGWORDS
PARINP="$LSPINP/cepar.inp"
export PARINP
SENFILE=$1.ocf
export SENFILE
PARTREE="$1.par"
export PARTREE
DIAGFILE="$1.mlpclass"
export DIAGFILE
if [ -z "$WRDST" ]
then
   WDSYMTTEMP="$1.dst$$"
   export WDSYMTTEMP
fi
if [ $? -lt 0 ]
then
   echo "-- dlook: some error message appeared: $?"
   exit
fi
if [ -z "$WRDST" ]
then
   WRDST=$WDSYMTTEMP
   export WRDST
fi
$PARSER
cat cout.txt > $1.log1
# $MLPBIN/xlspclass $1 | $MLPBIN/wdcuniq > $1.wordclass
\rm $1.leda $1fs.ocf $1.neg.1 $1.log1
if test -f core
then
   \mv core ../$1-core
fi
# ------ Parsing
\rm $1.par $1.neg.1 $1.recovtree $1.neg $1.log $1.par.err $1.parsetrees
echo "    --- Parsing           -> $1.par"
ERRORS="$1.par.err"
export ERRORS
GRAMIN="$EPAR.obg"
export GRAMIN
GRAMIS="$EPAR.sym"
export GRAMIS
SEGWORDS="$LSPLIB/esep1.txt"
export SEGWORDS
DIAGFILE="$1.neg.1"
export DIAGFILE
INFOFILE="$1.recovtree"
export INFOFILE
if [ -z "$WRDST" ]
then
   WDSYMTTEMP="$1.dst$$"
   export WDSYMTTEMP
fi
if [ $? -lt 0 ]
then
   exit
fi
if [ -z "$WRDST" ]
then
   WRDST=$WDSYMTTEMP
   export WRDST
fi
$PARSER
cat cout.txt > $1.log
\rm $1.xpa $1.xwd $1p.ocf $1.par.ocf
# ------ Collect dictionary problems
# $MLPBIN/chkwd $1.log > $1.xwd
# egrep "homonym|Undefined |No definition|not referenced" $1.log | sed 's/^ //' | sed 's/^SID=/*SID=/' | sed 's/   / /g' > $1.xwd
egrep "homograph|homonym|Undefined |No definition|not referenced" $1.log | sed -e 's/^ //' -e 's/^SID=/*SID=/' -e 's/ [ ]*/ /g' > $1.xwd
# ------ Collect no parse messages
grep "No parses" $1.log > $1.xpa
# ------ Collect actual input to MLP
$MLPBIN/mlpocf $1 > $1p.ocf
$MLPBIN/getparsedwords $1 > $1.par.ocf
# ------ Adding reparse info
# egrep "recover|reparse|oogle|SID=" $1.log > $1.er1
egrep "reparse|oogle|gcons|frame overflow|SID=" $1.log > $1.er1
# ------ Collect processed segments into $1fs.ocf
if [ `grep SEGMENTSW=T $LSPINP/cespar.inp | wc -l` -ne 0 ]
then
     $MLPBIN/ocfseg.pl $1 > $1fs.ocf
fi
\rm $1.dst* $1.wlu
cp $1.log $1.parsetrees
# ------ Pattern collection
echo "    --- Pattern collection   -> $1.pat"
\rm $1.pat $1.pat.diag $1.pat.trace $1.pat.err $1.pattree $1.logpat
PARINP="$LSPINP/cepat.inp"
export PARINP
ERRORS="$1.pat.err"
export ERRORS
DIAGFILE="$1.pat.diag"
export DIAGFILE
INFOFILE="$1.pat.trace"
export INFOFILE
TRTREI1="$1.par"
export TRTREI1
TRDBG1="$1.pattree"
export TRDBG1
TRTREO1="$1.pat"
export TRTREO1
TRFGR1="$CEPAT.obg"
export TRFGR1
TRFGST1="$CEPAT.sym"
export TRFGST1
$PARSER
cat cout.txt > $1.logpat
# ------ Selection
echo "    --- Selection         -> $1.sel"
\rm $1.sel $1.sel.diag $1.sel.trace $1.sel.err $1.seltree $1.logsel
PARINP="$LSPINP/cesel.inp"
export PARINP
ERRORS="$1.sel.err"
export ERRORS
DIAGFILE="$1.sel.diag"
export DIAGFILE
INFOFILE="$1.sel.trace"
export INFOFILE
TRTREI1="$1.par"
export TRTREI1
TRDBG1="$1.seltree"
export TRDBG1
TRTREO1="$1.sel"
export TRTREO1
TRFGR1="$CESEL.obg"
export TRFGR1
TRFGST1="$CESEL.sym"
export TRFGST1
$PARSER
cat cout.txt >> $1.log
# ------ SHML
echo "    --- XML Tree         -> $1.xml.tree"
\rm $1.logxml $1.xml $1.xml.diag $1.xml.trace $1.xml.err $1.xml.tree
PARINP="$LSPINP/cexml.inp"
export PARINP
ERRORS="$1.xml.err"
export ERRORS
DIAGFILE="$1.xml.diag"
export DIAGFILE
INFOFILE="$1.xml.tree"
export INFOFILE
TRTREI1="$1.sel"
export TRTREI1
TRDBG1="$1.xml.trace"
export TRDBG1
TRTREO1="$1.xml"
export TRTREO1
TRFGR1="$CEXML.obg"
export TRFGR1
TRFGST1="$CEXML.sym"
export TRFGST1
$PARSER
cat cout.txt > $1.logxml
\rm $1.logxml $1.xml $1.xml.diag $1.xml.trace
# ------ Transformations
echo "    --- Transformation      -> $1.xfr"
\rm $1.xfr $1.xfr.diag $1.xfr.info $1.xfr.err
PARINP="$LSPINP/cexfr.inp"
export PARINP
ERRORS="$1.xfr.err"
export ERRORS
INFOFILE="$1.xfr.info"
export INFOFILE
DIAGFILE="$1.xfr.diag"
export DIAGFILE
TRTREI2="$1.sel"
export TRTREI2
TRTREO2="$1.xfr"
export TRTREO2
TRFGR2="$CEXFR.obg"
export TRFGR2
TRFGST2="$CEXFR.sym"
export TRFGST2
$PARSER
cat cout.txt >> $1.log
# ------ Regularization
echo "    --- Regularization      -> $1.reg"
\rm $1.reg $1.reg.diag $1.reg.info $1.reg.err
PARINP="$LSPINP/cereg.inp"
export PARINP
ERRORS="$1.reg.err"
export ERRORS
INFOFILE="$1.reg.info"
export INFOFILE
DIAGFILE="$1.reg.diag"
export DIAGFILE
TRTREI3="$1.xfr"
export TRTREI3
TRTREO3="$1.reg"
export TRTREO3
TRFGR3="$CEREG.obg"
export TRFGR3
TRFGST3="$CEREG.sym"
export TRFGST3
$PARSER
cat cout.txt >> $1.log
# ------ Format component
# ------ Create CT attribute list associated with words
# echo "    --- Format Attribute listing    -> $1.hmtclass"
# \rm $1.loghmt $1.hmt.diag $1.hmt $1.hmtclass $1.er5
# PARINP="$LSPINP/cehmt.inp"
# export PARINP
# ERRORS="$1.er5"
# export ERRORS
# DIAGFILE="$1.hmt.diag"
# export DIAGFILE
# INFOFILE="$1.hmtclass"
# export INFOFILE
# TRTREI5="$1.reg"
# export TRTREI5
# TRTREO5="$1.hmt"
# export TRTREO5
# TRFGR5="$CEFMTH.obg"
# export TRFGR5
# TRFGST5="$CEFMTH.sym"
# export TRFGST5
# $PARSER > $1.loghmt
# ------ Format tree writing
echo "    --- Parenthesized Format    -> $1.ftree"
\rm $1.logfmt $1.fmt $1.fmt.diag $1.newftree $1.ftree $1.er4
PARINP="$LSPINP/cefmt.inp"
export PARINP
ERRORS="$1.er4"
export ERRORS
DIAGFILE="$1.fmt.diag"
export DIAGFILE
INFOFILE="$1.ftree"
export INFOFILE
TRTREI4="$1.reg"
export TRTREI4
TRTREO4="$1.fmt"
export TRTREO4
TRFGR4="$CEFTREE.obg"
export TRFGR4
TRFGST4="$CEFTREE.sym"
export TRFGST4
$PARSER
cat cout.txt > $1.logfmt
$NBIN/addtxt2ftree $1 > $1.newftree
echo "    --- Tagged Format    -> $1.ftags"
\rm $1.xmt $1.xmt.diag $1.newftags $1.ftags $1.xmt.err
PARINP="$LSPINP/cefmt.inp"
export PARINP
ERRORS="$1.xmt.err"
export ERRORS
DIAGFILE="$1.xmt.diag"
export DIAGFILE
INFOFILE="$1.ftags"
export INFOFILE
TRTREI4="$1.reg"
export TRTREI4
TRTREO4="$1.xmt"
export TRTREO4
TRFGR4="$CEFTAG.obg"
export TRFGR4
TRFGST4="$CEFTAG.sym"
export TRFGST4
$PARSER
cat cout.txt >> $1.log
# ------ Collect word dictionary error/warning messages
echo "    --- Collecting results..."
\rm $1.sid $1.rpt $1.xsl $1.err
cat $1.par.err $1.sel.err $1.xfr.err $1.reg.err $1.xmt.err >> $1.er1
\rm $1.er2 $1.xfr.err $1.reg.err $1.xmt.err
# ------ Collect error/warning messages of all LSP components
$MLPBIN/errtrace $1
# ------ Collect SID of each LSP component
grep "*SID=" $1p.ocf $1.par $1.sel $1.xfr $1.reg $1.xmt $1.er1 > $1.sid
# ------ Create monitoring report
$MLPBIN/mlpruntally $1.sid > $1.rpt
# ------ Create FAIL-SEL report
$MLPBIN/awxsel $1.err > $1.xsl
\rm $1.logfmt $1.er4
\rm $1.log $1.logpat $1.logsel
\rm $1.xfr $1.fmt $1.shml
# \rm $1.par
\rm $1.ftree
\rm $1.loghmt $1.hmt $1.er5
\rm $1.xmt $1.pat
\rm $1.sel
\rm $1.reg $1.reg.diag
# \rm $1.parsetrees
# \rm $1.hmtclass
# -- check fail system
$MLPBIN/sysfailtest $1
