:
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Shell-script for generating a C program for the model calibration:
# From a model description, generates a program
# with "parresp" and "varind" inverted.
#
# Usage:
# crCalib <regression-model-description-file>
# Side-effect:
# Creation of  file named $1.dc.c
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

# Checking of the command:
# -----------------------
if [ $# -ne 1 ]
then
  echo "Argument missing";
  echo "Usage: crCalib <filename>"
  exit
fi

if test ! -f $1
then
  echo "File '" $1 "' not found";
  exit;
fi

# Destruction des fichiers temporaires lors des evenements suivants:
# 0 (fin normale du script), le reste: arret volontaire ou non
# ------------------------------------------------------------------
trap 'rm /tmp/calib$$ /tmp/calib$$.c; exit' 0 1 2 3 15

# Generation du fichier formel ou varind et parresp sont inverses:
# ----------------------------------------------------------------
awk '
{
  if ($1 == "parresp")
    {
    printf "varind "
    for (j=2; j<=NF; j++)
      printf " %s", $j
    printf "\n"
    }
  else
    {
    if ($1 == "varind")
      {
      printf "parresp "
      for (j=2; j<=NF; j++)
        printf " %s", $j
      printf "\n"
      }
    else
      print $0
    } 
}
' <$1 > /tmp/calib$$



# Generation du programme de calcul correspondant:
# -----------------------------------------------
analDer /tmp/calib$$  > /tmp/calib$$.c

# On modifie le .c genere:
# - calcodes, jac et phi supprimes
# - calcf devient calcfx et calcv devient calcvx
# ------------------------
awk '
{
  if ($1 == "calcodes_()")
    {
    exit
    }

  if ($3 == "calcf_(nbt,")
    {
    printf "%s ", $1
    printf "%s calcfx_(nbt,", $2
    for (j=4; j<=NF; j++)
      printf " %s", $j
    printf "\n"
    }
  else
    {
    if ($1=="calcv_()")
      printf "calcvx_()"
    else
      {
      if ($3 == "calcv_(nbt,")
        {
        printf "%s ", $1
        printf "%s calcvx_(nbt,", $2
        for (j=4; j<=NF; j++)
          printf " %s", $j
        printf "\n"
        }
      else
        print $0
      }
    } 
}
'  </tmp/calib$$.c >$1.dc.c


# On signale ce qui a ete fait:
# ---------------------------

echo "The file $1.dc.c is created:"
echo ""

# +++++++++++ fin de crCalib +++++++++++++++++++
