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

⟦68b4329fa⟧ TextFile

    Length: 10560 (0x2940)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

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

TextFile

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

-- SFZ	1/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