rem Use this fieldseparate character for all functions...
rem All the examples use a pipe character ( | )
%%fieldsep = |

rem Sometimes, a script will only replace or delete a parameter once.
rem If you want to delete al, use something like this:
rem   %%string = Hello, this is a string... Isn't it?
rem   %%delete = is
rem   repeat
rem     %%string = %%delete|%%string
rem     gosub Deletestring
rem   until @equal(@pos(%%delete,%%string),0)

%%string = %%parameter1|%%parameter2|%%parameter3|%%string
gosub What-do-you-wanna-do?

:Invertcase
rem This will invert the characters from upper- to lowercase and viseversa
rem Usage:
rem   %%string = Hello how are you?
rem   gosub Invertcase
rem The new string will be in %%string

%%var1 = 1
%%var2 =
repeat
if @both(@greater(@asc(@substr(%%string,%%var1,%%var1)),64),@greater(91,@asc(@substr(%%string,%%var1,%%var1))))
  %%var2 = %%var2@lower(@substr(%%string,%%var1,%%var1))
  else
  %%var2 = %%var2@upper(@substr(%%string,%%var1,%%var1))
  end
  %%var1 = @succ(%%var1)
until @equal(@pred(%%var1),@len(%%string))
%%string = %%var1
exit


:Sentencecasestring
rem This will make the first character in a sentence a capital one.
rem It makes no difference if you use a @cr(), a dot, ?, : or !
rem Usage:
rem   %%string = hello how are you?@cr() i am fine. thank you! i want to say something: hi!
rem   gosub Sentencecasestring

%%var1 = 
%%string = @upper(@substr(%%string,1,1))@substr(%%string,2,@len(%%string))
repeat
if @equal(@substr(%%string,%%var1,%%var1),@chr(46))@equal(@substr(%%string,%%var1,%%var1),@chr(58))@equal(@substr(%%string,%%var1,%%var1),@chr(63))@equal(@substr(%%string,%%var1,%%var1),@chr(33))
%%var2 = @substr(%%string,@fadd(%%var1,2),@fadd(%%var1,2))
%%string = @strdel(%%string,@fadd(%%var1,2),@fadd(%%var1,2))
%%string = @strins(%%string,@fadd(%%var1,2),@upper(%%var2))
end
if @equal(@substr(%%string,%%var1,%%var1),@cr())
%%var2 = @substr(%%string,@fadd(%%var1,2),@fadd(%%var1,2))
%%string = @strdel(%%string,@fadd(%%var1,2),@fadd(%%var1,2))
%%string = @strins(%%string,@fadd(%%var1,2),@upper(%%var2))
end
%%var1 = @succ(%%var1)
until @equal(@len(%%string),%%var1)
exit


:Titlecasestring
rem This will make the first character of a word capital.
rem Usage:
rem   %%string = This is a string
rem   gosub Titlecasestring
rem %%string now contains This Is A String

if @not(@equal(@pos(@chr(32),%%string),0))
%%var1 = 
repeat
%%var1 = %%var1@upper(@substr(@substr(%%string,1,1)))@substr(%%string,2,@pos(@chr(32),%%string))
%%string = @trim(@strdel(%%string,1,@pos(@chr(32),%%string)))
until @equal(@pos(@chr(32),%%string),0)
end
%%string = %%var1@upper(@substr(%%string,1,1))@substr(%%string,2,@len(%%string))
exit 


:Countwordsinstring 
rem This counts the words in a string.
rem Only a words between a space are counted.
rem Usage:
rem   %%string = This is a string
rem   gosub Countwordsinstring
rem It will return the number of words in %%string

%%var1 = 0
repeat
if @not(@equal(@pos(@chr(32),%%string),0))
%%var1 = @succ(%%var1)
end
%%string = @trim(@strdel(%%string,1,@pos(@chr(32),%%string)))
until @equal(%%string,)
if @not(@equal(%%var1,0))
%%string = @succ(%%var1)
end
exit 


:Wordericstring
rem This will make a string 'Worderic', just like @numeric()
rem Usage:
rem   %%string = Hello. My phonenumber is 0123456789
rem   gosub Wordericstring
rem It will return 'Hello My phonenumber is' into %%string

%%var1 = 0
repeat
if @both(@greater(@asc(@substr(%%string,%%var1,%%var1)),64),@greater(91,@asc(@substr(%%string,%%var1,%%var1))))@both(@greater(@asc(@substr(%%string,%%var1,%%var1)),96),@greater(123,@asc(@substr(%%string,%%var1,%%var1))))@equal(@asc(@substr(%%string,%%var1,%%var1)),32)
%%var1 = @succ(%%var1)
else
%%string = @strdel(%%string,%%var1,%%var1)
end
until @equal(%%var1,@succ(@len(%%string)))
exit


:Valueinstring
rem This checks if a string is in a list.
rem Usage:
rem   %%string = Hello|Hi|How are you|Hello|Morning|Hello
rem   gosub Valueinstring
rem The first parameter is the word to search for.
rem If you search for 'Hel', you'll find nothing, cause it is case extensive.
rem Returns null if no matches are found.

option fieldsep,%%fieldsep
parse "%%var1",%%string
%%string = @strdel(%%string,1,@succ(@len(%%var1)))
%%var3 = 0
%%var4 = 
repeat
parse "%%var2",%%string
%%string = @strdel(%%string,1,@succ(@len(%%var2)))
%%var3 = @succ(%%var3)
if @both(@equal(%%var2,%%var1),@equal(@len(%%var2),@len(%%var1)))
if @not(@equal(%%var4,))
%%var4 = %%var4|%%var3
else
%%var4 = %%var3
end
end
until @equal(%%string,)
if @equal(%%var4,)
%%var4 = 0
else
%%string = %%var4
end
exit


:Overlaystring
rem This will overlay one string over an other.
rem Usage:
rem   %%string = Hello World!!!|All|7|5
rem   gosub Overlaystring
rem 'Hello World!!!' is the first string.
rem 'All' is the string which must be over the first.
rem The '7' is the place from where the second string must overlay the first
rem The '5' is the length that must be overlayed...
rem   You can use @len(secondstring) OR put a number in it by yourself...

option fieldsep,%%fieldsep
parse "%%var1;%%var2;%%var3;%%var4",%%string
if @not(@equal(@len(%%var2),%%var4))
repeat
%%var2 = %%var2" "
until @equal(@len(%%var2),%%var4)
end
%%string = @strins(@strdel(%%var1,%%var3,@pred(@fadd(%%var3,%%var4))),%%var3,%%var2)
exit

:Lowestvalue
rem This will give you the lowest number in a row
rem Usage:
rem   %%string = 1|6|3|5
rem   gosub Lowestvalue
rem This will return '1' in %%string

option fieldsep,%%fieldsep
parse "%%var2",%%string
repeat
parse "%%var1",%%string
%%string = @strdel(%%string,1,@fadd(@len(%%var1),1))
if @greater(%%var2,%%var1)
%%var2 = %%var1
end
until @equal(%%string,)
%%string = %%var2
exit


:Highestvalue
rem This will give you the highest number in a row
rem Usage:
rem   %%string = 1|6|3|5
rem   gosub Highestvalue
rem This will return '6' in %%string

option fieldsep,%%fieldsep
repeat
parse "%%var1",%%string
%%string = @strdel(%%string,1,@fadd(@len(%%var1),1))
if @greater(%%var1,%%var2)
%%var2 = %%var1
end
until @equal(%%string,)
%%string = %%var2
exit


:Padstring
rem With this you can Pad a string to the left or the right.
rem Usage:
rem   %%string = Right|7|x|Hello
rem   gosub Padstring
rem You can use 'Right' or "Left'
rem The '7' is the length that the string must be
rem The 'x' is the character that fills up the empty spaces.
rem The output will be in %%string

option fieldsep,%%fieldsep
parse "%%var1;%%var2;%%var3",%%string
%%string = @strdel(%%string,1,@fadd(@fadd(@fadd(@len(%%var1),@len(%%var2)),@len(%%var3)),3))
if @not(@greater(@len(%%string),%%var2))
repeat
if @equal(%%var1,Left)
%%string = %%var3%%string
else
%%string = %%string%%var3
end
until @equal(@len(%%string),%%var2)
end
exit


:Spacestring
rem This will place s p a c e s in your string
rem Usage:
rem   %%string = Hello world
rem   gosub Spacestring
rem %%string will contain the 'spaced' word... :-)

%%var1 = 0 
repeat 
%%string = @strins(%%string,%%var1,@chr(32)) 
%%var1 = @fadd(%%var1,2) 
until @greater(%%var1,@len(%%string)) 
exit 


:Strangestring
rem This will make your string like StRiNg...
rem Usage:
rem   %%string = Hello world
rem   gosub Strangestring
rem %%string will be the new string

%%string = @lower(%%string) 
%%var1 = 1 
repeat 
%%string = @strins(@strdel(%%string,%%var1,%%var1),%%var1,@upper(@substr(%%string,%%var1,%%var1))) 
%%var1 = @fadd(%%var1,2) 
until @greater(%%var1,@len(%%string)) 
exit 


:Replacestring 
rem This will replace the first parameter by the second
rem Usage:
rem   %%string = Hello|Hi|Hello World
rem   gosub Replacestring
rem %%string wil contain the new string
rem Note that only the first time the parameter will be found, the string will be replaced.

option fieldsep,%%fieldsep
parse "%%var1;%%var2",%%string
%%string = @strdel(%%string,1,@fadd(@fadd(@len(%%var1),@len(%%var2)),2))
%%string = @strins(@strdel(%%string,@pos(%%var1,%%string),@pred(@fadd(@pos(%%var1,%%string),@len(%%var1)))),@pos(%%var1,%%string),%%var2)
exit 


:Deletestring 
rem This will delete the first parameter out of the second
rem Usage:
rem   %%string = Hello|Hello World
rem   gosub Deletestring
rem %%string wil contain the new string
rem Note that only the first time the parameter will be found, the string will be deleted.

option fieldsep,%%fieldsep
parse "%%var1",%%string
%%string = @strdel(%%string,1,@succ(@len(%%var1)))
%%string = @strdel(%%string,@pos(%%var1,%%string),@fadd(@pos(%%var1,%%string),@len(%%var1)))
exit


:Rightsearchstring
rem This is the same as @pos(), except this is from the right...
rem Usage:
rem   %%string = Hello|Hello world
rem   gosub Rightsearchstring
rem Hello is the string to search for, Hello world is the string to search in...
rem The output will be in %%string

option fieldsep,%%fieldsep
parse "%%var1",%%string
%%var2 = @strdel(%%string,1,@succ(@len(%%var1)))
%%var3 =
repeat
%%var3 = %%var3@substr(%%var1,@len(%%var1),@len(%%var1))
%%var1 = @strdel(%%var1,@len(%%var1),@len(%%var1))
until @equal(%%var1,)
%%var4 =
repeat
%%var4 = %%var4@substr(%%var2,@len(%%var2),@len(%%var2))
%%var2 = @strdel(%%var2,@len(%%var2),@len(%%var2))
until @equal(%%var2,)
%%string = @fadd(@pos(%%var3,%%var4),@len(%%var3))
exit 


:Reversestring
rem This will reverse %%string
rem Usage:
rem   %%string = Hello world
rem   gosub Reversestring

%%var1 = %%string
%%string =
repeat
%%string = %%string@substr(%%var1,@len(%%var1),@len(%%var1))
%%var1 = @strdel(%%var1,@len(%%var1),@len(%%var1))
until @equal(%%var1,)
exit


:Copystring
rem This will return the string X times after eighother, 12345123451234512345
rem Usage:
rem   %%string = 4|12345
rem   gosub Copystring
rem The 4 stands for the times that it should be repeated.
rem The output will be in %%string

option fieldsep,%%fieldsep
parse "%%var1",%%string
%%var2 = @strdel(%%string,1,@succ(@len(%%var1)))
%%string = 
repeat
%%string = %%string%%var2
%%var1 = @pred(%%var1)
until @equal(%%var1,0)
exit