-- RT_C132A3A1 : Lecture du fichier pi_100_millions.txt de 100 000 000 de decilames de Pi
--               et création d'un fichier de caractères
-- Coyright Jacques-deric Rouault
-- Version 1.3 du 20120227
              
WITH Text_io, sequential_io;
USE  Text_io;

PROCEDURE RT_C132A3A1 IS

  ftxt : File_type;
  str : String (1..80);
  lon : integer;
  
  PACKAGE sioc IS NEW sequential_io (Character);
  fc : sioc.File_type;

-------------------------------------------------------------------------------------------------------

   PROCEDURE traite1 IS
   
     rangdeb : INTEGER;
   
   BEGIN
   
     rangdeb:=1;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=12;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=23;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=34;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=45;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     New_line;
     
   END traite1;
   
-------------------------------------------------------------------------------------------------------

   PROCEDURE traite2 IS
   
     rangdeb : INTEGER;
   
   BEGIN
   
     rangdeb:=1;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN REVERSE rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=12;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN REVERSE rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=23;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN REVERSE rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=34;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN REVERSE rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     rangdeb:=45;
     put (str(rangdeb..rangdeb+9));
     put (" ");
     FOR r IN REVERSE rangdeb..rangdeb+9 LOOP
       sioc.write (fc,str(r));
     END LOOP;
     
     New_line;
     
   END traite2;
   
-------------------------------------------------------------------------------------------------------
  
BEGIN

  Put_line ("Debut d'execution du programme Ada RT_C132A3A1");
  
  sioc.Create (fc,sioc.out_file,"RT_C132A3A2.dat");
  Open (ftxt,in_file,"pi_100_millions.txt");  
  FOR i IN 1..21 LOOP
    get_line (ftxt,str,lon);
  END LOOP;
  FOR i IN 1..2_000_000 LOOP
    get_line (ftxt,str,lon);
    traite1;
  END LOOP;
  Close   (ftxt);
  
  Open (ftxt,in_file,"pi_100_millions.txt");
  FOR i IN 1..21 LOOP
    get_line (ftxt,str,lon);
  END LOOP;
  FOR i IN 1..1 LOOP
    get_line (ftxt,str,lon);
    traite2;
  END LOOP;
  Close (ftxt);
  sioc.Close (fc);
  
  Put_line ("Fin   d'execution du programme Ada RT_C132A3A1");

END RT_C132A3A1;