martes, 12 de septiembre de 2017

Cálculo del día anterior de la fecha del sistema o de un parámetro

###################################################################
# CALCULO DEL DIA ANTERIOR DE LA FECHA DEL SISTEMA O DE PARAMETRO #
###################################################################
if [ ${xrutina} = fanterior ] ; then
  xfparam=$2
  xnveces=$3

  if [ ${xfparam} ] ; then
  xfechoy=${xfparam}
  else
  xfechoy=`date +%Y%m%d`
  fi
  if ! [ ${xnveces} ] ; then
  xnveces=1
  fi

  xstatus=`echo ${xfechoy} | awk -f ${DWH_LIB}/_validfecha`
  if [ "${xstatus}" = "OK" ] ; then
  xcntdor=1
  while [ ${xcntdor} -le ${xnveces} ] ; do
  xfecant=`echo ${xfechoy} | awk '
  { a=substr($1,1,4); m=substr($1,5,2); d=substr($1,7,2);
  an=a+0; mn=m+0; dn=d+0;
  if (dn==1 && (mn==5 || mn==7 || mn==10 || mn==12))
  { d2n=30; m2n=mn-1; a2n=an; }
  if (dn==1 && mn==1)
  { d2n=31; m2n=12; a2n=an-1; }
  if (dn==1 && (mn==2 || mn==4 || mn==6 || mn==8 || mn==9 || mn==11))
  { d2n=31; m2n=mn-1; a2n=an; }
  if (dn==1 && mn==3 && an/4==int(an/4))
  { d2n=29; m2n=mn-1; a2n=an; }
  if (dn==1 && mn==3 && an/4!=int(an/4))
  { d2n=28; m2n=mn-1; a2n=an; }
  if (dn>1)
  { d2n=dn-1; m2n=mn; a2n=an; }
  canio_a=sprintf("%04d", a2n ""); cmes_a=sprintf("%02d", m2n ""); cdia_a=sprintf("%02d", d2n "");
  print canio_a cmes_a cdia_a
  }'`
  xfechoy=${xfecant}
  let xcntdor=${xcntdor}+1
  done
  echo ${xfecant}
  else
  echo "ERROR"
  fi
fi

No hay comentarios:

Publicar un comentario

Cálculo del día anterior de la fecha del sistema o de un parámetro

################################################################### # CALCULO DEL DIA ANTERIOR DE LA FECHA DEL SISTEMA O DE PARAMETRO # ...