LabTalkを使いましょう

Hello World

まず、よく使用されるサンプルを使い、LabTalkスクリプトを実行する方法を紹介します。

  1. Originを開き、ウィンドウメニューから、スクリプトウィンドウを選択し、 スクリプトウィンドウを開きます。
  2. このウィンドウで、次のように入力し、Enterキーを押します。
    type "Hello World"

    ここでLabTalkコマンド typeを使用しました。コマンドは2文字の省略形でも記述できます。その場合、次のコマンドを実行してください。

    ty "Hello World"

Originは、コマンドの下に直接Hello Worldという文字を出力します。

エンターキーを押すと、Originがセミコロン;を行の最後に入力し、そのスクリプトを実行します。
スクリプトを繰り返し実行するには、行内にカーソルを移動してエンターキーを押します。カーソルを行の最後に移動する場合、Enterを押してスクリプトを実行する前に、セミコロン()を削除する必要があります。

では、スクリプトウィンドウで複数の行を実行する方法を確認しましょう。

  1. Origin内でワークブックがアクティブな状態で スクリプトウィンドウを開きます。
  2. スクリプトウィンドウに次の3行を入力します。各行の最後にを入力してから、Enterキーを押します。これにより、それぞれの行が実行されることなく複数行のスクリプトを入力できます。後から全ての行を一度に実行します。
    type "The current workbook is %h";
    type "This book has $(page.nlayers) sheet(s)";
    type "There are $(wks.ncols) columns in the active sheet";
  3. マウスでドラッグし、すべてのスクリプト行を選択します。キーボードを使用している場合、スクリプトの最初にカーソルを合わせ、Shiftキーを押しながら矢印キーを使用して全ての行を選択します。
  4. 選択した全てのスクリプト行を実行するためにEnterキーを押します。現在どのワークブックがアクティブであるかによって、スクリプトウィンドウに出力される情報は異なりますが、以下のような出力になります。
    The current workbook is Book1
    This book has 1 sheet(s)
    There are 2 columns in the active sheet

上記の例の場合、 %Hという文字列レジスタを使用しました。これは現在アクティブなウィンドウ名(ワークブック、行列、グラフのいずれか)を保持します。そして、LabTalk オブジェクトpagewksを使用し、ブックのシートの数と、シート内の列数を表示しました。$()は、置換表記の1つで、()内の変数を評価し、その値を返すようOriginに通知します。

スクリプトウィンドウに複数の行を入力する場合、各行の最後にを追加してからEnterを押すと、その行の実行せずに改行する事ができます。これにより、それぞれの行で実行せず、すべての行を入力してから一括で実行できます。

= 記号を使った素早い出力

スクリプトウィンドウは対話形式で結果を返す計算機のように使うことができます。スクリプトウィンドウに、以下のスクリプトを入力し、Enterキーを押します。

3 + 5 =

Originは結果を計算し、次の行に表示します。

3 + 5 = 8

= 記号は、通常、左辺と右辺を持ち、代入演算子として使われます。右辺が無い場合、インタプリタが=の左側(左辺)の式を評価し、スクリプトウィンドウに結果を出力します。

以下の例では、LabTalkでの変数の考え方を説明します。例えば、スクリプトウィンドウに次の代入文を入力します。

double A = 2

これは変数Aを作成し、Aに2が割り当てられます。そして、変数Aに対してPI(Originで定義される定数, \;\pi) で掛け算するなどの算術演算を行い、変数Aに再割り当てすることができます。

A = A*PI

Aの現在の値を表示するには、次のように入力します。

A =

Enterキーを押すと、次のように値が返ってきます。

A = 6.2831853071796

さらに、変数や変数の値のリストを見るListコマンドもあります。以下のコマンドを入力してEnterを押します。

list

Originは、LabTalkの変数と関数ダイアログを開き、Originの変数をすべて表示します。

また、特定のタイプの変数を切り捨てる事もできます。

list v

数値変数をリストするにはこれを使用します。

スクリプトを実行する他の方法

先程のサンプルでは、スクリプトをスクリプトウィンドウから実行しました。Originは他にもLabTalkスクリプトを整理して実行する機能を備えています。詳細については LabTalk スクリプトの実行とデバッグの章を確認してください。ここでは、スクリプトを実行するメソッドをいくつか確認しましょう。(1)ツールバーボタンにあるカスタムルーチン、(2)カスタムメニューアイテム、(3)グラフページのボタンを紹介します。

カスタムルーチン

Originには、スクリプトを保存し、ツールバーのボタンを押すだけで実行する便利な方法があります。

  1. キーボードでCtrl+Shiftキーを押しながら、標準ツールバーカスタムルーチンボタン ( Button Custom Routine.png ) を押します。
  2. これによりOriginの標準のスクリプトエディタであるコードビルダが開きます。 編集しているファイルは、Custom.ogsです。 コードには、1つのセクション [Main]があり、以下のスクリプト1行を含みます。
    [Main]
    type -b $General.Userbutton;

    これを次の行で置き換えます。

    [Main]
    type -b "Hello World";
    そして、コードビルダウィンドウの保存 ( Button Save Project.png )ボタンをクリックします。
  3. Originのウィンドウに戻り、 Button Custom Routine.pngボタンをクリックします。

これにより、Originは再びHello Worldのテキストを出力しますが、ここではtypeコマンドに-bスイッチが付いているので、ポップアップウィンドウに表示されます。

カスタムメニューアイテム

LabTalkスクリプトはカスタムメニューアイテムを実行できます。

  1. メニューから環境設定:カスタムメニューオーガナイザを選択し、カスタムメニューオーガナイザダイアログを開きます。
  2. カスタムメニュー追加タブを開きます。左側パネルの内部を右クリックし、新しいメインポップアップをコンテキストメニューから選択します。
  3. 右側のパネルでは、ポップアップテキストに名前、例えばMy Menuを入力してから編集ボックスの外側をクリックします。
  4. 左側パネルからMy Menuを選択してから右クリックし、項目の追加をコンテキストメニューから選びます。
  5. 右側のパネルでは、項目テキストHello Worldに変更し、次のスクリプトをLabTalkスクリプトボックスに追加します。
  6. type -b "Hello World";
  7. 閉じるボタンをクリックした後、ポップアップするウィンドウではYesをクリックして、メニューの変更をデフォルトメニューに設定します。開いたファイルダイアログでは、保存ボタンを押し、デフォルト名でデフォルトフォルダ(User Filesフォルダ)に保存します。
  8. これで新しいメニュー(My Menu)がメニューバーのウィンドウメニューの左側に追加されます。この新しいメニューアイテムをクリックし、Hello World エントリーをドロップダウンから選択します。Hello World と表示されたダイアログがポップアップします。

グラフにボタンを追加する

Originはグラフやワークシートにボタンを追加する事ができ、ボタンを押す事でLabTalkスクリプトの実行が可能です。これにより、スクリプトを特定のプロジェクトやウィンドウに保存できます。

  1. 標準ツールバー新規グラフボタン Button New Graph.pngをクリックし、新しいグラフを作成します。
  2. プロット操作・オブジェクト作成ツールバーの中のテキストツールボタン(Button Text Tool.png)をクリックし、作成したグラフ上でクリックしてMy Button と入力します。テキストの入力が終わったら、テキストの外側をクリックして編集を終了します。
  3. テキストを右クリックし、コンテキストメニューから、オブジェクトのプログラム制御を選択してオブジェクトのプログラム制御ダイアログを開きます。
  4. ダイアログでは、のあとでスクリプトを実行のドロップダウンリストから、ボタンアップを選択し、以下のスクリプトを編集ボックスに入力します。
  5. type -b "Hello World";
  6. OKをクリックしてダイアログを閉じます。テキストラベルがボタンになりました。ボタンをクリックすると、Hello Worldダイアログがポップアップします。

スクリプトサンプル

ここで紹介するスクリプトサンプルでは、 インポートとデータ処理に関連する特定のシナリオをステップごとに実行し、プロジェクトを保存します。このサンプルでは、いくつかのLabTalk言語、例えばコマンドオブジェクトXファンクションに焦点を当てています。これらの言語についての詳細は、この後に続く章で説明します。

NOTE: ここでは、コマンド文を実行するためにスクリプトウィンドウを使用します。コードの1行分だけを実行する場合は入力せずに、Enterキーを押してください。複数行にわたるコードの場合、各行の末尾にを入力してからEnterを押すと、そのまま入力を続ける事ができます。全ての行を入力後、Enterキーを押すと実行します。

それではdocコマンドと-nスイッチを使用して、新しいプロジェクトを始めましょう。現在のプロジェクトを保存する必要がある場合、このコマンドはユーザに保存をするように促します。

doc -n

サンプルフォルダからデータファイルをインポートしましょう。インポートするファイルを参照するために、Xファンクションdlgfileを使用します。

dlgfile gr:=ASCII

インストールフォルダの、\Samples\Import and Export サブフォルダから、S15-125-03.datを選択し、開くをクリックします。

上記操作により、ファイルのパスをロードし、fname$変数にファイル名が入力されます。この変数の値を確認するには、以下のコードを実行します。

fname$=

このファイルをアクティブなワークブックにインポートします。impasc Xファンクションを命名制御オプションと共に使用し、ファイル名はワークブック名に設定されません。

impasc Options.Names.FNameToBk:=0

では、Position列のデータを処理しましょう。まず、範囲変数を定義し、この列を指定します。

range rpos = "Position"

指定する列は、現在のワークシートの4番目の列なので、インデックス番号を使用し、以下のように定義することもできます。

range rpos = 4

次のコマンドを使用すると、範囲変数に現在定義されている値を確認できます。

list a

列データを正規化し、データが0から100までの値をになるようにします。正規化に必要なXファンクションを確認するには、次のコマンドを使用します。

lx *norm*

上記コマンドにより、normを名前に含むXファンクションが表示されます。データを正規化するXファンクションは複数あり、今回の例では、rnormalize Xファンクションを使用します。

このXファンクションのシンタックスに関するヘルプを参照するには、以下のように入力します。

rnormalize -h

これにより、情報が一覧表示されます。あるいは、以下のように入力します。

help rnormalize

と入力すると対応するヘルプファイルが開きます。

では、posotion列を正規化しましょう。

rnormalize irng:=rpos method:=range100 orng:=<input>

正規化されたデータは同じ列、つまり、元のデータを置き換え、出力されます。これは出力範囲変数 orng<input>に設定したためです。

Xファンクションを使用する場合、現在の順序で変数値を指定している時は、変数名を入力する必要はありません。つまり、上記コマンドは次のように省略して記述できます。

rnormalize rpos range100 orng:=<input>

ここでもorngを指定した理由は、この特定の変数に先立つ他の変数があるからです。それらの変数は、ここで行いたい計算には関係ないため、今回のコマンドには含めていません。


次に、プロジェクトの中のフォルダに変更を加えます。プロジェクトを管理するいくつかのXファンクションがあり、そのうちのいくつかを使用します。

// 現在のワークシート名を入手
string name$ = wks.name$;
// ルートフォルダに移動
pe_cd ..;
// Folder1をワークシートと同じ名前にする
pe_rename Folder1 name$;

では、ルートフォルダにある全てのサブフォルダとワークブックをリストしましょう。

pe_dir

最後に、Origin プロジェクトUser Filesフォルダに保存します。User Filesフォルダの場所は文字列レジスタ%Yに保存されています。この変数を確認すると、User Filesフォルダの場所を確認できます。

%Y =

saveコマンドを使用し、現在のプロジェクトをMyProject.opjという名前でUser Filesフォルダに保存します。

save %yMyProject

上記コマンドで%Y はUser Filesフォルダのパスに置き換えられ、このプロジェクトはこのパスに保存されます。

CTRL + SHIFTを利用してメニューコマンドとツールバーボタンのスクリプトをキャプチャする

Originのメニューコマンドやツールバーボタンなど、GUIの機能はLab Talkのスクリプトで実行することができます。次の方法で、スクリプトを確認できます。

  1. キーボードのCTRL + SHIFTを押しながら、
  2. メニューコマンドかツールバーボタンをクリックします。

これは、自分でスクリプトを作る時に便利です。

サンプル

  1. 新規ワークブックを開き、列AとBを選択・右クリックして、列値の一律設定: 行番号を選択します。Row Numbers.
  2. ワークシートがアクティブになっていることを確認して、CTRL + SHIFTを押して散布図ツールバーボタンButton Scatter.pngをクリックします。(または、作図 > 2D: 散布図: 散布図を選択します。)Scatter:Scatter).

すると、次の2つが実行されます。

  • Code Builder(Originの開発環境)が開き、Plot.ogs(Originのシステムスクリプトファイル)のツールバーボタンやメニューコマンドの実行箇所が表示されます。
  • スクリプトウィンドウにメニューIDとrun.sectionコマンドを書き出します。
Menu id=33248 (0x81e0)
run.section(Plot,Scatter)

このスクリプトの情報をもとに、自分で折れ線グラフのスクリプトを作成できます。このスクリプトの動作を確認するには、行番号の入った2列がアクティブなことを確認して、スクリプトウィンドウを開き(ウィンドウ: スクリプトウィンドウ)、次のいずれかを入力してエンターキーを押します。

menu -e 33248
run.section(Plot, Scatter)


詳細はこれらのトピックをご覧ください。

これから行うこと

LabTalkスクリプトガイドの残りの項目を学習することが重要です。 上述の例は、表面的なものですが、LabTalkの学習を始めるにあたっては十分な情報といえます。次の章では、LabTalkを学ぶ上で便利なリソースの一覧を表示します。