Word Extract via LotusScript Code

This LotusScript function will extract a word from a text string much the same way the @WORD formula does. The function has these 3 parameters: the text string to be searched, the character to be used as a delimeter, the occurance of that delimeter.
Function Field(InputStr As String, DelimChr As String, PosNo As Integer)
	'The DelimChr must be a single character or else function will return an error
	MaxLen = Len(InputStr)
	ErrMsg = ""
	If PosNo < 1 Then
		ErrMsg = "Starting position < 1"
	Elseif DelimChr = "" Then
		ErrMsg = "Delimeter is null"
	Elseif Len(DelimChr) > 1  Then
		ErrMsg = "Delimeter is > 1 character"
	Elseif MaxLen < 1 Then
		Field = ""
		Exit Function	'No input string passed to function - just return an empty string - not considered an error
	End If
	If ErrMsg <> "" Then
		Msgbox "Error: Invalid parameter!" + Chr(13) + Chr(13) + ErrMsg,16,"Field Function"
		Field = ""
		Exit Function
	End If
	DelimCnt = 0	'Keeps track of how many delimiters were found
	StartSrchPos = 1	'Initialize where to start looking in the string
	StartDelimPos = 0	'Will hold the physical postion where the desired delimiter was found
	EndDelimPos = 0	'Will hold the physical position where the next delimiter was found
	For J = 1 To PosNo
		DelimPos = Instr(StartSrchPos,InputStr,DelimChr)
		If DelimPos > 0 Then			'Delimiter found in the sub-string
			DelimCnt = DelimCnt + 1	'Keep track of what number of delimiter this is
			If DelimCnt = PosNo - 1 Then
				StartDelimPos = DelimPos	'Keep going - not the right delimiter position
			Elseif DelimCnt = PosNo Then
				EndDelimPos = DelimPos
				Exit For              'Exit loop - the right delimiter position has been found
			End If
			StartSrchPos = DelimPos + 1	'The next search will begin just after the last delimiter was found
		Else
			Exit For               'Exit loop - no more delimiters found
		End If
	Next J
	If StartDelimPos > 0 And EndDelimPos > 0 Then
		If StartDelimPos+1 = EndDelimPos Then 
			Field = ""
			Exit Function	'There is no gap between the two delimiter positions - return nothing
		End If
	End If
	If StartDelimPos > 0 Or EndDelimPos > 0 Then
		If EndDelimPos > 0 Then
			Field = Mid$(InputStr,StartDelimPos+1,EndDelimPos-(StartDelimPos+1))	'Return those bytes between the 2 delimiter positions
		Else
			Field = Mid$(InputStr,StartDelimPos+1,MaxLen)		'No subsequent delimiter was found - return the remainder of the string
		End If
	Else
		'If the input string doesn't contain a delimiter and the 1st occurrance was requested, just return the entire string else return nothing
		If PosNo = 1 And DelimCnt = 0 Then Field = InputStr Else Field = ""
	End If
End Function
This was last published in February 2001

Dig Deeper on Domino Resources - Part 7

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchWindowsServer

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchDataCenter

SearchExchange

SearchContentManagement

Close