Lotus DEvCon 2000 - LotusScript Tips and Techniques

50
LotusScript Tips and Techniques LotusScript Tips and Techniques ロータス株式会社、開発本部 ロータス株式会社、開発本部 小峯 小峯 宏秋 宏秋

Transcript of Lotus DEvCon 2000 - LotusScript Tips and Techniques

Page 1: Lotus DEvCon 2000 - LotusScript Tips and Techniques

LotusScript Tips and TechniquesLotusScript Tips and Techniques

ロータス株式会社、開発本部ロータス株式会社、開発本部 小峯小峯 宏秋宏秋

Page 2: Lotus DEvCon 2000 - LotusScript Tips and Techniques

今日のお話今日のお話

LotusScript LotusScript のちょっとしたテクニックのちょっとしたテクニック

文字列の扱い方、日付の扱い方文字列の扱い方、日付の扱い方

プラットフォーム依存の機能を使うプラットフォーム依存の機能を使う

スクリプトライブラリの利用スクリプトライブラリの利用

エージェントエージェント

RunOnserverRunOnserver

デバッグデバッグ

日本語別名日本語別名

LotusScriptLotusScript

@@関数関数

Page 3: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字列の扱い方文字列の扱い方

Page 4: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字定数文字定数

リテラル文字の文字区切りリテラル文字の文字区切り

" " (" " (二重引用符二重引用符))

| | (| | (縦棒縦棒))

{ } ({ } (中カッコ中カッコ) )

文字列の中に区切り文字を使うときは文字列の中に区切り文字を使うときは......

2回繰り返す2回繰り返す " "これはこれは "" "" 引用文引用文 "" "" です。です。"" { {これはこれは { { 引用文引用文 }} }} です。です。}}

または、別の文字区切りを使うまたは、別の文字区切りを使う | |これはこれは " " 引用文引用文 " " です。です。||

Page 5: Lotus DEvCon 2000 - LotusScript Tips and Techniques

利用例利用例 (1) (1)

スクリプト内での式の利用スクリプト内での式の利用Evaluate ( Evaluate ( formula$, [object]formula$, [object] ) )notesDatabase.Search( notesDatabase.Search( formula$,formula$,

notesDateTime, maxDocs%notesDateTime, maxDocs% ) )

Dim db As New NotesDatabase( "Server", "sample.nsf" )Dim collection As NotesDocumentCollection .....

formula$ = "Form = ""Project"" ReminderDate = @Today"Set collection = db.Search( formula$, NotesDateTime, 0 )

Page 6: Lotus DEvCon 2000 - LotusScript Tips and Techniques

利用例利用例 (1) (1)

スクリプト内での式の利用スクリプト内での式の利用Evaluate ( Evaluate ( formula$, [object]formula$, [object] ) )notesDatabase.Search( notesDatabase.Search( formula$,formula$,

notesDateTime, notesDateTime, maxDocs%maxDocs% ) )

Dim db As New NotesDatabase( "Server", "sample.nsf" )Dim collection As NotesDocumentCollection .....

formula$ = "Form = ""Project"" ReminderDate = @Today"formula$ = {Form = "Project" ReminderDate = @Today}Set collection = db.Search( formula$, NotesDateTime, 0 )

Page 7: Lotus DEvCon 2000 - LotusScript Tips and Techniques

| (| (縦棒縦棒) ) やや { } ( { } (中カッコ中カッコ) ) には複数行の文字には複数行の文字列が書ける列が書ける

文字定数文字定数 (2) (2)

msgtext$ = "文書の情報" & Chr$(10) & _ "作成者 = " & authorName$ & Chr$(10) & _ "作成日 = " & creationDate$ & Chr$(10) & _ "文書タイトル = " & subject$

" (" (二重引用符二重引用符) ) でもできますがでもできますが...... ファイル出力などで問題が出るかもファイル出力などで問題が出るかも

Page 8: Lotus DEvCon 2000 - LotusScript Tips and Techniques

利用例利用例 (2) (2)

フォーマットした文字列の出力フォーマットした文字列の出力

Sub Click(Source As Button)...msgtext$ = |文書の情報

作成者 = | & authorName$ & |作成日 = | & creationDate$ & |文書タイトル = | & subject$ & |

"OK" ボタンを押してください。処理を続行します。|

Messagebox msgtext$

End Sub

文書の情報作成者 = Hiroaki Komine作成日 = 00/10/25文書タイトル = 原稿

"OK" ボタンを押してください。処理を続行します。

OK

Page 9: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字列の演算文字列の演算

"+" "+" それともそれとも "&" "&" を使うべきかを使うべきか

演算子によって結果が違う演算子によって結果が違う...???...???

& ... & ... 2つのを文字列を連結2つのを文字列を連結オペランドが数値なら、まず文字に変換オペランドが数値なら、まず文字に変換

+ ... + ... はオペランドによって動きが変わるはオペランドによって動きが変わる !! !!

オペランドがどちらも数値なら加算オペランドがどちらも数値なら加算

どちらも文字列なら連結どちらも文字列なら連結

Page 10: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字列の演算文字列の演算 (2) (2)

もしオペランドが数値と文字列だったらもしオペランドが数値と文字列だったら var1=5, var2="123" var1=5, var2="123" var1 + var2 = ??? var1 + var2 = ???

結果は結果は

あるときはあるときは "5123" "5123"

またあるときはまたあるときは 128 128

不安定な結果を生まないために不安定な結果を生まないために

文字列の連結には文字列の連結には "&" "&" を使うを使う

数値計算では明示的にデータ型の変換数値計算では明示的にデータ型の変換ををCint, Clng, Csng, CdblCint, Clng, Csng, Cdbl

Page 11: Lotus DEvCon 2000 - LotusScript Tips and Techniques

Dim num1 As IntegerDim num2 As VariantDim st As String

文字列の演算文字列の演算 (3) (3)

num1 = 5num2 = 5st = "123"

Messagebox num1 + num2 ' 10Messagebox num1 & num2 ' "55"Messagebox num1 & st ' "5123"Messagebox num2 & st ' "5123"Messagebox num1 + st ' 128Messagebox num2 + st ' "5123"

Page 12: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字演算の関数文字演算の関数

Left, Right, Mid, Len, InStrLeft, Right, Mid, Len, InStr

目的に応じて4種類目的に応じて4種類

Left - Left - 文字数文字数

LeftB - LeftB - ユニコードバイト数ユニコードバイト数

LeftBP - LeftBP - プラットフォーム数プラットフォーム数

LeftC - LeftC - 表示上の文字数表示上の文字数 - R5 - R5 からの新関数からの新関数

Page 13: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字演算の関数文字演算の関数 (2) (2)

Left("ABCあいうえお", 6) => "ABCあいう"

LeftB("ABCあいうえお", 6) => "ABC"

LeftBP("ABCあいうえお", 6) => "ABCあ"

LeftC("ABCあいうえお", 6) => "ABCあいう"

Page 14: Lotus DEvCon 2000 - LotusScript Tips and Techniques

文字演算の関数文字演算の関数 (3) (3)

LeftB v.s. LeftBPLeftB v.s. LeftBP

BP BP はプラットフォーム依存のバイトはプラットフォーム依存のバイト Visual BASIC Visual BASIC のの LeftB LeftB と互換と互換

しかし、動きはプラットフォーム依存しかし、動きはプラットフォーム依存 ( (ノーツノーツ//ドミノにはお薦めしませんドミノにはお薦めしません!)!)

LeftCLeftC

R5 R5 の新しい関数の新しい関数

C C はカラムはカラム (Column) - (Column) - 表示上の文字数表示上の文字数

タイ語やインド語のための関数タイ語やインド語のための関数

パフォーマンスパフォーマンス......

Page 15: Lotus DEvCon 2000 - LotusScript Tips and Techniques

同じく日付同じく日付//時刻の演算時刻の演算

日付・時刻の内部形式は日付・時刻の内部形式は Double Double の浮動小の浮動小数点数数点数

データ宣言にはデータ宣言には Variant Variant

MsgBox MsgBox 関数やデバッガでは関数やデバッガでは String String に自動に自動変換変換

フォーマットはフォーマットは OS OS の設定に依存の設定に依存

OS: OS: コントロールパネルコントロールパネル→→地域設定地域設定

Page 16: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日付・時刻の加減算日付・時刻の加減算

Sub Click(Source As Button)Dim vdate As VariantDim ival As Integer

vdate = Todayival = 5

Messagebox "vdata + ival = " & Cstr(vdate + ival)Messagebox "vdata - ival = " & Cstr(vdate - ival)

End Sub

5日進める

5日遅らせる

Page 17: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日付・時刻の加減算日付・時刻の加減算 (2) (2)

デモデモ

日付の加減算日付の加減算

時刻の加減算時刻の加減算

Page 18: Lotus DEvCon 2000 - LotusScript Tips and Techniques

同じく日付同じく日付//時刻の演算時刻の演算 (2) (2)

String String を使うと日付が変わるを使うと日付が変わる...??...??

日付・時刻の受渡しには日付・時刻の受渡しには String String 変数は使変数は使わないわない

特に和暦のときに注意特に和暦のときに注意 12 12年年 ⇒⇒ 平成平成1212年年 or or 西暦西暦20122012年年 ??? ???

日付・時刻へのデータ変換には日付・時刻へのデータ変換には Cdat Cdat

DateValue/TimeValue DateValue/TimeValue に注意に注意

日付・時刻の変数 (1)Variant (Double)

日付・時刻の変数 (2)Variant (Double)

String

DateValue()

CDat()

Page 19: Lotus DEvCon 2000 - LotusScript Tips and Techniques

Dim vDate As VariantDim sDate As String

vDate = TodaysDate = Today

Messagebox "vDate = "& vdate ' 12/10/25Messagebox "sDate = "& sdate ' 12/10/25Messagebox "CDat(vDate) = " & Cdat(vdate) ' 12/10/25

Messagebox "CDat(sDate) = " & Cdat(sdate) ' 24/10/25Messagebox "DateValue(vDate) = " & Datevalue(vdate) ' 24/10/25

平成12年10月9日

String String を使ったときの問題を使ったときの問題

コントロールパネル/地域設定和暦 - y/m/d

Page 20: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日付・時刻定数は日付・時刻定数は ? ?

日付・時刻を文字列で定義しない日付・時刻を文字列で定義しない

文字列の解釈は文字列の解釈は OS OS の設定に依存の設定に依存

年月日の並び年月日の並び

元号の解釈元号の解釈

日付・時刻を埋め込むときは日付・時刻を埋め込むときは......

DateNumber / TimeNumberDateNumber / TimeNumber

Dim dt As Variantdt = DateNumber (1969,7,20) + TimeNumber (20,17,40)

西暦1969年7月20日午後8時17分40秒

Page 21: Lotus DEvCon 2000 - LotusScript Tips and Techniques

プラットフォーム依存の機能を使うプラットフォーム依存の機能を使う

Page 22: Lotus DEvCon 2000 - LotusScript Tips and Techniques

プラットフォーム依存の機能を使うプラットフォーム依存の機能を使う

ロータススクリプトはマルチプラットフォームロータススクリプトはマルチプラットフォーム対応対応

コンパイルされたスクリプトは複製されるコンパイルされたスクリプトは複製される

もしプラットフォームに依存する機能を使もしプラットフォームに依存する機能を使うならうなら ..... .....たとえばたとえば

IME IME 関連関数関連関数

ファイル操作関数ファイル操作関数

Win32 API Win32 API コールコール

LSXLSX

Page 23: Lotus DEvCon 2000 - LotusScript Tips and Techniques

プラットフォーム依存の機能を使うプラットフォーム依存の機能を使う (2) (2)

IsDefined IsDefined 関数関数 - - ランタイム関数ランタイム関数

実行時にプラットフォーム情報を取得実行時にプラットフォーム情報を取得

プラットフォーム識別定数はデザイナーヘプラットフォーム識別定数はデザイナーヘルプのルプの %if %if の項目に記載の項目に記載

LINUX - R5.02 LINUX - R5.02 よりより

WIN98/WIN2K - R5.03 WIN98/WIN2K - R5.03 よりより

ノーツノーツ//ドミノのスクリプトはコンパイルされドミノのスクリプトはコンパイルされた中間コードが複製されるので、た中間コードが複製されるので、%if %if でコンでコンパイル時の切り替えはできないパイル時の切り替えはできない

Page 24: Lotus DEvCon 2000 - LotusScript Tips and Techniques

Sub Click(Source As Button)Dim cdrive As StringDim cdir As String

If (isdefined("WIN32")) Thencdrive$ = Curdrive$()

ElseIf (isdefined("MAC")) Then

cdir$ = Curdrive$()cdrive$ = Left$(cdir$, Instr(1, Dir$, ":"))

End IfEnd If

Messagebox ("ドライブ名 : " & cdrive$)End Sub

プラットフォーム依存の機能を使うプラットフォーム依存の機能を使う (3) (3)

Page 25: Lotus DEvCon 2000 - LotusScript Tips and Techniques

LSX LSX ロードの問題ロードの問題

LSX - LotusScript eXtensionLSX - LotusScript eXtension

C/C++ C/C++ で作成されるユーザー定義のクラスで作成されるユーザー定義のクラス

C/C++ C/C++ のアプリケーションモジュールのアプリケーションモジュール (.dll (.dll or .so) or .so) でノーツプログラムディレクトリに提供でノーツプログラムディレクトリに提供

モジュールはモジュールは OS OS 毎にビルド毎にビルド

ノーツデータベースとともに複製されないノーツデータベースとともに複製されない

スクリプトは複製されるのでスクリプトは複製されるので

スクリプト実行開始時にロードしようとするスクリプト実行開始時にロードしようとする

ON ERROR ON ERROR では処理できないでは処理できない - "Uselsx error" - "Uselsx error"

Page 26: Lotus DEvCon 2000 - LotusScript Tips and Techniques

オプショナルオプショナル LSX LSX

Notes R5.03 Notes R5.03 からの新機能からの新機能

USELSX "?YourLsx"USELSX "?YourLsx"

LSX LSX モジュールがなくとも、元のスクリプトモジュールがなくとも、元のスクリプトは実行可能は実行可能

LSX LSX 内のクラス内のクラス//関数が呼ばれたときに関数が呼ばれたときに

実行時エラー実行時エラーErrUnknownClassId(230)ErrUnknownClassId(230)ErrErrorinLoadingDll(48)ErrErrorinLoadingDll(48)

Page 27: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリの利用スクリプトライブラリの利用

Page 28: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリスクリプトライブラリ

ノーツの設計要素の一つノーツの設計要素の一つ

いろいろな設計要素から呼び出せるいろいろな設計要素から呼び出せる

エージェント、フォーム、ボタンエージェント、フォーム、ボタン

他のスクリプトライブラリ他のスクリプトライブラリ

ユーザー定義の関数やサブルーチンのセットユーザー定義の関数やサブルーチンのセット

たとえばたとえば......

ソートや検索ソートや検索

高度な文字列比較高度な文字列比較

ビット演算ビット演算

Page 29: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリスクリプトライブラリ - - 使い方使い方

作成作成

ドミノデザイナードミノデザイナー[[作成作成] - [] - [設計設計] - [] - [スクリプトライブラリスクリプトライブラリ]]

関数やサブルーチンの作成関数やサブルーチンの作成

ライブラリ名を付けて保存ライブラリ名を付けて保存

呼出し呼出し

スタッティックスタッティック ( (普通の呼出し方普通の呼出し方))

(Options) (Options) セクションでセクションでUse "library_name"Use "library_name"

ダイナミックダイナミックExecute | Use "library_name" ... |Execute | Use "library_name" ... |

Page 30: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリスクリプトライブラリ - - スタティックスタティック

プログラムの保存時プログラムの保存時

参照されたすべてのスクリプトライブラリがロード参照されたすべてのスクリプトライブラリがロード

呼出し元スクリプトのコンパイルのために参照呼出し元スクリプトのコンパイルのために参照

Sub, Functions, Const, Type, ClassSub, Functions, Const, Type, Class

ライブラリに問題があれば、コンパイルエラーをライブラリに問題があれば、コンパイルエラーを表示してコンパイル中止表示してコンパイル中止

Page 31: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリスクリプトライブラリ - - スタティックスタティック (2) (2)

プログラム実行時プログラム実行時

参照されるクリプトライブラリがロード参照されるクリプトライブラリがロード

すべてのライブラリが正しくロードされなくすべてのライブラリが正しくロードされなくてはならないてはならない

すべての外部参照を検証すべての外部参照を検証Sub, Function ...Sub, Function ...

エラーがあれば実行されないエラーがあれば実行されない

Page 32: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリスクリプトライブラリ - - ダイナミックダイナミック

Use Use 文と処理内容を文字列としてを文と処理内容を文字列としてを Execute Execute に渡すに渡す

if condition=True thenExecute | Use "MyLibrary"

Call MySub ( ... )

val = MyFunc( ...) |Else

...End If

Page 33: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブライブラリスクリプトライブライブラリ - - ダイナミックダイナミック

必要なときに必要なライブラリがロードされる必要なときに必要なライブラリがロードされる

注意注意!!

保存時のコンパイルチェックはされない保存時のコンパイルチェックはされない

利点利点

不要なライブラリはロードされない不要なライブラリはロードされない

再起呼出しのチェックもパス再起呼出しのチェックもパス

Main

Sub01 Sub02

Page 34: Lotus DEvCon 2000 - LotusScript Tips and Techniques

便利ですが便利ですが......制限があります制限があります

コンパイルエラーは実行時に発生コンパイルエラーは実行時に発生

デバッグできないデバッグできない

実行時にコンパイルされ、終了後に実行時にコンパイルされ、終了後にただちに捨てられるただちに捨てられる ⇒⇒ パフォーマンスは悪いパフォーマンスは悪い

スクリプトライブライブラリスクリプトライブライブラリ - - ダイナミックダイナミック

Page 35: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトライブラリで良くある問題スクリプトライブラリで良くある問題

スクリプトライブラリの定数スクリプトライブラリの定数

定数は呼出し元のオブジェクトに保存される定数は呼出し元のオブジェクトに保存される

呼出しもとの再コンパイル忘れ呼出しもとの再コンパイル忘れ

AAととBBがスクリプトライブラリがスクリプトライブラリCCを利用を利用

CCを編集してを編集してAAを再コンパイルを再コンパイル

BBはそのままで、実行時エラーはそのままで、実行時エラー

Notes UI Notes UI クラスの使用クラスの使用

開発:クライアント側開発:クライアント側運用:サーバエージェント運用:サーバエージェント

Page 36: Lotus DEvCon 2000 - LotusScript Tips and Techniques

エージェント利用とデバッグエージェント利用とデバッグ

Page 37: Lotus DEvCon 2000 - LotusScript Tips and Techniques

リモートエージェントリモートエージェント

NotesAgent.RunOnServer - R4.62 NotesAgent.RunOnServer - R4.62 からから

分散環境でのスクリプトの実行分散環境でのスクリプトの実行

重い作業、特殊な作業での重い作業、特殊な作業でのエージェントの利用エージェントの利用

クライアントクライアント//サーバーモデルサーバーモデル

ノーツノーツIDIDによるデータ交換によるデータ交換 - R5.02 - R5.02 からから

Page 38: Lotus DEvCon 2000 - LotusScript Tips and Techniques

リモートエージェントの呼出し例リモートエージェントの呼出し例

データ交換する文書のノーツ ID

Set agent = db.GetAgent("LoadEmployeeAgent")Set doc = db.CreateDocument

Set item = doc.AppendItemValue("HR_ID", hr_id)Call doc.save(True, False)

paramDocID = doc.NoteIDCall Agent.RunOnServer(ParamID)

Delete doc

Page 39: Lotus DEvCon 2000 - LotusScript Tips and Techniques

リモートエージェントのコード例リモートエージェントのコード例

Set agent = session.CurrentAgent

' データ受け渡し用の文書 ID を取得NotesID$ = agent.ParameterDocID

' 文書のデータを参照Set doc = db.GetDocumentById(NotesID$)Set item = doc.GetFirstItem("HR_ID")hr_id = item.text

...

Page 40: Lotus DEvCon 2000 - LotusScript Tips and Techniques

' サーバーでの処理を実行' - ノーツデータベースの検索' - SQL コマンドの実行' などなど

Set item = doc.AppendItemValue("FirstName", FIRST)Set item = doc.AppendItemValue("LastName", LAST)Set item = doc.AppendItemValue("Division", DIVISION)

Call doc.save(True, True)

リモートエージェントのコード例リモートエージェントのコード例 (2) (2)

Page 41: Lotus DEvCon 2000 - LotusScript Tips and Techniques

呼出しコードの注意呼出しコードの注意

バックエンドで文書が更新されるバックエンドで文書が更新される

スクリプトで保持している文書オブジェクトスクリプトで保持している文書オブジェクトは古くなっているは古くなっている

' 呼出し元コードのつづき

' 既存の文書オブジェクトは削除Delete Doc

' 文書オブジェクトの再取得Set doc = db.GetDocumentByID(ParamDocID)FIRST = doc.GetItemValue("FirstName")

Page 42: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトデバッグのヒントスクリプトデバッグのヒント

スクリプトアプリケーションの実行時の情報スクリプトアプリケーションの実行時の情報をどのようにとるかをどのようにとるか??

たとえばたとえば......作成したアプリケーションがスクリプトエラー作成したアプリケーションがスクリプトエラーを起こしているを起こしている......しかし、その関数がどのように呼ばれていしかし、その関数がどのように呼ばれているかわからないるかわからない......

Page 43: Lotus DEvCon 2000 - LotusScript Tips and Techniques

スクリプトのデバッグのヒントスクリプトのデバッグのヒント (2) (2)

GetThreadInfo - R5 GetThreadInfo - R5 からの新しい関数からの新しい関数例例

%Include "lsprcval.lss"

GetThreadInfo ( LSI_THREAD_VERSION) ロータススクリプトのバージョンを文字列で返す

"4.0.0.21"

Page 44: Lotus DEvCon 2000 - LotusScript Tips and Techniques

ID 意味

LSI_THREAD_LINE 現在の行番号

LSI_THREAD_PROC 現在のプロシージャの名前

LSI_THREAD_MODULE 現在のモジュールの名前

LSI_THREAD_VERSION ロータス スクリプトのバージョン番号

LSI_THREAD_LANGUAGE 各国語設定

LSI_THREAD_COUNTRY 国別設定

LSI_THREAD_TICKS 国別設定

LSI_THREAD_TICKS_PER_SEC 秒ごとのクロックの刻みを取得

GetThreadInfo GetThreadInfo のパラメータのパラメータ

Page 45: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日本語別名の使用日本語別名の使用

Page 46: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日本語別名の処理のための拡張日本語別名の処理のための拡張

NotesSession.UserName NotesSession.UserName ←← ユーザー名ユーザー名 ( (基本名のみ基本名のみ))

NotesSession.UserNameListNotesSession.UserNameList ←← NotesName NotesName クラスのリストクラスのリスト

UserNameList(0) - UserNameList(0) - 基本名基本名

UserNameList(1) - (UserNameList(1) - (日本語日本語))別名別名

日本語別名日本語別名

Page 47: Lotus DEvCon 2000 - LotusScript Tips and Techniques

日本語別名処理のコード例日本語別名処理のコード例

Dim session as new NotesSession

Dim namelist as variant

Dim nname as NotesName

namelist = session.UserNameList

forall nname in namelist

print "Common name =" & nname.common

print "Language =" & nname.language

end forall

Page 48: Lotus DEvCon 2000 - LotusScript Tips and Techniques

@関数での日本語別名の処理@関数での日本語別名の処理

ユーザ名と言語情報ユーザ名と言語情報

@UserName(1) - @UserName(1) - ユーザーの日本語別名ユーザーの日本語別名

@UserNameLanguage(1) - @UserNameLanguage(1) - 別名の言語別名の言語 日本語なら日本語なら "ja" "ja"

言語タグの文字列への変換言語タグの文字列への変換

@Locale@Locale

@Locale ([LocaleName]; "ja-JP") ⇒ "日本語(日本)"

@Locale ([LanguageName]; "ja-JP") ⇒ "日本語"

@Locale ([CountryName]; "ja-JP") ⇒ "日本"

Page 49: Lotus DEvCon 2000 - LotusScript Tips and Techniques

@関数での日本語別名の処理@関数での日本語別名の処理

他のユーザの別名他のユーザの別名((基本名基本名))の検索の検索

@NameLookup@NameLookup

ドミノディレクトリを検索する。ドミノディレクトリを検索する。

@NameLookup([Exhaustive];"Hiroaki Komine/TYO/Lotus"; "AltFullName")

⇒ "小峯 宏秋/東京/ロータス"

Page 50: Lotus DEvCon 2000 - LotusScript Tips and Techniques

Next Release Next Release での計画での計画

コア機能の追加コア機能の追加

データタイプの追加データタイプの追加 - BYTE/BOOLEAN - BYTE/BOOLEAN

ビルトイン関数の追加ビルトイン関数の追加

Java Java オブジェクトの参照オブジェクトの参照

外部オブジェクトとの接続外部オブジェクトとの接続

JSP JSP との統合との統合

SOAPSOAP

リモート・デバッグリモート・デバッグ

データベース・リコンパイルデータベース・リコンパイル