DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦234edc719⟧ Ada Source

    Length: 14336 (0x3800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package A_Strings, seg_04cdd5

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



-- This package defines types and routines for manipulating
-- varying-length character strings, as a_string (access string).

-- SFZ\x091/21/86

with Unchecked_Conversion;
with System;

package A_Strings is

    type String_Rec (Len : Natural) is
        record
            S : String (1 .. Len);
        end record;
    type A_String is access String_Rec;

    function To_A_String is
       new Unchecked_Conversion (Source => System.Address, Target => A_String);

    Null_String_Rec : constant String_Rec (0) :=
       (Len => 0, S => (others => Ascii.Nul));

    Empty : constant A_String := To_A_String (Null_String_Rec'Address);

    type Convert_T is array (Character) of Character;
    To_Upper : constant Convert_T :=
       (Ascii.Nul, Ascii.Soh, Ascii.Stx, Ascii.Etx, Ascii.Eot, Ascii.Enq,
        Ascii.Ack, Ascii.Bel, Ascii.Bs, Ascii.Ht, Ascii.Lf, Ascii.Vt, Ascii.Ff,
        Ascii.Cr, Ascii.So, Ascii.Si, Ascii.Dle, Ascii.Dc1, Ascii.Dc2,
        Ascii.Dc3, Ascii.Dc4, Ascii.Nak, Ascii.Syn, Ascii.Etb, Ascii.Can,
        Ascii.Em, Ascii.Sub, Ascii.Esc, Ascii.Fs, Ascii.Gs, Ascii.Rs, Ascii.Us,
        ' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-',
        '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';',
        '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
        'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
        'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_', '`', 'A', 'B',
        'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
        'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|',
        '}', '~', Ascii.Del, Character'Val (128), Character'Val (129),
        Character'Val (130), Character'Val (131), Character'Val (132),
        Character'Val (133), Character'Val (134), Character'Val (135),
        Character'Val (136), Character'Val (137), Character'Val (138),
        Character'Val (139), Character'Val (140), Character'Val (141),
        Character'Val (142), Character'Val (143), Character'Val (144),
        Character'Val (145), Character'Val (146), Character'Val (147),
        Character'Val (148), Character'Val (149), Character'Val (150),
        Character'Val (151), Character'Val (152), Character'Val (153),
        Character'Val (154), Character'Val (155), Character'Val (156),
        Character'Val (157), Character'Val (158), Character'Val (159),
        Character'Val (160), Character'Val (161), Character'Val (162),
        Character'Val (163), Character'Val (164), Character'Val (165),
        Character'Val (166), Character'Val (167), Character'Val (168),
        Character'Val (169), Character'Val (170), Character'Val (171),
        Character'Val (172), Character'Val (173), Character'Val (174),
        Character'Val (175), Character'Val (176), Character'Val (177),
        Character'Val (178), Character'Val (179), Character'Val (180),
        Character'Val (181), Character'Val (182), Character'Val (183),
        Character'Val (184), Character'Val (185), Character'Val (186),
        Character'Val (187), Character'Val (188), Character'Val (189),
        Character'Val (190), Character'Val (191), Character'Val (192),
        Character'Val (193), Character'Val (194), Character'Val (195),
        Character'Val (196), Character'Val (197), Character'Val (198),
        Character'Val (199), Character'Val (200), Character'Val (201),
        Character'Val (202), Character'Val (203), Character'Val (204),
        Character'Val (205), Character'Val (206), Character'Val (207),
        Character'Val (208), Character'Val (209), Character'Val (210),
        Character'Val (211), Character'Val (212), Character'Val (213),
        Character'Val (214), Character'Val (215), Character'Val (216),
        Character'Val (217), Character'Val (218), Character'Val (219),
        Character'Val (220), Character'Val (221), Character'Val (222),
        Character'Val (223), Character'Val (224), Character'Val (225),
        Character'Val (226), Character'Val (227), Character'Val (228),
        Character'Val (229), Character'Val (230), Character'Val (231),
        Character'Val (232), Character'Val (233), Character'Val (234),
        Character'Val (235), Character'Val (236), Character'Val (237),
        Character'Val (238), Character'Val (239), Character'Val (240),
        Character'Val (241), Character'Val (242), Character'Val (243),
        Character'Val (244), Character'Val (245), Character'Val (246),
        Character'Val (247), Character'Val (248), Character'Val (249),
        Character'Val (250), Character'Val (251), Character'Val (252),
        Character'Val (253), Character'Val (254), Character'Val (255));

    To_Lower : constant Convert_T :=
       (Ascii.Nul, Ascii.Soh, Ascii.Stx, Ascii.Etx, Ascii.Eot, Ascii.Enq,
        Ascii.Ack, Ascii.Bel, Ascii.Bs, Ascii.Ht, Ascii.Lf, Ascii.Vt, Ascii.Ff,
        Ascii.Cr, Ascii.So, Ascii.Si, Ascii.Dle, Ascii.Dc1, Ascii.Dc2,
        Ascii.Dc3, Ascii.Dc4, Ascii.Nak, Ascii.Syn, Ascii.Etb, Ascii.Can,
        Ascii.Em, Ascii.Sub, Ascii.Esc, Ascii.Fs, Ascii.Gs, Ascii.Rs, Ascii.Us,
        ' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-',
        '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';',
        '<', '=', '>', '?', '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
        'v', 'w', 'x', 'y', 'z', '[', '\', ']', '^', '_', '`', 'a', 'b',
        'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
        'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|',
        '}', '~', Ascii.Del, Character'Val (128), Character'Val (129),
        Character'Val (130), Character'Val (131), Character'Val (132),
        Character'Val (133), Character'Val (134), Character'Val (135),
        Character'Val (136), Character'Val (137), Character'Val (138),
        Character'Val (139), Character'Val (140), Character'Val (141),
        Character'Val (142), Character'Val (143), Character'Val (144),
        Character'Val (145), Character'Val (146), Character'Val (147),
        Character'Val (148), Character'Val (149), Character'Val (150),
        Character'Val (151), Character'Val (152), Character'Val (153),
        Character'Val (154), Character'Val (155), Character'Val (156),
        Character'Val (157), Character'Val (158), Character'Val (159),
        Character'Val (160), Character'Val (161), Character'Val (162),
        Character'Val (163), Character'Val (164), Character'Val (165),
        Character'Val (166), Character'Val (167), Character'Val (168),
        Character'Val (169), Character'Val (170), Character'Val (171),
        Character'Val (172), Character'Val (173), Character'Val (174),
        Character'Val (175), Character'Val (176), Character'Val (177),
        Character'Val (178), Character'Val (179), Character'Val (180),
        Character'Val (181), Character'Val (182), Character'Val (183),
        Character'Val (184), Character'Val (185), Character'Val (186),
        Character'Val (187), Character'Val (188), Character'Val (189),
        Character'Val (190), Character'Val (191), Character'Val (192),
        Character'Val (193), Character'Val (194), Character'Val (195),
        Character'Val (196), Character'Val (197), Character'Val (198),
        Character'Val (199), Character'Val (200), Character'Val (201),
        Character'Val (202), Character'Val (203), Character'Val (204),
        Character'Val (205), Character'Val (206), Character'Val (207),
        Character'Val (208), Character'Val (209), Character'Val (210),
        Character'Val (211), Character'Val (212), Character'Val (213),
        Character'Val (214), Character'Val (215), Character'Val (216),
        Character'Val (217), Character'Val (218), Character'Val (219),
        Character'Val (220), Character'Val (221), Character'Val (222),
        Character'Val (223), Character'Val (224), Character'Val (225),
        Character'Val (226), Character'Val (227), Character'Val (228),
        Character'Val (229), Character'Val (230), Character'Val (231),
        Character'Val (232), Character'Val (233), Character'Val (234),
        Character'Val (235), Character'Val (236), Character'Val (237),
        Character'Val (238), Character'Val (239), Character'Val (240),
        Character'Val (241), Character'Val (242), Character'Val (243),
        Character'Val (244), Character'Val (245), Character'Val (246),
        Character'Val (247), Character'Val (248), Character'Val (249),
        Character'Val (250), Character'Val (251), Character'Val (252),
        Character'Val (253), Character'Val (254), Character'Val (255));

    function To_C (S : A_String) return System.Address;
    function To_A (S : String) return A_String;
    function To_A (C : Character) return A_String;

    function "&" (S : A_String; T : A_String) return A_String;
    function "&" (S : String; T : A_String) return A_String;
    function "&" (S : A_String; T : String) return A_String;
    function "&" (S : Character; T : A_String) return A_String;
    function "&" (S : A_String; T : Character) return A_String;

    function Insert (S : A_String; Into : A_String; At_Char : Natural)
                    return A_String;
    function Insert (S : String; Into : A_String; At_Char : Natural)
                    return A_String;
    function Insert (S : Character; Into : A_String; At_Char : Natural)
                    return A_String;
    function Change (S : A_String; At_Char, To_Char : Natural; Into : A_String)
                    return A_String;
    function Change (S : A_String; At_Char, To_Char : Natural; Into : String)
                    return A_String;

    -- the following routines return 0 if the pattern does not occur in S;
    -- otherwise they return the index of the start of the pattern in S.
    function Has (Pattern, S : A_String; Start : Natural := 1) return Integer;
    function Has (Pattern : String; S : A_String; Start : Natural := 1)
                 return Integer;
    function Has (Pattern : Character; S : A_String; Start : Natural := 1)
                 return Integer;

    Not_Found : exception;

    function Next (Pattern, S : A_String; Start : Natural := 1) return Natural;
    function Next (Pattern : String; S : A_String; Start : Natural := 1)
                  return Natural;
    function Next (Pattern : Character; S : A_String; Start : Natural := 1)
                  return Natural;
    function Last (Pattern, S : A_String; Start : Natural := 1) return Natural;
    function Last (Pattern : String; S : A_String; Start : Natural := 1)
                  return Natural;
    function Last (Pattern : Character; S : A_String; Start : Natural := 1)
                  return Natural;

    function Substitute (For_Pattern, To_Pattern : String; S : A_String)
                        return A_String;

    function Reverse_Order (S : A_String) return A_String;
    function Truncate (S : A_String; At_Char : Natural) return A_String;
    function Trim (S : A_String) return A_String;

    function Pad_Left
                (S : A_String; To_Length : Natural; Pad_Char : Character := ' ')
                return A_String;
    function Pad_Right
                (S : A_String; To_Length : Natural; Pad_Char : Character := ' ')
                return A_String;

    function Copy (S : A_String) return A_String;
    function Lower_To_Upper (S : A_String) return A_String;
    function Upper_To_Lower (S : A_String) return A_String;
    function Translate
                (From_Old, To_New : String; S : A_String) return A_String;

    function Is_Null (S : A_String) return Boolean;
    function Is_Empty (S : A_String) return Boolean;

    function Allocate (Size : Integer) return A_String;
    procedure Free (S : A_String);

end A_Strings;

E3 Meta Data

    nblk1=d
    nid=0
    hdr6=1a
        [0x00] rec0=1f rec1=00 rec2=01 rec3=00a
        [0x01] rec0=0d rec1=00 rec2=02 rec3=04a
        [0x02] rec0=0e rec1=00 rec2=03 rec3=040
        [0x03] rec0=0e rec1=00 rec2=04 rec3=036
        [0x04] rec0=0f rec1=00 rec2=05 rec3=050
        [0x05] rec0=0d rec1=00 rec2=06 rec3=08c
        [0x06] rec0=0e rec1=00 rec2=07 rec3=088
        [0x07] rec0=0e rec1=00 rec2=08 rec3=07e
        [0x08] rec0=11 rec1=00 rec2=09 rec3=048
        [0x09] rec0=12 rec1=00 rec2=0a rec3=090
        [0x0a] rec0=14 rec1=00 rec2=0b rec3=07e
        [0x0b] rec0=18 rec1=00 rec2=0c rec3=03a
        [0x0c] rec0=03 rec1=00 rec2=0d rec3=000
    tail 0x217541e0a874f7b810183 0x42a00088462060003