! Casey Miller

! Antietam  Intermediate Div

! ACSL #3 Strings

 

FOR x = 1 to 5

    INPUT Prompt "Please enter the string: ": String$

    LET String$ = UCASE$(String$)

    LET length = LEN(String$)

    LET startword = (POSR(String$,"/",length)) + 1

    LET word$ = String$[startword:length]

    LET wordlength = LEN(word$)

    LET firsttime = 1

    LET printoption = 1

 

    DO while POS(String$,"/") <> 0 or firsttime = 1

       LET length = LEN(String$)

       IF String$[1:2] = "LS" or String$[1:2] = "RS" or String$[1:2] = "LC"  or String$[1:2] = "RC" then

          LET findcontrol = (POS(String$,"/")) - 1

          LET control = VAL(String$[findcontrol:findcontrol])

          LET start = (wordlength - control) + 1

 

          IF String$[1:2] = "LS" then

             LET word$[1:control] = ""

             FOR i = start to wordlength

                 LET word$[i:i] = "#"

             NEXT i

 

          ELSE IF String$[1:2] = "RS" then

             LET word$[start:wordlength] = ""

             FOR i = 1 to control

                 LET word$ = "#" & word$

             NEXT i

 

          ELSE IF String$[1:2] = "LC" then

             LET temp$ = word$[1:control]

             LET word$[1:control] = ""

             LET word$ = word$ & temp$

 

          ELSE IF String$[1:2] = "RC" then

             LET temp$ = word$[start:wordlength]

             LET word$[start:wordlength] = ""

             LET word$ = temp$ & word$

          END IF

          LET String$[1:5] = ""

 

       ELSE

          IF String$[1:2] = "MC" then

             LET findstart = (POS(String$,"/")) - 4

             LET substart = VAL(String$[findstart:findstart])

             LET findlength = (POS(String$,"/")) - 3

             LET sublength = VAL(String$[findlength:findlength])

             LET subend = (substart + sublength) - 1

             LET findshift = (POS(String$,"/")) - 2

             LET shift = VAL(String$[findshift:findshift])

             LET finddirection = (POS(String$,"/")) - 1

             LET direction$ = String$[finddirection:finddirection]

             LET before$ = word$[1:substart - 1]

             LET sub$ = word$[substart:subend]

             LET after$ = word$[subend + 1:wordlength]

             IF direction$ = "R" then

                LET temp$ = sub$[(sublength - shift) + 1:sublength]

                LET sub$[(sublength - shift) + 1:sublength] = ""

                LET sub$ = temp$ & sub$

             ELSE IF direction$ = "L" then

                LET temp$ = sub$[1:shift]

                LET sub$[1:shift] = ""

                LET sub$ = sub$ & temp$

             END IF

             LET word$ = before$ & sub$ & after$

             LET String$[1:8] = ""

 

          ELSE IF String$[1:3] = "REV" then

             LET findstart = (POS(String$,"/")) - 2

             LET substart = VAL(String$[findstart:findstart])

             LET findlength = (POS(String$,"/")) - 1

             LET sublength = VAL(String$[findlength:findlength])

             LET subend = (substart + sublength) - 1

             LET before$ = word$[1:substart - 1]

             LET sub$ = word$[substart:subend]

             LET after$ = word$[subend + 1:wordlength]

             FOR i = 0 to sublength

                 LET temp$ = sub$[i + 1:i + 1]

                 LET sub$[i + 1:i + 1] = ""

                 LET sub$ = temp$ & sub$

             NEXT i

             LET word$ = before$ & sub$ & after$

             LET String$[1:7] = ""

          ELSE

             PRINT "That is an invalid function"

             LET printoption = 0

             LET String$ = ""

          END IF

       END IF

       LET firsttime = 0

    LOOP

    IF printoption <> 0 then

       PRINT word$

    END IF

NEXT x

END