MODULE StringsSliceProg; (* Strings.Slice (Python-style) + Insert/Replace/Capitalize. Exit 255. *) IMPORT Strings; VAR ExitCode : INTEGER; VAR s, d : ARRAY [0 .. 31] OF CHAR; BEGIN ExitCode := 0; Strings.Assign("Hello, World", s); Strings.Slice(s, 0, 5, d); (* "Hello" *) IF Strings.Equal(d, "Hello") THEN ExitCode := ExitCode + 1 END; Strings.Slice(s, 7, 12, d); (* "World" *) IF Strings.Equal(d, "World") THEN ExitCode := ExitCode + 2 END; Strings.Slice(s, -5, 12, d); (* "World" (negative start) *) IF Strings.Equal(d, "World") THEN ExitCode := ExitCode + 4 END; Strings.Slice(s, 0, -8, d); (* "Hell" (negative stop: 12-8=4) *) IF Strings.Equal(d, "Hell") THEN ExitCode := ExitCode + 8 END; Strings.Slice(s, 3, 3, d); (* "" *) IF Strings.Equal(d, "") THEN ExitCode := ExitCode + 16 END; Strings.Assign("abc", d); Strings.Insert("XY", d, 1); (* "aXYbc" *) IF Strings.Equal(d, "aXYbc") THEN ExitCode := ExitCode + 32 END; Strings.Assign("hello", d); Strings.Replace("XYZ", d, 2); (* "heXYZ" *) IF Strings.Equal(d, "heXYZ") THEN ExitCode := ExitCode + 64 END; Strings.Assign("hELLO wORLD", d); Strings.Capitalize(d); (* "Hello world" *) IF Strings.Equal(d, "Hello world") THEN ExitCode := ExitCode + 128 END END StringsSliceProg.