-- RT_C137A2A4 : Lecture d'un fichier autolisible -- Flottant simple precision, une dimension -- Coyright Jacques-deric Rouault -- Version 1.1 du 20120227 WITH Text_io, sequential_io; USE Text_io; PROCEDURE RT_C137A2A4 IS str_nom_fichier : string (1..80); lon_nom_fichier : integer; Probleme : EXCEPTION; PACKAGE IIO IS NEW Integer_io (Integer); PACKAGE FIO IS NEW Float_io (Float); PACKAGE siof IS NEW sequential_io (Float); ------------------------------------------------------------------------------------------------------------------ PROCEDURE lecture_parametres IS ftxt : File_type; str : string (1..80); lon : integer; code_format : Integer; BEGIN Open (ftxt,in_file,"RT_C137A2A4.txt"); Get_line (ftxt,str,lon); IF (lon/=15) OR (str(1..15)/="\\RASTELL-TOULL") THEN Put_line ("ERREUR A1 : IDENTIFICATEUR RASTELL-TOULL NON RECONNU"); RAISE probleme; END IF; Get_line (ftxt,str,lon); IF (lon/=8) OR (str(1..8)/="\\FORMAT") THEN Put_line ("ERREUR A2 : IDENTIFICATEUR FORMAT NON RECONNU"); RAISE probleme; END IF; iio.get (ftxt,code_format); Get_line (ftxt,str,lon); IF code_format/=2 THEN Put_line ("ERREUR A3 : CODE FORMAT INCORRECT"); RAISE probleme; END IF; Get_line (ftxt,str,lon); IF (lon/=10) OR (str(1..10)/="\\FICHIERS") THEN Put_line ("ERREUR A4 : IDENTIFICATEUR FICHIERS NON RECONNU"); RAISE probleme; END IF; Get_line (ftxt,str,lon); Get_line (ftxt,str_nom_fichier,lon_nom_fichier); Get_line (ftxt,str,lon); IF (lon/=8) OR (str(1..8)/="\\FINEND") THEN Put_line ("ERREUR A5 : IDENTIFICATEUR FINEND NON RECONNU"); RAISE probleme; END IF; Close (ftxt); END lecture_parametres; ------------------------------------------------------------------------------------------------------------------ PROCEDURE lecture_fichier_data IS ff : siof.File_type; fident1 : Float := 1.23456789; fident2 : Float; code_format1 : Float := 1.0; code_format2 : Float; fnvals : Float; invals : Integer; val : Float; BEGIN siof.Open (ff,siof.in_file,str_nom_fichier(1..lon_nom_fichier)); siof.Read (ff,fident2); IF fident1/=fident2 THEN Put_line ("ERREUR B1 : IDENTIFICATEUR FICHIER AUTO LISIBLE NON RECONNU"); RAISE probleme; END IF; siof.Read (ff,code_format2); IF code_format1/=code_format2 THEN Put_line ("ERREUR B2 : CODE FORMAT FICHIER AUTO LISIBLE NON RECONNU"); RAISE probleme; END IF; siof.Read (ff,fnvals); invals := Integer (fnvals); Put ("nombre de valeurs = "); iio.put (invals,5); new_line; FOR n In 1..invals LOOP siof.Read (ff,val); iio.put (n,4); put (" - "); fio.put (val,3,7,0); new_line; END LOOP; siof.Close (ff); END lecture_fichier_data; ------------------------------------------------------------------------------------------------------------------ BEGIN Put_line ("Debut d'execution du programme Ada RT_C137A2A4"); lecture_parametres; put_line ("Fichier a lire = " & str_nom_fichier(1..lon_nom_fichier)); lecture_fichier_data; Put_line ("Fin d'execution du programme Ada RT_C137A2A4"); EXCEPTION WHEN probleme => Put_line ("ERREUR : FICHIER AUXILLIAIRE RASTELL TOULL : FORMAT NON CONFORME"); END RT_C137A2A4;