#!/usr/bin/ksh
#
# Processing History Extraction script, By Don Jennings, 2/2/94
#
# This script reads an ASCA processing history file specified by the
# first input argument ($1), extracts various information from it and
# writes it in the form of a "|" seperated line to the output file
# specified by the second intput argument ($2). Please note that the
# output line is appended to the output file; the original contents of
# the output file is not disturbed.
#
# The "various information" extracted is given by the values of the
# following processing history keyword values:
#
# OBJECT, SEQUENCE, RA, DEC, ROLL, STARTUTDATE, STARTUTTIME, ENDUTDATE,
# ENDUTTIME, TOTALTIME, USPINAME, JPPINAME, PROCDATE, GAINHISTVER,
# MKFILTERVER, FTOOLS, PROCVER, PROCLEVEL
#
#############################################################################
#
# extract the keyword values from the desired keywords in the input
# processing history file
#
lv=$( grep PROCLEVEL= $1 | awk ' BEGIN{FS = "="} {print $2}')
obj=$( grep OBJECT= $1 | awk ' BEGIN{FS = "="} {print $2}')
seq=$( grep SEQUENCE= $1 | awk ' BEGIN{FS = "="} {print $2}')
ra=$( grep RA= $1 | awk ' BEGIN{FS = "="} {print substr($2,1,10)}')
dec=$( grep DEC= $1 | awk ' BEGIN{FS = "="} {print substr($2,1,10)}')
roll=$( grep ROLL= $1 | awk ' BEGIN{FS = "="} {print substr($2,1,10)}')
sd=$( grep STARTUTDATE= $1 | awk ' BEGIN{FS = "="} {print $2}')
st=$( grep STARTUTTIME= $1 | awk ' BEGIN{FS = "="} {print $2}')
ed=$( grep ENDUTDATE= $1 | awk ' BEGIN{FS = "="} {print $2}')
et=$( grep ENDUTTIME= $1 | awk ' BEGIN{FS = "="} {print $2}')
tt=$( grep TOTALTIME= $1 | awk ' BEGIN{FS = "="} {print $2}')
uspi=$( grep USPINAME= $1 | awk ' BEGIN{FS = "="} {print $2}')
jppi=$( grep JPPINAME= $1 | awk ' BEGIN{FS = "="} {print $2}')
pdate=$(grep PROCDATE= $1 | awk ' BEGIN{FS = "="} {print $2}')
ghf=$( grep GAINHISTVER= $1 | awk ' BEGIN{FS = "="} {print $2}')
mkf=$( grep MKFILTERVER= $1 | awk ' BEGIN{FS = "="} {print $2}')
ftool=$(grep FTOOLS= $1 | awk ' BEGIN{FS = "="} {print $2}')
pver=$( grep PROCVER= $1 | awk ' BEGIN{FS = "="} {print $2}')
#
# test the critical keyword values to make sure that they are non-empty; if
# one is found to be empty the print out an error message and exit
#
if [ "$lv" = "" ] || [ "$obj" = "" ] || [ "$seq" = "" ] || [ "$ra" = "" ] || [ "$dec" = "" ] || [ "$roll" = "" ] || [ "$pdate" = "" ]
then
print "EXTRACT: missing infomation in file $1"
print "EXTRACT aborts!"
exit 1
fi
#
# remove the '' marks from the following string keyword values
#
obj=$( echo $obj | awk ' {print substr($0,2,length($0)-2)}')
uspi=$( echo $uspi | awk ' {print substr($0,2,length($0)-2)}')
jppi=$( echo $jppi | awk ' {print substr($0,2,length($0)-2)}')
sd=$( echo $sd | awk ' {print substr($0,2,length($0)-2)}')
st=$( echo $st | awk ' {print substr($0,2,length($0)-2)}')
ed=$( echo $ed | awk ' {print substr($0,2,length($0)-2)}')
et=$( echo $et | awk ' {print substr($0,2,length($0)-2)}')
if [ "$uspi" = "" ]
then
uspi="NONE"
fi
if [ "$jppi" = "" ]
then
jppi="NONE"
fi
#
# build an accecptable file name based upon the $obj, $uspi and $jppi values.
# change any "/" characters in the object name into "-", any "#" characters
# in the object name into "_", any " " characters into "_" and any "+"
# characters into "_plus_" (the "/" "#" " " "+" characters reak havoc on html
# and unix file name syntax)
#
obj_fname=$( echo $obj | sed 's/\//-/g' | sed 's/ /_/g' | sed 's/#/_/g' | sed 's/+/_plus_/g')
uspi_fname=$( echo $uspi | sed 's/\//-/g' | sed 's/ /_/g' | sed 's/#/_/g' | sed 's/+/_plus_/g')
jppi_fname=$( echo $jppi | sed 's/\//-/g' | sed 's/ /_/g' | sed 's/#/_/g' | sed 's/+/_plus_/g')
#
# remove the 'GHF', 'MKF' and 'ftools' from the values of the GAINHISTVER,
# MKFILTERVER and FTOOLS keyword values, respectively.
#
ghf=$(echo $ghf |awk 'index($0,"GHF") != 0 {print substr($0,index($0,"GHF")+3)}')
mkf=$( echo $mkf | awk ' index($0,"MKF") != 0 {print substr($0,index($0,"MKF")+3)}')
ftool=$( echo $ftool | awk ' index($0,"ftools.") != 0 {print substr($0,index($0,"ftools.")+7)}')
#
# extract the second digit of the SEQUENCE keyword value to determine the
# processing type
#
type=$( echo $seq | awk '{ print substr($0,2,1) }')
#
# if the second digit of SEQUENCE is '0' then this is a type 5 , else it is
# a type 0
#
if [ "$type" = "0" ]
then
type="5"
else
type="0"
fi
#
# convert the RA and DEC values into "old fashioned" units
#
oldra=$(/usr/local/bin/deg2hhmmss $ra)
olddec=$(/usr/local/bin/deg2degmmss $dec)
#
# write all the extracted keyword values to a single variable seperated by
# "|" marks (note that STARTUTDATE and STARTUTTIME, ENDUTDATE and ENDUTTIME
# are seperated by a blank space instead of a "|", and that SEQUENCE and
# PROCLEVEL are seperated by a ".").
#
all=$obj'|'$seq'.'$lv'|'$ra'|'$dec'|'$roll'|'$sd' '$st'|'$ed' '$et'|'$tt'|'$uspi'|'$jppi'|'$type'|'$pdate'|'$ghf'|'$mkf'|'$ftool'|'$pver'|'$oldra'|'$olddec'|'$obj_fname'|'$uspi_fname'|'$jppi_fname
print $all > > $2
#
# exit cleanly
#
exit 0
###############################################################################