|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 8192 (0x2000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Trame_Old, seg_054770
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Byte_Defs; with Utils; with Bounded_String; with Text_Io; with String_Utilities; package body Trame_Old is function Fait_Trame (Adr_Client : String; Adr_Serveur : String; Num_Requete : Integer; Type_Msg : Integer; Donnees : String) return Byte_Defs.Byte_String is Trame_Faite : Byte_Defs.Byte_String (1 .. 1024); Trame_Temp : Bounded_String.Variable_String (1024); Long_Courante : Positive; Long_Trame : Positive; Long_Element : Positive; Pointeur : Positive; begin Pointeur := 1; Bounded_String.Insert (Trame_Temp, Pointeur, Adr_Client); Pointeur := Pointeur + Calc_Long (Adr_Client); --l'octet nul est aussi contenu Bounded_String.Insert (Trame_Temp, Pointeur, Ascii.Eot); --eot: separateur Pointeur := Pointeur + 1; Bounded_String.Insert (Trame_Temp, Pointeur, Adr_Serveur); Pointeur := Pointeur + Calc_Long (Adr_Serveur); Bounded_String.Insert (Trame_Temp, Pointeur, Ascii.Eot); --eot: separateur Pointeur := Pointeur + 1; Bounded_String.Insert (Trame_Temp, Pointeur, String_Utilities.Number_To_String (Num_Requete, 10, 0, ' ') & Ascii.Nul); Pointeur := Pointeur + Calc_Long (String_Utilities.Number_To_String (Num_Requete, 10, 0, ' ') & Ascii.Nul); Bounded_String.Insert (Trame_Temp, Pointeur, Ascii.Eot); --eot: separateur Pointeur := Pointeur + 1; Bounded_String.Insert (Trame_Temp, Pointeur, String_Utilities.Number_To_String (Type_Msg, 10, 0, ' ') & Ascii.Nul); Pointeur := Pointeur + Calc_Long (String_Utilities.Number_To_String (Type_Msg, 10, 0, ' ') & Ascii.Nul); Bounded_String.Insert (Trame_Temp, Pointeur, Ascii.Eot); --eot: separateur Pointeur := Pointeur + 1; Bounded_String.Insert (Trame_Temp, Pointeur, Donnees); Pointeur := Pointeur + Calc_Long (Donnees); --l'octet nul est aussi contenu Bounded_String.Insert (Trame_Temp, Pointeur, Ascii.Eot); --eot: separateur return Utils.String_To_Byte_String (Bounded_String.Extract (Trame_Temp, 1, Pointeur)); end Fait_Trame; function Calc_Long (Chaine : String) return Positive is Long : Positive := 1; begin Debut: for Taille in 1 .. 1024 loop if Chaine (Taille) = Ascii.Nul then exit Debut; else Long := Long + 1; end if; end loop Debut; return Long; end Calc_Long; function Trouve_Debut (Chaine_Str : String; Numero : Positive) return Positive is Pointeur : Positive := 1; Num_Courant : Positive := 1; begin if Numero /= 1 then begin Debut: for Boucle in 1 .. 1024 loop if Chaine_Str (Boucle) = Ascii.Eot then begin if (Num_Courant + 1) = Numero then Pointeur := Boucle + 1; exit Debut; else Num_Courant := Num_Courant + 1; end if; end; end if; end loop Debut; end; else Pointeur := 1; end if; return Pointeur; end Trouve_Debut; function Trouve_Fin (Chaine_Str : String; Position : Positive) return Positive is Pointeur : Positive := Position; begin Debut: for Boucle in Position .. 1024 loop if Chaine_Str (Boucle) = Ascii.Nul then Pointeur := Boucle; exit Debut; end if; end loop Debut; return Pointeur; end Trouve_Fin; function Donne_String (Trame_Recue : Byte_Defs.Byte_String; Numero : Positive) return String is Chaine_Src : String (1 .. 1024); Chaine_Dest : String (1 .. 1024); Debut : Positive; Fin : Positive; begin Chaine_Src := Utils.Byte_String_To_String (Trame_Recue); Debut := Trouve_Debut (Chaine_Src, Numero); Fin := Trouve_Fin (Chaine_Src, Debut); for Boucle in Debut .. Fin loop Chaine_Dest (Boucle - Debut + 1) := Chaine_Src (Boucle); end loop; if Fin < 1024 then for Boucle in Fin + 1 .. 1024 loop Chaine_Dest (Boucle - Debut + 1) := Ascii.Nul; end loop; end if; return Chaine_Dest; end Donne_String; function Donne_Integer (Trame_Recue : Byte_Defs.Byte_String; Numero : Positive) return Integer is Chaine_Src : String (1 .. 1024); Debut : Positive; Fin : Positive; Nombre : Integer; begin Chaine_Src := Utils.Byte_String_To_String (Trame_Recue); Debut := Trouve_Debut (Chaine_Src, Numero); Fin := Trouve_Fin (Chaine_Src, Debut); Chaine_Src := Donne_String (Trame_Recue, Numero); declare Chaine_Temp : String (1 .. (Fin - Debut)); Test : Boolean; begin for Boucle in 1 .. (Fin - Debut) loop Chaine_Temp (Boucle) := Chaine_Src (Boucle); end loop; String_Utilities.String_To_Number (Chaine_Temp, Nombre, Test, 10); if not Test then Text_Io.Put (" >Erreur< "); end if; end; return Nombre; end Donne_Integer; function Convert_String (Chaine_Src : String) return String is Trame_Temp : Bounded_String.Variable_String (1024); Long : Positive; begin Long := Calc_Long (Chaine_Src); Bounded_String.Copy (Trame_Temp, Chaine_Src); Bounded_String.Delete (Trame_Temp, Long, 1024 - Long + 1); return Bounded_String.Image (Trame_Temp); end Convert_String; end Trame_Old;
nblk1=7 nid=0 hdr6=e [0x00] rec0=1f rec1=00 rec2=01 rec3=06c [0x01] rec0=14 rec1=00 rec2=02 rec3=028 [0x02] rec0=16 rec1=00 rec2=03 rec3=05e [0x03] rec0=1c rec1=00 rec2=04 rec3=026 [0x04] rec0=21 rec1=00 rec2=05 rec3=07c [0x05] rec0=1e rec1=00 rec2=06 rec3=01e [0x06] rec0=1c rec1=00 rec2=07 rec3=000 tail 0x2175d8c3887b885828a6c 0x42a00088462060003