    MODULE StringLib;

    IMPORT
        RTS;

    PROCEDURE CanDeleteAll*(p0 : INTEGER;
                            p1 : INTEGER;
                            p2 : INTEGER) : BOOLEAN;

    PROCEDURE CanAppendAll*(    p0 : INTEGER;
                            VAR p1 : ARRAY OF CHAR) : BOOLEAN;

    PROCEDURE CanAssignAll*(    p0 : INTEGER;
                            IN  p1 : ARRAY OF CHAR) : BOOLEAN;

    PROCEDURE CanInsertAll*(    p0 : INTEGER;
                                p1 : INTEGER;
                            VAR p2 : ARRAY OF CHAR) : BOOLEAN;

    PROCEDURE Extract*(IN  p0 : ARRAY OF CHAR;
                           p1 : INTEGER;
                           p2 : INTEGER;
                       OUT p3 : ARRAY OF CHAR);

    PROCEDURE Replace*(IN  p0 : ARRAY OF CHAR;
                           p1 : INTEGER;
                       VAR p2 : ARRAY OF CHAR);

    PROCEDURE Capitalize*(VAR p0 : ARRAY OF CHAR);

    PROCEDURE Assign*(IN  p0 : ARRAY OF CHAR;
                      OUT p1 : ARRAY OF CHAR);

    PROCEDURE Delete*(VAR p0 : ARRAY OF CHAR;
                          p1 : INTEGER;
                          p2 : INTEGER);

    PROCEDURE Append*(    p0 : ARRAY OF CHAR;
                      VAR p1 : ARRAY OF CHAR);

    PROCEDURE FindDiff*(IN  p0 : ARRAY OF CHAR;
                        IN  p1 : ARRAY OF CHAR;
                        OUT p2 : BOOLEAN;
                        OUT p3 : INTEGER);

    PROCEDURE Insert*(IN  p0 : ARRAY OF CHAR;
                          p1 : INTEGER;
                      VAR p2 : ARRAY OF CHAR);

    PROCEDURE FindNext*(IN  p0 : ARRAY OF CHAR;
                        IN  p1 : ARRAY OF CHAR;
                            p2 : INTEGER;
                        OUT p3 : BOOLEAN;
                        OUT p4 : INTEGER);

    PROCEDURE FindPrev*(IN  p0 : ARRAY OF CHAR;
                        IN  p1 : ARRAY OF CHAR;
                            p2 : INTEGER;
                        OUT p3 : BOOLEAN;
                        OUT p4 : INTEGER);

    PROCEDURE CanExtractAll*(    p0 : INTEGER;
                                 p1 : INTEGER;
                                 p2 : INTEGER;
                             OUT p3 : ARRAY OF CHAR) : BOOLEAN;

    PROCEDURE CanReplaceAll*(    p0 : INTEGER;
                                 p1 : INTEGER;
                             VAR p2 : ARRAY OF CHAR) : BOOLEAN;

    END StringLib.