! 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