|
|
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