LabTalkLabTalkコマンドを利用する時に必要なもの...

24
Chapter 8 463 8 LabTalk C hapter LabTalk を うこ 、データ グラフ する きます。 データを り扱ったり、 す。 したスクリプト テンプレート ボタンに割り けて します。

Transcript of LabTalkLabTalkコマンドを利用する時に必要なもの...

Page 1: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

463

8LabTalk

Chapter

LabTalkを使うことで、データの処理やグラフ化、分析などの操作を自動化することができます。大量のデータを取り扱ったり、同じ操作を繰り返し行う場合など、特に有効です。作成したスクリプトは、通常テンプレート上のボタンに割り付けて利用します。

Page 2: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

464

Chapter8 - 01 LabTalkの基礎

LabTalkはORIGIN独自のスクリプト(プログラミング)言語です。作業の自動化や、通常のメニュー操作では実行できない処理も行えます。

LabTalk

LabTalkはORIGINの中でだけ利用できる簡易プログラミング言語です。ORIGINは、この簡易言語のコマンドを実行してグラフの作成やデータの管理、演算を行っていますので、LabTalkを理解することでORIGIN の構造がより深く理解でき、操作性を向上させることができます。ORIGINの上位バージョンであるORIGIN Proには、モジュールがいくつか用意されておりますが、これらは、追加のLabTalkコマンドセットであると理解してください。したがって、LabTalkのコマンドを理解していないと、モジュールを使いこなすことは困難です。ただし、PFM(PeakFitting Module)はあらかじめ専用のユーザインタフェースが準備されていますので、その心配はいりません。LabTalkは、「ウィンドウ」メニューから「スクリプトウィンドウ」を選択し、開いたスクリプトウィンドウに記述します。

スクリプトウィンドウを開いた画面

LabTalkコマンドの例

LabTalkはインタープリタ言語なので、コマンド実行する度に先頭からコマンドの意味を解釈して、プログラムを実行します。スクリプトウィンドウに次のように入力してEnterキーを押します。

A=123(Enterキー)

Page 3: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

465

変数Aを作成し、123を代入しました。「=」は変数に数値や文字を代入するために利用します。数学の等号ではありません。Enterキーを押すと、行の最後に「;(セミコロン)」が表示されます。これはそのコマンド行が実行済みであることを示しています。

つづけて、「A=」として同じくEnterキーを押します。すると画面に「123」という文字列が表示されます。「A=」は数値変数Aの中身をウィンドウに表示するコマンドです。「Type $(A)」と実行しても、同じように変数の中身を表示することができます。

スクリプトウィンドウ

変数間の演算や代入を行う場合は、変数の属性に注意してください。「変数形を間違えたためにスクリプトが実行されない」とうことがよくありますので、注意してください。なお、スクリプトウィンドウは普通のテキストエディタ(メモ帳)のようなものです。一度、記述したスクリプトはそのままテキストファイルとして保存できます。スクリプトウィンドウの「ファイル」メニューから「新規保存」を選択すると次のダイアログが表示されます。

スクリプトファイルの保存ダイアログ

スクリプトはテキストファイルとして保存できます。また、便利な方法としてボタン(オブジェクト)を画面に作成して、そこにスクリプトを埋め込むこともできます。この方法についてはChapter8-05「ボタンコントロール」の項目を参照してください。

Page 4: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

466

オブジェクトメソッド/プロパティ

コマンドとは別にオブジェクトのプロパティを取得、操作するためのメソッド/プロパティが用意されています。その操作方法はMicrosoft 社のVisual Basic に似ておりますので、VisualBasicの経験者なら簡単に操作方法を理解できるはずです。

試しにスクリプウィンドウで次のように入力してEnterキーを押してください。

wks.colwidth=(Enterキー)

結果は次の通りです。

スクリプトウィンドウに大文字で「WKS.COLWIDTH=8」という文字列が表示されます。画面に表示されているワークシート幅が「8」であることが分かります。ワークシートというオブジェクトの列幅に関するプロパティを取得したわけです。等号の右側に任意の数値を設定すると、今度は列幅をその値に指定することができます。

wks.colwidth=5(Enterキー)

としてみてください。ワークシートの列幅が小さくなるのが確認できます。前者の利用方法をオブジェクトプロパティ、後者をオブジェクトメソッドと呼んでいます。

スクリプトウィンドウ

Page 5: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

467

Chapter8 - 02 LabTalkコマンド

ORIGINのメニューで操作可能なものはすべてLabTalkコマンドで実行可能です。コマンド体系について概略を説明します。

どのような時に便利か?

次のようなデータ処理を行っているユーザはLabTalkを試してみる価値があります。

1. 計測器から収集したデータをORIGIN で加工する時に、いつも同じ前処理をメニュー操作で行っている。

2. インポートしたASCIIファイルのヘッダ情報をいつもグラフに書き加えている。3. 入力したデータの並替えを手作業で行っている。4. 欠測値、異常値を手作業で見つけ出している。5. 複数枚のグラフの作成を手作業で行っている。

これらの作業はLabTalkを使って楽に行えるようになります。LabTalkに関する基本事項を押さえておきましょう。

LabTalkコマンドを利用する時に必要なもの

コマンドを記述する上で次のことを基本的に理解しておく必要があります。

数値変数文字列変数演算子置換表記

それぞれの概要と注意点は次に通りです。

数値変数数値データを格納するための変数です。半角アルファベット(数字を含んでもかまいません)を変数名として利用できます。

例)A1

次にあげる変数名は利用しないでください。

!AttentionX1、X2、Y1、Y2これらはXY軸の開始値と終了値として、すでにORIGIN本体が使用しています。

echoスクリプトウィンドウに表示するメッセージ用にORIGIN本体が使用しています。

Page 6: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

468

X、Y、Z座標位置を検出するORIGINの機能がすでに使用しています。

小文字のiデータセットの行番号(インデックス)にORIGIN本体が使用しています。

SELC1、SELC2、SELR1、SELR2ワークシートの選択範囲を示す値としてORIGIN本体が使用しています。

COUNTORIGINの別の回数を数えるルーチンが使用しています。

@(アットマーク)の付いた変数以下の変数は既にORIGIN本体が使用しています。

@A、@B、@L、@D、@V、@P、@O など

文字列変数文字列データを格納するための変数です。次の文字列変数はORIGINがシステム変数として既に使っていますので注意しましょう。また、格納できる文字列は半角英数字で105文字までです。

%A、%B、%C、%D、%E、%F、%G、%H、%I、%J、%U、%V、%X、%Y、%Z など

演算子

演算子には次の4種類のものがあります。

算術演算子...主に四則演算代入演算子...数値変数や文字列変数への値の代入や演算論理演算子...不等式など条件演算子...条件文

置換表記

%( ワークシート名、列番号、行番号)該当するセルの内容を取得、または代入します。

例)A=(data1,4,3)ワークシートdata1の左から4列目、3行目のセルの数値データを数値変数Aに代入します。

$(expression )数値変数expressionの内容を文字列に変換します。

例)K=10Type $(K)スクリプトウィンドウには10が表示されます。これを単に, Type KとするとKが表示されます。

Page 7: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

469

一番大切なルール

ここで一番大切なルールについて説明します。

1. 実行するスクリプト行の後ろにはセミコロンはつけないこと。ただし、複数行のスクリプトは最後の行以外、すべてセミコロンを付けてください。

2. 複数行のスクリプトを実行する場合はすべての行をマウスで選択し、反転表示させてEnterキーを押します。

3. 複数行のスクリプトを記述する時は、スクリプトウィンドウの「編集」メニューで「スクリプトの実行」のチェックを外しておきます。

Page 8: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

470

Chapter8 - 03 メソッドとプロパティ

ORIGINのメソッド/プロパティはMicrosoft社のVisual Basicの操作方法とたいへん良く似ています。LabTalkでORIGINの属性情報を取得したり、属性を変更したい場合はこのメソッド/プロパティを利用します。

どんな時に利用するのか?LabTalkスクリプトを記述している最中に、どうしても目的のコマンドが見つからない時があります。そのような時はメソッド/プロパティを調べてください。

オブジェクトメソッド/プロパティを利用する場合、「オブジェクト」という言葉を正しく理解しておくことが必要です。オブジェクトとは、ORIGINの操作画面に表示される「ワークシート」、「プロットした点」、「XY軸」などのORIGINのプロジェクトを構成する各部品のことを意味しています。また、ワークシートに入力された「データセット」のこともオブジェクトと呼ぶことができます。

メソッドとプロパティの違い両者の違いについてワークシートオブジェクトの例を用いて説明します。空のワークシートを開いてください。

空のワークシート

ここでスクリプトウィンドウを開き、次のスクリプトを実行します。

プロパティの例wks.ncols=(Enterキー)スクリプトウィンドウにはワークシート中の列(カラム)数として、2が表示されます。

Page 9: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

471

メソッドの例wks.addcol(test)=(Enterキー)ワークシート中に新たに列が追加され、「TEST」という列名が付きました。

メソッドで列を追加

同じワークシートオブジェクトに対して、メソッドとプロパティを活用することで様々な操作を実行することができます。スクリプトウィンドウからも明らかなように、プロパティで画面に表示された内容はそのまま、数値変数に格納することができます。最初にスクリプトウィンドウの「編集」メニューから「スクリプトの実行」のチェックを外してから、スクリプトウィンドウに次のように入力してみましょう。

A=$(wks.ncols); <-必ずセミコロンを付けてください!A=

「編集」メニューで「スクリプトの実行」をチェックし、下図のように、実行する2行だけを選択してからEnterキーを押します。

スクリプト実行

この結果、「A=3」という数値が表示されます。メソッドとプロパティはコマンドと自由に組み合わせて利用することができます。

Page 10: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

472

Chapter8 - 04 演算子

LabTalkに用意されている演算子について説明します。LabTalkには大きく分けて次の種類の演算子が用意されています。それぞれの利用方法と使用上のルールについて理解してください。

算術演算子代入演算子論理演算子条件演算子

ただし、ORIGINではこれらの演算子を、次の順番にしたがって優先順位を付けて評価(実行)します。

1. 代入演算子2. カッコ内の演算子を、カッコの外の演算子より先に評価します。3. 乗算と除算は加算、減算よりも優先されます。4. 論理演算子間では= =と=!は最後に評価されます。5. 論理演算子&&と||は記述された順番に評価されます。6. 条件演算子?:は最後に評価されます。

算術演算子

加減乗除を行うための一般的な演算子です。

+ 加算- 減算* 乗算/ 除算^ 指数& ビットのAnd計算| ビットのOr計算

例)スクリプトウィンドウで次のような演算を行えます。

3+8=3&5=

実行結果は

3+8=133&5=1

ビットのAnd計算は次のようにして実行されます。

3は 0115は 101

したがって、ビット単位でのANDをとると001となります。

Page 11: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

473

代入演算子文字変数や数値変数の作成、変数への値の代入などを行うための演算子です。

= 変数に数値を代入します+= 変数にある値を加え、その結果を新たに変数に格納します-= 変数からある値を引き、その結果を新たに変数に格納します*= 変数にある値を掛け、その結果を新たに変数に格納します

/= 変数をある値で割り、その結果を新たに変数に格納します^= 変数を指数計算し、その結果を新たに変数に格納します

スクリプトウィンドウで次のような演算を行えます。

例1)

とすると

A+B=9

例2)

とすると

A=11

という値が表示されます。

論理演算子変数の比較など、ifでの条件式などでよく使われます。> より大きい>= 以上< より小さい<= 以下== 等しい!= 等しくない&& かつ

スクリプトウィンドウで次のような演算を行えます。

例)

とすると

A=3;B=6;A+B=;

という式が表示されます。この時、数値変数AとBにはそれぞれ、3と6が格納されています。

A=6;A+=5;A=;

|| または

A=10;B=100;if(A>B) type "A>B";else type "A=B or A<B"

「A=B or A<B」

という結果が表示されます。

Page 12: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

474

条件演算子

基本的にはif文と同じ機能を持っています。

式1?式2:式3

式1が真のとき、式2を実行します。式1が偽のとき、式3が実行されます。

スクリプトウィンドウで次のような演算を行えます。

例)

このスクリプトを実行すると次の結果が得られます。

C=0.99

「C=(A>B?B/A:A/B)」は、つぎのように記述することも可能です。

A=100;B=99;C=(A>B?B/A:A/B);C=

If (A>B) C=B/A;Else C=A/B;?Hint

Page 13: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

475

Chapter8 - 05 ボタンコントロール

コントロールとはLabTalkスクリプトと結合したオブジェクトのことです。ラベルボタンとツールバーボタンがあります。

コントロールの利用方法

例えば、LabTalkスクリプトを使って作業の自動化を行う場合、テキスト形式で保存したスクリプトファイルを開いてそれを実行するのは面倒です。ORIGINでは、このスクリプトをボタンに結合させて、それをクリックすることでスクリプトを自動実行させることができます。ボタンには、テキストラベルをボタン化するラベルボタンとツールバーに作成するボタンの2種類あります。ラベルボタンを作成し、テンプレートとして保存しておけば、必要な時にだけ使用することができます。ツールバーボタンは、ORIGIN6.0から提供される新機能です。ツールバーにボタン作成しておけば、異なるテンプレートを使用している時にでも使用することができます。必要に応じて使い分けをしましょう。

ラベルボタン

空のワークシートを開きます。余白部分をダブルクリックして「ワークシート表示制御」ダイアログを開きます。「ワークシートの大きさ」の項目で「上余白」を「40」としてOKボタンを押します。

ワークシート表示制御ダイアログ

余白部分にテキストツールを使って「Data Import」と入力し、背景を「影」にします。

Page 14: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

476

オブジェクト作成ツール

ワークシートは次のようになります。

次に「編集」メニューから「ボタン編集モード」を選択します。これによりORIGINは通常の操作モードからボタン編集モードに切替わります。ボタン編集モードではデータの入力や列値の設定など、データを直接追加、編集することはできません。ボタン編集モードにしたら、ボタンを選択します。

次に「フォーマット」メニューから「オブジェクトの制御」を選択します。「オブジェクト制御」ダイアログが表示されますので、オブジェクト名を「Import」とし、ダイアログ中ほどにあるプルダウンリストから「ボタンアップ」のあとでスクリプトを実行する、に設定します。

オブジェクト名とはテキストオブジェクトの名前で、メソッドやプロパティを使って操作する時に必要になりますので、必ず付けるようにしましょう(オブジェクト名を付けなくても動作上の問題はありません)。オブジェクト名には半角アルファベットを利用しましょう。

テキストツール

テキストを余白に入力

オブジェクト制御ダイアログ

Page 15: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

477

スクリプトの記述欄に次のスクリプトを入力します。

getfilename *.dat;open -w %B%A;

OKボタンをクリックしてダイアログを閉じます。「編集」メニューから「ボタン編集モード」のチェックを外して、通常の操作モードに戻ります。スクリプトを実行する前に、このワークシートをテンプレートとして保存します。「ファイル」メニューから「テンプレートの新規保存」を選択します。任意の名前を付けて保存します。これで、ボタンコントロールの付いたワークシートテンプレートの完成です。

それでは実際に「DataImport」ボタンを押してスクリプトを実行してください。目的のテキストファイル(拡張子はDAT)を選択するだけでデータがインポートされます。このような働きをするオブジェクト(この場合はテキスト)をボタンコントロールと呼びます。このサンプルスクリプトを元にデータをインポートした時のワークシートは次のようになります。

スクリプトを実行した後のワークシート

この画面を印刷しても、ボタンコントロールは印刷されません。このことは覚えておくと便利です。

ツールバーボタン

ボタンの画像を作成するツールバーを作成するには、まずボタンとなる画像を作成します。ORIGINをインストールしたフォルダに「userdef.bmp」というファイルがありますので、Windowsのエクスプローラからこのファイルをダブルクリックして、開きます。

Page 16: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

478

ツールバーボタンの画像の大きさは、16x16(ピクセル)です。このファイルには、16x16(ピクセル)の画像が10個連続して作成されています。1度に作成できるツールバーボタンは、10個までとなっていますので、これ以上画像を大きくして作成しても登録できません。このファイルを修正して、別名で保存しましょう。

次のように修正します。ボタンの大きさは、16x16(ピクセル)ですので、それ以上大きくしないように作成します。慣れないうちは、図のように16x16の枠を作成してからアイコンを作成します。

実は、ツールバーのボタンを10 個以上登録することができます。それには「OUbtn.ini」ファイルを直接、修正する必要があります。拡張子にiniとついたファイルは、通常設定ファイルになっていますので、壊したり、間違って修正するとORIGINが動かなくなることもありますので、注意しましょう。どうしても修正する必要がある場合には、必ずバックアップを取りましょう。

USERDEF.BMPファイル

?Hint

画像を作成

Page 17: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

479

ここでは、1つだけ作成し、別名を付けて保存します。「labtalk.bmp」という名前にします。

スクリプトの作成

先ほど、ラベルボタンで使用したスクリプトと同じものをスクリプトウィンドウに記述します。「ウィンドウ」メニューから「スクリプトウィンドウ」を選び、開いたウィンドウに次のように入力します。

getfilename *.dat;open -w %B%A;

スクリプトウィンドウの「ファイル」メニューから「新規保存」を選び、ファイル名を付けて保存します。ファイルの種類が、OGSになっていることを確認して、「myscr.ogs」という名前で保存します。

ツールバーへの登録

ボタン画像ファイルの作成、スクリプトファイルの作成が終わり、いよいよツールバーに登録します。新規ツールバーの作成とボタンの登録方法に関しては、Chapter6-13「カスタムツールバ-」も参照してください。

「表示」メニューから「ツールバー」を選びます。「ツールバーのカスタム化」ダイアログが開きます。ここでは、標準ツールバーにボタンを登録することにします。

スクリプトファイルの保存

Page 18: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

480

「ツールバー」タブの「ツールバー」にある「標準」にチェックが付いていることを確認します。次に「コマンド」タブをクリックします。カテゴリーの一番下にある「User Defined」をクリックして選択します。先ほど見た画像がボタンに現れているのがわかります。

ダイアログの中ほどにある「一覧」ボタンを押し、先ほど作成した「labtalk.bmp」を選択し、「開く」ボタンを押します。作成したボタンが現れます。

ツールバーダイアログ

Page 19: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

481

次に、作成したボタンをクリックし、「ボタン修正」ボタンを押します。次のようなダイアログボックスが現れます。

「ファイル名」には、先ほど作成した「myscr.ogs」を指定します。「一覧」ボタンをクリックすると「ファイルを開く」ダイアログボックスが開きますので、そこから選びます。

「セクション名」には、「Main」と入力します。これは、「custom.ogs」ファイルの[Main]セクションのことを表わしています。「custom.ogs」については、ORIGINのマニュアルを参照してください。

「引数リスト」は空白のままで構いません。LabTalkコマンドを実行するのに、引数が必要な場合に指定します。

「ツールチップテキスト」には、「LabTalkコマンド」と記述します。これは、マウスカーソルがツールバーのこのボタン上にある時に表示されるツールヒントの文字になります。このボタンの名前を記述します。

「ステータスバーテキスト」には、「作成したLabTalkコマンドを実行します。」と記述します。これは、マウスカーソルがツールバーのこのボタン上にあるときやボタンが押された時に、ステータスバーに表示される文章です。このボタンの説明文を記述します。

ボタンエリアに作成した画像が現れる

ボタンの設定ダイアログ

Page 20: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

482

「実行コンテキスト」は、このボタンをアクティブにする条件を設定します。「テンプレート」を選択すると指定したテンプレートを開いている時に、このボタンがアクティブになります。「ウィンドウ」を選択すると、チェックボックスにチェックが付いたウィンドウがアクティブな時にボタンもアクティブになります。ここでは、「ウィンドウ」を選択し、「ワークシート」だけチェックを付けましょう。

OKボタンを押して、「ツールバーのカスタム化」ダイアログに戻ります。ボタン領域からボタンを標準ツールバーまでドラッグ&ドロップします。

ワークシートをアクティブにして、登録したボタンをクリックしましょう。前半で作成したラベルボタンと全く同じ動きをします。

行列ウィンドウやグラフウィンドウをアクティブにしてみましょう。今作成したボタンが非アクティブな状態になるのが分かります。

作成したボタンをツールバーにドラッグ&ドロップ

ツールバーに登録

Page 21: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

483

Chapter8 - 06 デバッグ

LabTalkコマンドのデバッグ方法について解説します。

コマンドのデバッグについてLabTalkのデバッグ機能として、ORIGINのシステム変数echoを利用します。システム変数echo

の設定によって、画面上に表示されるメッセージが変わります。現在設定されているecho変数の内容を確認する場合は、スクリプトウィンドウで「echo=(Enterキー)」としてください。試しにスクリプトウィンドウで設定状態を確認してください。システム変数echoの設定によって下記の情報を得ることができます。

echo #

表 示される情報

1 エラーを発生させたコマンドを表示します

2 遅延実行のため、キューに転送されたスクリプトを表示します

4 コマンドを含むスクリプトを表示します

8 代入演算子を含むスクリプトを表示します

16 マクロを表示します

実際デバッグに有用なものは「echo=1」です。試しに次の例でその機能を確認してみましょう。初めに次のスクリプトを実行してください。

echo=0;%A=ABCD;%B=EFG;type %A;type %B;

この結果は「ABCD」および「EGF」という文字列が画面に表示されます。ここで、スクリプトを次のように変更して、再度実行してください。

echo=0;%A=ABCD;%B=EFG;types %A; /*typeの表記が間違っています*/type %B;

結果は「#Command Error!」という文字列が表示されます。これでは、どのコマンドにエラーが発生しているのかわかりません。どのコマンドに間違いがあるか、システム変数echoを使えば調べることができます。先ほどのスクリプトを次のようにしてください。

Page 22: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

484

echo=1;/*システム変数を変更*/%A=ABCD;%B=EFG;types %A;type %B;

結果は次のようになります。

Error:types %A#Command Error!

これによりどのコマンドに間違いが発生したか分かります。

演算子のデバッグ

演算子の誤りについては特にデバッグ機能は準備されていません。ですから、コマンドエラー以外は、次のポイントを繰り返しチェックしてください。

● ステートメント(スクリプト文)の後ろには必ずセミコロンを付ける● 不要なセミコロンを付けていないか?特にif,define,forループでの使用方法に注意

● 左右のカッコの数が同じか?● 代入演算子=と等号==の用法に誤りはないか?● 置換演算子%( )や$( )の変数の属性に不整合はないか?● プロジェクト名やワークシート名に誤りはないか?システム変数%Hなどを利用して誤りを防ぎましょう。

Chapter8-01「LabTalkの基礎」でも説明したように、ORIGINにはシステム変数が用意されており、その中には%C(アクティブなデータセット名)、%H(アクティブなウィンドウ名)など便利なものがあります。これらを利用すれば、スクリプトウィンドウで文字の誤りを気にする必要がなくなります。

例えば、アクティブなワークシート mydataのデータセットAの10行目のデータにアクセスする場合、

A=%(mydata,1,10)

A=%(%H,1,10)

とするよりも

とするほうが、効率的で、しかもワークシート名を間違える心配がありません。

Page 23: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

Chapter 8

485

Chapter8 - 07 サンプルスクリプト

LabTalkの実用的なサンプルスクリプトをご紹介します。

データのインポートと計算の実行、そしてグラフの作成までを行うサンプルスクリプトを用意しました。スクリプトウィンドウを使って、このスクリプトを実行してみましょう。ここではASCIIファイルをインポートして、ワークシート内で演算を行い、その結果をグラフ化します。

サンプルスクリプトを作成、実行する前に次のようなサンプルファイルを用意しておきましょう。Windowsに標準で付属しているメモ帳を使いましょう。

サンプルデータ

サンプルファイルができたら、次のスクリプトをスクリプトウィンドウに記述しましょう。ただし、/*..*/はコメント文ですから記述する必要はありません。

サンプルスクリプト

getfilename *.txt; /*図のようなダイアログを開く*/open -w %B%A; /*ファイルのインポート。*/

/*%B、%AはORIGINのシステム変数*/wks.addcol(); /*カラム(列)を追加*/row=wks.nrows; /*行数を変数rowに代入*/col=wks.ncols; /*列数を変数colに代入*/for(i=1;i<=row;i+=1){ /*繰り返し処理*/%(%H,$(col),i)=(%(%H,2,i)+%(%H,3,i))/2; /*%置換の機能*/};worksheet -s $(col) 1 $(col) $(row); /*グラフ化するデータの選択*/worksheet -p 202; /*散布図の作成*/page -o l; /*ページをランドスケープに設定*/layer1.y.from=0; /*y軸の開始値を0に設定*/integ %C; /*アクティブデータセットを積分*/area=integ.area; /*積分計算の結果を変数areaに代入*/%A="Integration Area=$(area)"; /*ラベル用のテキスト作成*/label -s %A /*グラフ上にラベルを表示*/

Page 24: LabTalkLabTalkコマンドを利用する時に必要なもの コマンドを記述する上で次のことを基本的に理解しておく必要があります。数値変数 文字列変数

ORIGIN6.0

486

getfilename *.txt によるダイアログ

以上のようにテキストファイルをインポートしてグラフを作成し、積分計算を実施するスクリプトを紹介しました。これを実行した結果のウィンドウは次のようになります。

スクリプト実行後の画面

グラフにグリッド線を付けたり、シンボルの色を変更したり、LabTalkスクリプトを利用すれば実に様々な処理を自動化することができます。スクリプトを記述する時のポイントを念のために紹介しておきましょう。

1. 事前に自動化する作業を実際にメニュー操作で行ってみる。2. できれば、1行づつスクリプトを実行し、確認しながら作業をおこなう。3. システム変数echoを1に設定して、エラーの発生したコマンドを的確に把握す

る。4. システム変数%H、%Aなどを的確に利用して、短いスクリプトを書く。5. 置換表記を利用するためにオプションを付けなければならないコマンドがある。