LotusScript是一种使用于Lotus Notes客户端程序或者是用于Domino服务器程序代理列表中的脚本语言。相当于用于网页中的脚本语言JavaScript。(JavaScript以可以用于Lotus Notes程序。)被描述为“类似BASIC”的 LotusScript在访问后台数据库和驱动客户端用户界面方面也很有用。LotusScript可以使用Lotus Domino Designer开发环境进行代码编程.

注释

注释在程序运行中并不执行,只是让程序员在编写程序的时候添加的一些标记性的文字,但他的作用可不容忽视,在编写一个程序模块时说明这个模块的功能、作用、创建时间、作者等,这对以后的维护大有好处。一般在用户的脚本中插入头信息是一个不错的想法,如下事例:

‘Script name: Connect internet

‘Author: zynet

‘Last Modified: 6/23/08

‘Description: Connect my webserver.

1.单行注释:通过输入一个单引号( ‘ )或REM ( Remark的缩写 )来添加。

2.多行注释:%Rem …%End Rem 所以以上例子也可以写成这样:

%REM

Script name: Connect internet

Author: zynet

Last Modified: 6/23/08

Description: Connect my webserver.

%END REM

变量和数据类型

1.声明变量

Dim Variablename as type

dim是dimension的缩写,为变量的值在内存中创建一个空间。

Variablename 是变量的名称,一个变量的名称一定要以字母开头,其后可以是字母、任何数字以及下划线,变量的名称不区分大小写,最多可容纳40个字符。Lotus中有一些保留字,大部分是指令和语句,它们不能被用做变量名。

type是数据类型,可以是Boolean、Byte、Integer、Long、Single、Double、Currency、String、Variant 当然以后在介绍面象对象的时候还涉及到类和对象的定义,也是这个声明格式,这些在以后再介绍。

类型 值 Size

类型

Size

Boolean

真 (-1) 或 假 (0)

2字节

Byte

从0到255的整数

1字节

Integer

从-32768到32767的整数

2字节

Long

从-2147483648到2147483647的整数

4字节

Single

从-3.402823 E+38到3.402823E+38的任何数字

4字节

Double

从-1.7976931348623158E+308到1.7976931348623158E+308的任何数字

8字节

Currency

从-922337203685411.5807到-922337203685411.5807的任何数字。货币变量可能

多有4个十进制位置

8字节

String

任何无格式文本值

每个字符两

2个字节

Variant

任何值

16字节

Variant类型是这几种数据类型中最特殊的,他是一个变体类型,当定义的一个Variant型的变量时,可以给他赋以上任何一种类型的数据。但是他也是占用内存最多的一个数据类型。

Currency类型则是最不常用到的,我以前都不知道有这样一个类型,如果有高手看到这里有不同的看法,可以发邮件给我,大家交流一下,可能有其他的特殊用途。

2.列表

用户可以通过给Dim语句添加List运算符来声明一个列表。

声明:Dim Variablename List as Type

Dim :定义变量

Variablename 列表的名称

List 定义为列表

Type 列表的类型

例子:

Dim PriceList List as Currency

Dim ItemName as String

PriceList(“apple”)=1.05

ItemName=”Oranges”

PriceList(itemname)=1.85

Messagebox PriceList(itemname)

输出结果为:弹出对话框 1.85

使用列表中不存在的列表标记。
在这个标签的访问列表的元素,使用iselement功能测试元素是否存在于列表中。

用到 If IsElement(PriceList(itemname)) Then

如果不加判断,遇到不在此列表里面的标签会报错: List item does not exist

3.数组

数组是一组顺序下具有一系列的值,有一维数组,二维数组,LotusScript最多可以有8维。

声明一维数组:Dim valArray(5) as Integer 或 Dim ValArray(0 to 5) as integer

这个数组的下标是从0开始到5,也就是数组ValArray有6个元素。

声明二维数组:dim TwoArray(1 to 5, 1 to 4) as Integer

这个数组的第一个元素是TwoArray(1,1) ,是一个二维数组

使用Option Base来改变数组的底数

当使用数组时,如果你的大脑能够很自然地想清楚它是从0开始而不是从1开始的,那么无论何时你要给arrayname(0)赋值都将不是问题。但是如果对这一点存在疑问,你可以通过改变LotusScript的功能来采取一些措施。如果你进入到 Options例程中,便可以添加”Option Base n”的命令行,n是默认的数组底限。添加Option Base 1,将使默认的数组底限设置为1,则arrayname(1)会成为数组的第一个成员。然而,当你使用多维数组的时候,需要小心使用Option Base. Option Base将把一个三维数组的中心从(0,0,0)移动到(1,1,1),这是一个有趣的数学问题。

声明变长数组:Redim valarray(5) as string

变长数组是指原来的数组个数不够用时,需要重新定义数组的长度,有两种情况:

一. 先定义了一个数组,但是没有声明个数(dim valarray() as string),在以后用到的时候才用Redim来重新声明。如下例所示,输出zys字符串:

Dim valarray() as string

Redim valarray(4) as string

valarray(0)=”zys”

messagebox valarray(0)

二.先声明了一个数组,并且给这个数组中的元素赋了值,然后想要重新定义数组的个数,可用Redim来重新声明,如果用户已经给数组赋了值,并且想保留它们,可以用PRESERVE关键字来进行保存,以防重新改变它们大小时,值被擦除掉。如下例所示:

例1:

Redim valarray(1) as integer

Valarray(0)=1

Redim valarray(2) as integer

Messagebox valarray(0)

输出结果为:0

例2:

dim valarray() as integer

Redim valarray(2) as integer

Valarray(0)=1

Messagebox valarray(0)

输出结果为:0

例3:

以下是重新定义了数组后保留了原值的例子:

Redim valarray(1) as integer

Valarray(0)=1

Redim preserve valarray(2) as integer

Messagebox valarray(0)

输出结果为:1

例1和例2的区别就在于第一次定义后能不能附值,在例1中第一次定义用的是redim, redim定义数组时必须定义该数组的上界,且定义以后可以直接赋值使用; 而例2中第一次定义用的是dim, dim定义数组时如果定义了上界,则可以直接赋值使用,并且不能再用redim重新定义,如果没有定义上界,则不能直接使用,并且必须用redim重新定义后才能赋值使用。

两关于数组的特殊的函数

Lbound(valarray) 输出数组的下界

Ubound(valarray) 输出数组的上界

选择和循环语句

1.if语句

If condition then

statements

Elseif condition then

statements

……

Else

statements

End if

2.Select语句

Select Case selectexpr

Case conditionList

Statements

Case conditionList

Statements

Case Else

Statements

End Select

3.语句

for conntvar=first to Last [Step increment]

statements

next [countvar]

4.while语句

While condition

Statements

Wend

5.Do While/until Loop语句

永远循环

Do

Statements

Loop

先检查条件,再循环

Do while condition

Statements

Loop

Do until condition

Statements

Loop

先循环,后检查条件

Do

Statements

Loop while condition

Do

Statements

Loop until condition

6. Forall

ForAll refVar in container

statements

End ForAll

例子:

Sub Click(Source As Button)

Dim short(5) As Integer

Forall x In short

x=1

End Forall

End Sub

结果:给short数组的每个元素赋值

中途退出循环

Exit LoopType

说明:looptype: for, while, do

子事例、函数、声明、作用域

1. 子事例

子事例也就是子过程,在编程窗格中单击一个按钮的click子事例就会打开如下click子事例:

Sub Click(Source As Button)

messagebox “hello word!”

End Sub

你可以在这个子事例中写出代码,如messagebox “hello word!” ,这是系统默认建立的一个单击子事例,同样的你可以建立自己的子事例如下:

Sub Click(Source As Button)

messagebox “hello word!”

dim name=”lotus script”

OutputName(name)     ‘调用子事例OutputName

End Sub

Sub OutputName(name as string)   ‘建立的新子事例,功能是输出参数name的值

Messagebox name

Sub

输出结果为:弹出窗口lotus script

子事例是没有返回值的,函数的使用和子事例差不多,但是函数有返回值。如果想在子事例中返回一个值的话可以定义一个全局变量,然后给这个变量赋值就能达返回值的功能,如何定义一个全局变量将在作用域中讲到。

2. 函数

程序员都知道函数的作用,我就不多说了,这里只说明一下定义和使用的格式

Sub Click(Source As Button)

Dim a As Integer

Dim b As Integer

Dim c As Integer

a=3

b=4

c=Sun(a,b)     '使用求和函数得到a和b 的和

Messagebox Cstr(a)+"+"+Cstr(b)+"="+Cstr(c)

End Sub

Function Sun(a As Integer ,b As Integer ) As Integer '定义函数Sun, 功能是返回两个参数的和

c=a+b

sun=c                                  '给函数名赋值就是这个函数的返回值。

End Function

输出结果:弹出对话框a+b

3. 控制变量是否在需要声明才有效

如果用户在脚本的options部分中设置了option declare, 那么就一定要声明所有的变量,不管它们是什么类型。默认是可以不声明的,如下例:

例1 (没有设置 option declare)

Sub Click(Source As Button)

TestVar=”hello word !”

Messagebox TestVar

End Sub

输出结果为:(弹出对话框)hello word!

例2 (设置了 option declare)

Option Declare

Sub Click(Source As Button)

TestVar=”hello word !”

Messagebox TestVar

End Sub

在保存的时候就会出现错误:Variable not declared:TestVar

4. 作用域

LotusScript的作用域分为三个,从小到大分别为:子事例或函数、对象(如按钮、域等)、窗体(如表单、视图等)

(1)子事例或函数

如果在子事例或函数中定义的变量只能在此子事例或函数中使用,在另外一个是不能用的,如下:

Sub Click(Source As Button)

Dim TestVar As String

Testvar="hello word!"

End Sub

Sub outputStr

Messagebox testvar

End Sub

输出结果:弹出对话框为无值

因为TestVar是在Click子事例中定义的,所以只能在Click子事例中使用,在OutputStr子事例中是不起作用的。

(2) 对象(如按钮、域等)

在对象中定义的变量中能在此对象中使用,包括这个对象的所有子事例,在另外一个对象中是不能用的,如下:

Dim TestVar as String         ‘在(Declarations)中定义

Sub Click(Source As Button)

Testvar="hello word!"

End Sub

Sub outputStr

Messagebox testvar

End Sub

输出结果:弹出对话框hello word!

因为TestVar是在对象中定义的,所以在这个对象中的所有子事例或函数都起作用。

(3) 窗体(如表单、视图等)

在窗体中定义的变量可以在这个窗体中的任何对象中使用,如下:

‘(Globals)test 窗体

Dim TestVar as String

Button1(按钮)

Sub Click(Source As Button)

Testvar="hello word!"

End Sub

‘Button2(按钮)

Sub Click(Source As Button)

Messagebox Testvar

End Sub

执行操作,先按Button1,再按Button2

输出结果为:弹出窗口hello word!

因为TestVar是在test窗体中定义的,所以对这个窗体中的所有对象都是起作用的,Button1和Button2都是这个窗体的两个对象,先按Button1是给TestVar赋值,再按Button2是输出TestVar的值。

lotusscript基本语法的更多相关文章

  1. Lotus Notes 学习笔记

    这是一个学习关于如何使用Lotus Notes的Agent功能来实现自动化办公的学习笔记. 一. 介绍 Lotus Notes/Domino 是一个世界领先的企业级通讯.协同工作及Internet/I ...

  2. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  3. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  4. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  5. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  6. Velocity初探小结--velocity使用语法详解

    做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...

  7. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  8. C#语法糖大汇总

    首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...

  9. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

随机推荐

  1. 160901、在大型项目中组织CSS

    编写CSS容易. 编写可维护的CSS难. 这句话你之前可能听过100次了. 原因是CSS中的一切都默认为全局的.如果你是一个C程序员你就知道全局变量不好.如果你是任何一种程序员,你都知道隔离和可组合的 ...

  2. ESP8266例程

    乐鑫的这个开发板, 可以用LUA来编程, 下面的例子是一个简单的web服务器, 当你用浏览器访问wifi的IP时,后面加一个http://ip/abc123, 这样就可以给wifi模组发命令了. sr ...

  3. React笔记_(5)_react语法4

    ajax 数据应用场景 在真实的开发环境中,拿到了产品需求,第一件事不是逼着后台开发人员先完成,然后前端再介入开发,这样太浪费时间. 正确的做法是跟后端人员先商量好接口名称,请求参数,返回的数据格式等 ...

  4. Cacti Install

    一.Cacti简介 Cacti是通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查 ...

  5. 对于改善 MySQL 数据装载操作有效率的方法是怎样

    多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当.相对来说,将数据装入数据库是直截了当的.然而,也存在可用来改善数据装载操作效率的策略,其基本原理如下 ...

  6. POJ 3349:Snowflake Snow Snowflakes(数的Hash)

    http://poj.org/problem?id=3349 Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K T ...

  7. POJ 2192 :Zipper(DP)

    http://poj.org/problem?id=2192 Zipper Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1 ...

  8. 在Java中导出word、excel格式文件时JSP页面头的设置

    我们在JSP中往往会把一些表格里的东西需要导出到本地,一般都是导成word.excel格式的文件.这只需要在JSP页面头设置及在<head></head>标签中添加下面的代码: ...

  9. YTU 3007: 顺序串的基本运算

    3007: 顺序串的基本运算 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 题目描述 编写一个程序,实现顺序串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立 ...

  10. css不同浏览器兼容性调试 --- 转自: [http://wo.115.com/?ct=detail&id=31733&bid=1018841]

    css不同浏览器兼容性调试 IE6.0,IE7.0与Firefox的CSS兼容性问题1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right ...