'*********************'
function Tally (searchstr as string, matchstr as string) as long   
b=1
a=instr(b, searchstr, matchstr)  

while a > 0
	res=res+1 
	b=a +1
	a=instr(b, searchstr, matchstr)
wend
Tally=res  
end function 

'*********************'
function DELETE(Srcstring as string, start as long, length as long) as string
delete$=left$(Srcstring,start-1)+mid$(Srcstring,start+length)
end function 

'*********************'
function INSERT(Srcstring as string, InsertStr as string, index as long) as string
INSERT=left$(Srcstring,index-1)+InsertStr+mid$(Srcstring,index)
end function 

'*********************'
function REPLACE(Srcstring as string, replacestr as string, index as long) as string
	mid$(Srcstring, index ) = replacestr 
	REPLACE$=Srcstring
end function 


'*********************'
function REPLACESubStr$(Srcstring as string, SubString as string, NewSubString as string) 'as string
dim a as long , b as long, tsrc as integer, newlen as integer
lenss=len(Srcstring)
lensn=len(NewSubString)
lenso=len(SubString)

tsrc=tally(Srcstring,SubString)
newlen=lenss+tsrc*len(NewSubString)-tsrc*len(SubString)

SrcstringNew$=string$(newlen,"-")
i=0

b=a+lensn-1
a=instr(1, Srcstring, SubString)  

while a > 0
    if a<=b then azz$="" else azz$=mid$(Srcstring,b, a-b)
	lenazz=len(azz$)
	mid$(SrcstringNew$,b+I*(lensn-lenso), a-b+1)=azz$
	mid$(SrcstringNew$,a+I*(lensn-lenso),lensn )=NewSubString 
	b=a +lenso
	a=instr(b, Srcstring, SubString)
	i=i+1
wend
    azz$=mid$(Srcstring,b)
	mid$(SrcstringNew$,b+I*(lensn-lenso), a-b+1)=azz$
REPLACESubStr$=SrcstringNew$
end function 

'*********************'
function rqFIELD$(Srcstring as string, delimstring as string, fieldNumber as integer)
'FIELD$(Source-string, deliminator-string, field-number)
'A$ = FIELD$("John&&Doe&&555-1234", "&&", 3)   '-- Returns 555-1234 
b=1
a=instr(b, Srcstring, delimstring)  
dlen=len(delimstring)

while a > 0
	res=res+1 
	if res>=fieldNumber  then exit while
	b=a +dlen '1
	a=instr(b, Srcstring, delimstring)
wend
	rqFIELD$=mid$(Srcstring, b, a-b)

end function 
'*********************'
Function REVERSE$(SrcString as string)
lsrc=len(SrcString)
'print "lsrc="; lsrc
RevString$=string$(lsrc,"-")
'print "RevString$="; RevString$

for i=0 to lsrc-1
mid$(RevString$,lsrc-i)=mid$(SrcString$,i+1,1)
next i
REVERSE$=RevString$
end function 
'*********************'
Function  RInstr(start as integer=-1, searchstr as string, findstr as string) as integer
'RINSTR([start,] search-string, find-string)
'-----------> go to start position from left to right 
'   <------- go to left from start position and search first findstr template entry
if start=-1 then start=len(searchstr)
NewStr$=mid$(searchstr, 1,start)
b=1
a=instr(b, NewStr$, findstr)  

while a > 0
	res=res+1 
	b=a +1
	a=instr(b, NewStr$, findstr)
wend
RInstr=b-1

end function 
          