Using A Timer In Lotusscript

There are a number of things that the code below accomplishes. It runs as a
scheduled agent, reading in a flat file for purposes of creating IDs/PWs for
access to Domino databases. It determines if a person doc already exists in
the NAB for the requested ID, and if not creates a person doc for that ID,
saving multiple items of information contained in the file for the ID to that
doc (including both saving and encrypting the requested password for that ID).
It also inserts the ID into the appropriate group for access (the ACLs use
group names for access, not individual names). But perhaps the highlight of
the code is the timer that I have implemented. The timer checks the time when
the agent started running, and at the point when the agent has been running for
9 minutes and 50 seconds or more, stops execution (by preventing the agent from
reading the next line of the file). Whatever line of the file the agent
stopped at is recorded in a database document, enabling the agent to pick up
where it left off n
ext time it runs. (The reason for implementation of the timer was that the
server doc. settings in our environment limit LotusScript agent execution time
to a maximum of 10 minutes, and the timer stops execution before that limit is
hit to prevent a hard stop caused by the server that would result in one or
more errors in the log.)
Sub Initialize
Dim aSess As New NotesSession
Dim aDB As NotesDatabase
Dim bView As NotesView
Dim cView As NotesView
Dim trackerView As NotesView
Dim allDocs As NotesDocumentCollection
Dim sameDocs As NotesDocumentCollection
Dim aDoc As NotesDocument
Dim bDoc As NotesDocument
Dim cDoc As NotesDocument
Dim nextDoc As NotesDocument
Dim trackerDoc As NotesDocument
Dim newMember As NotesItem
Dim dummyDate As New NotesDateTime("01/01/1990")
Dim encryptPW As Variant
Dim currLine$, userID$, userPW$, userName$, groupName$, fileName$,
Dim fileNum%, procCount%
Dim timeOn!, timeRan!
Dim fileLine&
timeOn = Timer
Set aDB = aSess.CurrentDatabase
Set allDocs = aDB.UnprocessedDocuments
Set nextDoc = allDocs.GetFirstDocument
While Not (nextDoc Is Nothing) 'Mark all documents as processed
Call aSess.UpdateProcessedDoc(nextDoc)
Set nextDoc = allDocs.GetNextDocument(nextDoc)
Set trackerView = aDB.GetView("Counter")
Set trackerDoc = trackerView.GetFirstDocument
procCount = trackerDoc.LineNumber(0)
fileName = "ustrade/passwords/pw.lena"
Set cView = aDB.GetView("Admin \ Country \ US LENA People")
Set bView = aDB.GetView("Groups")
fileNum = Freefile
Open ("/home/www/webpub/" & fileName) For Input Access Read As fileNum
Err = 0
For fileLine = 1 To procCount
Input #fileNum, currLine
If Eof(fileNum) Or Err Then
trackerDoc.LineNumber = 1
Call trackerDoc.Save(False, True)
End If
On Error Resume Next
Do While Not Eof(fileNum) And timeRan < 590
Input #fileNum, currLine
userID = Left(currLine, 14)
If procCount < 10 Then
groupCode = "0" + Cstr(procCount)
groupCode = Left(Right(Cstr(procCount), 4), 2)
End If
groupName = "PSG US Users " & groupCode
Set cDoc = cView.GetDocumentByKey(userID, True)
If cDoc Is Nothing Then
userPW = Mid(currLine, 16, 4)
userName = Mid(currLine, 21, 5)
Set aDoc = aDB.CreateDocument
aDoc.Form = "Person"
aDoc.Type = "Person"
aDoc.LastName = userID
aDoc.FullName = userID
aDoc.ShortName = userID
aDoc.UserPW = userPW
aDoc.HTTPPassword = userPW
encryptPW = Evaluate("@Password(HTTPPassword)", aDoc)
aDoc.HTTPPassword = encryptPW
aDoc.CompanyName = userName
aDoc.GroupName = groupName
aDoc.Comment = "US LENA"
Call aDoc.Save(False, True)
Set bDoc = bView.GetDocumentByKey(groupName, True)
Set newMember = bDoc.GetFirstItem("Members")
Call newMember.AppendToTextList(userID)
Call bDoc.Save(False, True)
End If
procCount = procCount + 1
timeRan = Timer - timeOn
trackerDoc.LineNumber = procCount
Call trackerDoc.Save(False, True)
Close fileNum
End Sub

Dig Deeper on Domino Resources



  • Favorite iSeries cheat sheets

    Here you'll find a collection of valuable cheat sheets gathered from across the iSeries/ community. These cheat ...

  • HTML cheat sheet

    This is a really cool cheat sheet if you're looking to learn more about HTML. You'll find just about everything you every wanted ...

  • Carol Woodbury: Security

    Carol Woodbury