#!/bin/sh
#++++++++++++++++
#.IDENTIFICATION make_wds
#.LANGUAGE       C-shell
#.AUTHOR         CDS Catalogues Service
#.ENVIRONMENT
#.KEYWORDS
#.VERSION  1.0   28-Dec-2003
#.PURPOSE        Create the comets.dat file
#.COMMENTS
#----------------

chmod 700 .	# Protection

# Errors corrected
rm -f vsx.sed
cat > vsx.sed <<===EOF
/mean/ s/ \([^ (mean)][^ (mean)]*\)(mean)/      m\1/g
/KEPLER/   s/ \([0-9<>(][0-9().]*\)KEPLER/    \1KEP/g
/CoRoT/    s/ \([0-9<>(][0-9().]*\)CoRoT/   \1CoR/g
/NULL/     s/ \([0-9<>(][0-9().]*\)NULL/   \1  /g
#/KEPLER/     s/KEPLER    2/KEP    2/
#/CoRoT/      s/CoRoT    [(]/CoR    (/
#/CoRoT/      s/CoRoT     [(]/CoR     (/
/[RB][123]/  s/ \([0-9]\)\(:*[BR][132]\) /\1.\2 /g
/[RB][123]/  s/ \([12][0-9]\)\(:*[BR][132]\) /\1.\2 /g
/[RB][123]/  s/ \([0-9.]\)\([BR][132]\) /\1 \2 /g
/[Cc]lear/  s/[Cc]lear/    w/g
/[&][#]/    s/[&][#]039;/'     /g
/29000/     s/[(]29000[)]/29000.)/
/ [12 ][0-9][BVR][123 ]/   s/ \([12 ][0-9]\)\([BVR][123 ]\)/\1.\2/
/   120[*]2 *$/  s/ 120[*]2*$/ 120. *2/
/       (1)R1  /    s/       (1)R1/      (1.)R1/
===EOF

rm -f vsx.awk
cat > vsx.awk <<===AWK
BEGIN {  # Replacment of some passbands
    B["j"] = "bj"; B["f"] = "rf"; B["RF"]="rf";
    B["mp"]= "pg"; B["mpg"] = "pg"; B["P"] = "pg";
    B["i_P1"]= "i";
    B["HI-1A"]= "H1A";
    B["[3.6]"]= "3.6";
}
function amag(t) { # Normalize Magnitude: (<..MM.mmm:..BB
    len = length(t); i1=1;
    # set l_min/l_max when '<' in var p or l
    p=substr(t,i1,1); if(p=="(") i1++; else p=" ";
    l=substr(t,i1,1); if((l=="<")||(l==">")) i1++; else l=" ";
    while (substr(t,i1,1) == " ") i1++;
    for (i2=i1;(i2<=len)&&(substr(t,i2,1)!= " ")&&(substr(t,i2,1)!=":"); i2++) ;
    v = substr(t,i1, i2-i1); x=v+0; if ((x<10.)&&(x>=0)) v = " " v;
    if (x < -90.) v = " ";
    if (length(v)>6) v = sprintf("%6.3f", x); # Round the value
    while (substr(t,i2,1) == " ") i2++;
    u=substr(t,i2,1); if(u==":") i2++; else u=" ";
    while (substr(t,i2,1) == " ") i2++;
    for (i1=i2; (i1<=len) && (substr(t,i1,1) != " "); i1++) ;
    b = substr(t,i2, i1-i2); # Band
    if (b in B) b = B[b];
    if (length(b)>6) print "#***Band has >6 chars:", b > "/dev/stderr"
    while (substr(t,i1,1) == " ") i1++;
    # cf ReadMe columns: l_max(A1),maxi(F6.3),u_max(A1),n_max(A6)
    nm = sprintf("%s%s%-6s%s%-5s%-1s", p, l, v, u, b, substr(t,i1));
    filter[b] += 1
    if(length(nm) != len) { 
      printf "#***amag=<%s> => <%s> [#%d] (length=%d/%d)\n", \
	  t, nm, NR, length(nm), len > "/dev/stderr"
    }
    return(nm)
}
END {  # List the filters
    print "#=== List of filters" > "/dev/stderr"
    m = 1
    while (m>0) {
        m = 0
	for (i in filter) {
	    if (filter[i] > m) { b = i; m = filter[i] }
	}
	if (m>0) { printf "# %-3s = %d\n", b, m > "/dev/stderr" ;
	           delete filter[b] }
    }
}
{
    m1 = amag(substr(\$0,93,15));
    m2 = amag(substr(\$0,109,15));
    print substr(\$0,1,92) m1 substr(\$0,108,1) m2 substr(\$0,124)
}
===AWK

# Add the position from name when missing
cat tmp/vsx.ori \
| sed 's/\([^ ]*\)(Tyson)/  \1Tyson/g' | sed 's/\([^ ]*\)(UVOT)/  \1UVOT/g' \
| tr '\226' '-' | sed -f vsx.sed \
| acut -c1-92 -c93-107's/ \([<>0-9.][0-9.]*\)\([A-Za-z]\)/\1 \2/' \
       -c108 -c109-123's/ \([<>0-9.][0-9.]*\)\([A-Za-z]\)/\1 \2/' -c124-  \
| trcol -t93-123 ')' ' ' -t151 '0' ' ' \
| acut -c1-92 -c93-107%15.9 -c108 -c109-123%15.9 -c124-138 -c139-158%20.13 \
| gawk -f vsx.awk \
| trcol -t156-158 '0' ' ' \
| trcol -t99-102 '.' ' ' -t115-117 '.' ' ' -t93 '(' ' ' -l156-158 \
| trim > vsx.new
rm -f vsx.sed vsx.awk
trim tmp/refs.ori > refs.new
add_vsx		# Create vsx_id.new

if test -d v-1; then
    dv=`ls -ld --time-style=+'%Y-%m-%d' v-1|awk '{print $6}'`
    echo "#... v-1 version is dated $dv"
else
    dv=`ls -ld --time-style=+'%Y-%m-%d' vsx.dat.gz|awk '{print $6}'`
    test -z "$dv" && \
       dv=`ls -ld --time-style=+'%Y-%m-%d' vsx.dat|awk '{print $6}'`
    echo "#---Saved version:"
    ls -l versions
    #echo "#*** No v-1 version? "
    #echo "#    (must create it to continue)"
    #exit 1
fi
test -d v-1 || mkdir v-1 ; chmod 755 v-1
for f in vsx refs vsx_id; do
    if fcat $f.dat | cmp - $f.new; then
        echo "#...No change in $f"
	chmod 640 $f.new
    else
	x=`echo $f.dat* | sed s/$f.dat//`
	mv $f.dat* v-1
	mv $f.new $f.dat
	ls -l $f.*
	anafile -fs ReadMe | grep -v "too large.*'OID' " && gzip -v9 $f.dat
    fi
    cp -p ReadMe v-1
    chmod 600 ReadMe
done

vsx_old=`wc -l < vsx_id.oid`
test -d tmp && mv vsx_id.oid tmp
fcat vsx_id.dat | gawk -F= 'NF>2' > vsx_id.oid ; chmod 640 vsx_id.oid
vsx_new=`wc -l < vsx_id.oid`

jour=`date +%Y-%m-%d` ; jma=`date +%d-%h-%Y`
om=`anafile -fsr ReadMe vsx.dat | awk '/ OID /{print substr($NF,4)+0}'`
nv=`anafile -l vsx.dat | gawk '{print $5}'`
nr=`anafile -l refs.dat | gawk '{print $5}'`
ni=`anafile -l vsx_id.dat | gawk '{print $5}'`
cat ReadMe | gawk -v jour="$jour" -v jma="${jma}" -v oid=$om                   -v nr="$nr" -v nv="$nv" -v ni="$ni" '\
/^The AAVSO International Variable Star Index/{ i=index($0,$NF); \
     print substr($0,1,i-1) jour ")"; next }\
/^vsx.dat  / { sub($3,nv); i=index($0,$NF); print substr($0,1,i-1) jour; next }\
/^refs.dat / { sub($3,nr);                  print                      ; next }\
/^vsx_id.dat/{ sub($3,ni);                  print                      ; next }\
/^  *1-.* OID  *.1[\/]/{ i=index($0,"["); j=index($0,"]"); \
                   printf "%s%d%s----\n", substr($0,1,i+2),oid,substr($0,j); next }\
/^[(]End[)]/ { i=index($0,$NF); print substr($0,1,i-1) jma ; next }\
/^History:/ { h++; print ; next } \
/^  *[*] /{ if (h>0){h++; print ; i=index($0,"="); j=index($0,",");
            o=substr($0,i,j-i); \
     gsub($4, nv); sub($2,jour":");sub(o,"=" oid);hline=$0; next}}\
/^=====*$/{ if(hline != "") print hline; hline="" }\
{ print }' > readme.new
gawk -v nv="$nv" '/^\\cRecords/{ printf "\\cRecords{ %d variables}\n",nv;next}\
  { print }' .Summary > Summary.new
echo "#---readme.new + Summary.new ready; compare with ReadMe:"
diff readme.new ReadMe
diff  .Summary Summary.new

gunzip refs.dat.gz
fcat refs.dat| sed 's/^\( *[0-9][0-9]*\)  *\(.*\)$/\1 \2/g' >refs.tmp
mv refs.dat refs.dat.0; chown 600 refs.dat.0
mv refs.tmp refs.dat

echo1 "#===> To do next:"
echo1 "cdcat B/vsx"
echo1 "mv v-1 versions/$dv ; gzip -v9 versions/$dv/*"
echo1 "mv tmp v-1"
echo1 "mv readme.new ReadMe"
echo1 "mv Summary.new .Summary"
echo1 "anafile -fsr ReadMe"
echo1 "gz *.dat"
echo1 "make_public ."
echo1 "toviz -cat . -go"

##############################################################
