Lotus Notes and Domino 8: What’s New in LotusScript and Formula Language

Rocky posted his slides from his “Lotus Notes and Domino 8:
What’s New in LotusScript and Formula Language”-session from the Advisor summit. Besides being an interesting read it had two slides that really caught my attention (slide 11 and slide 25).

When describing what’s new in the upcoming Notes 8.0.1 (1Q2008) he mentioned a welcome change to a dear old friend: @Now (see slide 11):

  • @Now([NoCache]) – when checking the time
    on a server forces a server transaction to fetch
    the time.
  • Without this keyword, @Now would cache the
    server time on the first call, and compute the
    current time by adding the cached time and
    elapsed time.
  • This causes problems if the system time on the
    client or server machine changes once the server
    time is cached.
  • Note that using [NoCache] adds the significant
    overhead of doing a server transaction on each
    call.

On slide 25 Rocky mentions two additional commands to the ReadViewEntries beside getting the output in JSON instead of DXL. The two new nice parameters are &EndView and &KeyType=<text/time/number>. &EndView returns entries from the end of the view and &KeyType allows you to specify the datatype of the key which allows you to use other key types than text.

RFC821 address functions in Notes – are they working properly?

I have been trying to use the built-in RFC821 address functions in Notes recently but has given up since they do not work correctly in my mind. A RFC821 – or an internet address – is in my mind composed of a local part (the part before the @-sign) and a period separated domain component (the part after the @-sign). A valid RFC821 address must contain both parts. Valid examples could be:

  • jdoe@example.com
  • john.doe@example.com
  • jdoe@sales.example.com

Notes/Domino has functions in @Formula, LotusScript and Java for working with and validating RFC821 addresses and none work as expected (probably because they all use the same C code). For example all functions will accept “jdoe@example” as a valid RFC821 address – an address which is my mind isn’t valid at all. This fact is further aggravated by the fact that I would expect to use the functions to distinguish between Notes addresses and RFC821 addresses. When the functions “work” as they do I cannot do that since jdoe@example could just as well be a Notes shortname followed by a Domino domain.

Below is a test case for LotusScript (non-blank value should indicate a valid RFC821 address).

Dim nn As New NotesName("jdoe@example.com")
Print nn.Addr821
>> jdoe@example.com
Set nn = New NotesName("jdoe@example")
Print nn.Addr821
>> jdoe@example

The help states:

The RFC 821 address is a name followed by an at sign followed by an organization, for example, jbg@acme.us.com. In an RFC 822 address, it is the part enclosed in pointed brackets.
This property returns an empty string if the name does not contain an RFC 821 Internet address.

In my mind this is just plain wrong.