with Ada.Text_Io, Ada.Command_Line, Ada.Direct_Io;
use Ada.Text_Io, Ada.Command_Line;
procedure Programa2 is
Caracter:Character;
Indice:Integer:=1;
--Definición de la estructura que usamos
Alfabeto:String:=" abcdefghijklmnopqrstuvwxyz";
type Matriz is array(1..2,1..3) of Boolean;
Palabra:Matriz;
--Instanciación de Direct_IO
package Lista_Braille is new Ada.Direct_Io(Matriz);
use Lista_braille;
--Declaración de enlaces logicos
--F:lectura fichero texto
F:Ada.Text_Io.File_Type;
--G: lectura fichero "tabla_de_equivalencias.tde"
G:Lista_Braille.File_Type;
--H: fichero de salida .dat
H:Lista_Braille.File_Type;
--Para acceder de manera directa a una posicion del fichero
Indice_Tabla:Lista_braille.positive_Count:=1;
begin
--Apertura y creación de los ficheros.
Open(G,In_File,"tabla_de_equivalencias.tde");
Open(F,In_File,Argument(1));
Create(H,Out_File, Argument(2));
--Mientras no fin del fichero de texto
while not End_Of_File(F) loop
--leemos
Get(F,Caracter);
--Mientras el caracter no sea el mismo que en el array "alfabeto"
while Caracter/=Alfabeto(Indice) loop
--Actualizar contador
Indice_Tabla:=Indice_Tabla+1;
--Buscarlo
Indice:=Indice+1;
end loop;
--Apuntamos a la posición del fichero de tabla_de_equivalencias.tde
Set_Index(G,Indice_Tabla);
--Leemos esa posicion
Read(G,Palabra,Indice_Tabla);
--Escribimos en el fichero de salida
Write(H,Palabra);
--Reiniciamos los contadores de programa
Indice_Tabla:=1;
Indice:=1;
end loop;
--Cierre de ficheros
Close(F);
Close(G);
Close(H);
exception
when Name_Error=>
PUT_LINE("Fallo al introducir en nombre del archivo");
end Programa2;