]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - util/callgen
Callgen toma los códigos de origen/destino de la entrada estándar, soportando el...
[z.facultad/75.08/llamadas.git] / util / callgen
index 2580ee879fcac2c8495c53eacd02c36518154e45..8fb382816624e7c05664b76f77497b6bdfbd769a 100755 (executable)
@@ -7,18 +7,49 @@
 # Bajo licencia GPL.
 #
 # Uso:
 # Bajo licencia GPL.
 #
 # Uso:
-#      ./gencall.pl [cant_archivos [min_lineas [max_lineas]]]
+#      ./callgen [cant_archivos [min_lineas [max_lineas]]]
 #
 # cant_archivos                Cantidad de archivos a generar.
 #
 # cant_archivos                Cantidad de archivos a generar.
+# min_lines                    Mínima cantidad de líneas que puede tener un archivo.
+# max_lines                    Máxima cantidad de líneas que puede tener un archivo.
 #
 #
+# Por la entrada estándar debe recibir los códigos de países para origen y/o
+# destino. Toma los dos primeros caracteres por línea como un código, ignorando
+# el resto, de manera que se puede hacer:
+#      cat oridesti.txt | ./gencall
 
 # Configuración
 $CANT_ARCHS=10;
 $MIN_LINEAS=1000;
 $MAX_LINEAS=5000;
 
 
 # Configuración
 $CANT_ARCHS=10;
 $MIN_LINEAS=1000;
 $MAX_LINEAS=5000;
 
+#{{{ Variables globales
+our @codes; # Códigos de origen/destino
+#}}}
+
 #{{{ Funciones
 
 #{{{ Funciones
 
+#{{{ load_codes() - Obtiene códigos de origen/destino de la entrada estándar
+# Uso: load_codes()
+sub load_codes()
+{
+       while (<>)
+       {
+               ;
+               push(@codes, substr($_, 0, 2));
+       }
+}
+#}}}
+
+#{{{ get_rnd_code() - Obtiene un códigos de origen/destino al azar
+# Uso: get_rnd_code()
+sub get_rnd_code()
+{
+       my $cant = @codes;
+       return $codes[rnd($cant-1)];
+}
+#}}}
+
 #{{{ rnd() - Genera números aleatorios
 # Uso: rnd(MAX)      - genera número de 0 a MAX (inclusive)
 #      rnd(MIN, MAX) - genera número de MIN a MAX (inclusive)
 #{{{ rnd() - Genera números aleatorios
 # Uso: rnd(MAX)      - genera número de 0 a MAX (inclusive)
 #      rnd(MIN, MAX) - genera número de MIN a MAX (inclusive)
@@ -59,12 +90,12 @@ sub line()
        if (rnd(1) == 1)
        {
                $f_tipo = 'E';
        if (rnd(1) == 1)
        {
                $f_tipo = 'E';
-               $f_orig = char().char();
+               $f_orig = get_rnd_code();
        }
        else
        {
                $f_tipo = 'S';
        }
        else
        {
                $f_tipo = 'S';
-               $f_dest = char().char();
+               $f_dest = get_rnd_code();
        }
        my $f_prest = char().char().char().char().char().char().char().char().char();
        return "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest";
        }
        my $f_prest = char().char().char().char().char().char().char().char().char();
        return "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest";
@@ -72,7 +103,7 @@ sub line()
 #}}}
 
 #{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
 #}}}
 
 #{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
-# Uso: gen MIN MAX
+# Uso: gen(MIN, MAX)
 sub gen($$)
 {
        my ($ini, $fin) = @_;
 sub gen($$)
 {
        my ($ini, $fin) = @_;
@@ -92,6 +123,7 @@ sub gen($$)
 #{{{ Programa
 srand;
 my $cant = $ARGV[0] ? $ARGV[0] : $CANT_ARCHS;
 #{{{ Programa
 srand;
 my $cant = $ARGV[0] ? $ARGV[0] : $CANT_ARCHS;
+load_codes();
 for (my $i = 0; $i < $cant; ++$i)
 {
        gen($ARGV[1] ? $ARGV[1] : $MIN_LINEAS, $ARGV[2] ? $ARGV[2] : $MAX_LINEAS);
 for (my $i = 0; $i < $cant; ++$i)
 {
        gen($ARGV[1] ? $ARGV[1] : $MIN_LINEAS, $ARGV[2] ? $ARGV[2] : $MAX_LINEAS);