Examen Parcial - 75.08. Sistemas Operativos

Cátedra: Osvaldo Clua
Fecha: Primera oportunidad - Primer Cuatrimestre 2005
Día: 24/05/2005
Tema: UNIX

Esta página está incompleta; podés ayudar completando el material.

Enunciado

El Fondo Monetario Internacional recibe informes de los organismos internacionales de crédito (BID, Banco Mundial, etc) en donde se indica:

  • Código de Beneficiario
  • Código de Préstamo
  • Monto del Préstamo
  • Fecha de disponibilidad (aaaammdd)
  • Fecha de caducidad (aaaammdd)

Si el archivo lo envia el BID, el nombre es BIDnnnn, donde nnnn es un número de 4 dígitos secuencial.

Si el archivo lo envia el Banco Mundial, el nombre es BMnnnn, donde nnnn es un número de 4 dígitos secuencial.

Para validar al Beneficiario cuenta con una tabla (1 a n registros) con la siguiente información:

  • Código
  • Nombre

Ejemplo:
<tex>\begin{array}{|c|c|}\hline613 & \mbox{Argentina}\\\hline615 & \mbox{Peru}\\\hline\end{array}</tex>

Se pide:

Desarrollar un comando que reciba como parámetro el nombre del archivos, que se quiere procesar (parámetro obligatorio) y un código de beneficiario (parámetro opcional). Si el código de Beneficiario no se ingresa, tomar como valor de defecto el 613 qe corresponde a Argentina (pais que siempre es necesario monitorear) y grabe un archivo de salida (salida.txt) con la siguiente información:
El (BID o BM segú corresponda) ha puesto en disponibiliadd en (nombre del beneficiario) en el correinte año u$s xx(suma de los montos de préstamos con fecha de disponibilidad en el corriente año) dolares.

Validar el nombre del archivo de acuerdo al formato especificado y el parámetro opcional si este es ingresado.

Ejemplo:
El BID ha puesto en disponibilidad en Republica Argentina en el corriente año u$s 2.346.000 dolares

Resolución

#!/bin/bash
 
TABLA_PAISES="paises.tab"
function obtenerDescripcionPais() {
 pais=$1
 desc=`grep -E $pais "$TABLA_PAISES" | tr -d [0123456789,]`
 if ! [ -z $desc ]
 then
  pais=$desc
 fi
}
 
beneficiario=613
 
if [ $# -ne 1 ] && [ $# -ne 2 ]
then
 echo "Uso: `basename $0` archivo [beneficiario]"
 exit 1
fi
 
archivo=$1
if ! [ -z $2 ]
then
 beneficiario=$2
fi
 
echo $archivo | grep -qE ^\(BID\|BM\)[0-9]{4}$
if [ $? -ne 0 ]
then
 echo "El nombre de archivo $archivo no es valido"
 exit 1
fi
 
echo $beneficiario | grep -qE ^[0-9]*$
if [ $? -ne 0 ]
then
 echo "El codigo de beneficiario $beneficiario no es valido"
 exit 1
fi
 
monto=0
anio=`echo $archivo | tr -d [:alpha:]`
# Código de Beneficiario;Código de Préstamo;Monto del Préstamo;Fecha de disponibilidad (aaaammdd);Fecha de caducidad (aaaammdd)
lineas=`grep -E ^$beneficiario\;[0-9]*\;[0-9]*\.[0-9]{2}\;$anio $archivo`
for linea in $lineas
do
 BACKUP=$IFS
 IFS=\;
 campos=(${linea[@]})
 monto=`echo "$monto+${campos[2]}" | bc`
 IFS=$BACKUP
done
 
obtenerDescripcionPais $beneficiario
organismo=`echo $archivo | tr -d [:digit:]`
echo "El $organismo ha puesto en disponibilidad en $pais en el corriente año u\$s $monto"
materias/75/08/parcial_20050524_1unix.txt · Última modificación: 2008/05/27 12:54 por mariano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki