DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 2358 (0x936) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Text_Io; with String_Utilities; package body Field_Parser is package Su renames String_Utilities; function Delete_Escape (S : in String) return String is P : Integer := Su.Locate (Escape, S); begin if P in 1 .. S'Last - 1 then return S (S'First .. P - 1) & S (P + 1) & Delete_Escape (S (P + 2 .. S'Last)); else return S; end if; end Delete_Escape; procedure Open (Parameter : in String; Pos : out Integer) is begin -- Parameter := Delete_Escape (Parameter); Pos := Parameter'First; end Open; procedure Value (Parameter : in String; Pos : in out Integer; The_Value : out String; Last : out Natural) is Field : String (1 .. Parameter'Length) := (others => ' '); Pos_Field : Integer := 1; At_End : Boolean := False; begin while not At_End and then Parameter (Pos) /= Separator loop if Parameter (Pos) = Escape then if not Done (Parameter, Pos) then Pos := Pos + 1; end if; end if; Field (Pos_Field) := Parameter (Pos); if not Done (Parameter, Pos) then Pos := Pos + 1; Pos_Field := Pos_Field + 1; else At_End := True; end if; end loop; if Pos_Field - 1 = 0 then The_Value (1 .. 1) := " "; Last := 0; else if Done (Parameter, Pos) then The_Value (1 .. Pos_Field) := Field (1 .. Pos_Field); Last := Pos_Field; else The_Value (1 .. Pos_Field - 1) := Field (1 .. Pos_Field - 1); Last := Pos_Field - 1; end if; end if; end Value; procedure Next (Parameter : in String; Pos : in out Integer) is begin if not Done (Parameter, Pos) then Pos := Pos + 1; end if; end Next; function Done (Parameter : in String; Pos : in Integer) return Boolean is begin return Pos = Parameter'Last; end Done; function Is_Empty_Field (Last : in Natural) return Boolean is begin return Last = 0; end Is_Empty_Field; end Field_Parser;