|
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: 6144 (0x1800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Operations, seg_0571c8
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Text_Io; with String_Utilities; with Bounded_String; use Bounded_String; package body Operations is --************************************************************ function Egal (Left, Right : Variable_String) return Boolean is -- Compare deux chaines (uniquement la partie "contrat" -- de celles-ci), retourne True si elles sont egales. begin return String_Utilities.Equal (Image (Separe_Contrat (Left)), Image (Separe_Contrat (Right)), False); end Egal; --************************************************************ function Separe_Contrat (Chaine : Variable_String) return Variable_String is -- Separe la partie "utile", c a dire ce qu'il y a avant -- la parenthese "(", si toutefois elle existe. Contrat : Variable_String (1024); Symbole : Character := '('; -- Ceci est le symbole a rechercher Long : Positive; Debut : Positive := 1; begin Copy (Contrat, Chaine); Long := Length (Chaine); -- Cherche la position "Debut" du symbole while Debut <= Long loop if Char_At (Contrat, Debut) /= Symbole then Debut := Debut + 1; else exit; end if; end loop; if Debut <= Long then --Efface ce qui suit le contrat: les (...) Delete (Contrat, Debut, Long - Debut + 1); end if; return Contrat; -- Si la "(" a ete trouvee, le contrat est retourne -- Sinon c'est tout le champ "Commande" end Separe_Contrat; --************************************************************ function Separe_Param (Chaine : Variable_String; Numero : Positive) return Variable_String is --Renvoie le contenu du sous-champ No. Numero --...contenu dans Chaine Contrat : Bounded_String.Variable_String (1024); Debut : Positive := 1; Long : Positive; Compteur : Positive := 1; begin Bounded_String.Copy (Contrat, Chaine); --Trouve la position du Numero'ieme "$" (debut) while Compteur /= Numero + 1 loop while Char_At (Contrat, Debut) /= '$' loop Debut := Debut + 1; end loop; Compteur := Compteur + 1; Debut := Debut + 1; end loop; --Efface le debut Delete (Contrat, 1, Debut - 1); Compteur := 1; Long := Length (Contrat); --Trouve la position du prochain "$" (fin) while Char_At (Contrat, Compteur) /= '$' loop Compteur := Compteur + 1; end loop; --Efface la fin, et retourne la portion demandee (No. Numero) Delete (Contrat, Compteur, Long - Compteur + 1); return Contrat; end Separe_Param; end Operations;
nblk1=5 nid=5 hdr6=8 [0x00] rec0=1b rec1=00 rec2=01 rec3=018 [0x01] rec0=1e rec1=00 rec2=03 rec3=01c [0x02] rec0=20 rec1=00 rec2=04 rec3=000 [0x03] rec0=02 rec1=00 rec2=02 rec3=000 [0x04] rec0=c0 rec1=00 rec2=00 rec3=100 tail 0x21763d6c887c6496d9821 0x42a00088462060003 Free Block Chain: 0x5: 0000 00 00 00 12 80 0f 74 65 6e 75 20 64 75 20 73 6f ┆ tenu du so┆