補助的な Mathematica プロセスを呼び出す

LinkLaunch["prog"] 外部プログラムを開始させ,そのプログラムとの接続を開く

MathLink を使って補助的プログラムと接続する

利用中のコンピュータで補助的 Mathematica プロセスを開始させる.
In[1]:=
Click for copyable input
Out[1]=
補助的 Mathematica プロセスからの最初の入力プロンプトを表すパケット.
In[2]:=
Click for copyable input
Out[2]=
補助的 Mathematica プロセスの入力となるテキストを表すパケットを書き込む.
In[3]:=
Click for copyable input
補助的 Mathematica プロセスからの出力プロンプトを表すパケット.
In[4]:=
Click for copyable input
Out[4]=
これが実際に計算した結果である.
In[5]:=
Click for copyable input
Out[5]=

MathLink パケットは,Mathematica セッションにかかわるさまざまなオブジェクトを系統立てて管理するために使用されている.MathLink パケットは簡単に言えばパケットの役目や意味を示す一定の頭部を持った式である.

EnterTextPacket["input"]入力行に対応するテキスト
ReturnTextPacket["output"]出力行に対応して返されるテキスト
InputNamePacket["name"]入力行の名前として返されるテキスト
OutputNamePacket["name"]出力行の名前として返されるテキスト

Mathematica セッションの基本パケット

LinkReadInputNamePacketを返すため,もうひとつの Mathematica セッションが入力待ちであることが分かる.
In[6]:=
Click for copyable input
Out[6]=
入力にPrintコマンドを2つ与える.
In[7]:=
Click for copyable input
1番目のPrintが返したテキスト.
In[8]:=
Click for copyable input
Out[8]=
2番目のPrintが返したテキスト.
In[9]:=
Click for copyable input
Out[9]=
出力行は生成されず,次のパケットはInputNamePacketとなる.
In[10]:=
Click for copyable input
Out[10]=
TextPacket["string"]Printその他が返すテキスト
MessagePacket[symb,"tag"]メッセージ名
DisplayPacket["string"]PostScriptグラフィックスの一部
DisplayEndPacket["string"]PostScriptグラフィックスの末尾

Mathematica セッション中に使用されるパケットの一部

EnterTextPacket["input"]Mathematica へ入力するとき,Mathematica はその出力を自動的に文字列に変換し,ReturnTextPacket["output"]で応える.それとは別に,EnterExpressionPacket[expr]で入力を与えると,MathematicaReturnExpressionPacket[expr]で応え,出力を文字列に変換することはしない.

EnterExpressionPacket[expr]入力行に相当する式
ReturnExpressionPacket[expr]出力行に相当する式

式を使って入出力するためのパケット

補助的 Mathematica セッションに式を評価することなく入力する.
In[11]:=
Click for copyable input
補助的 Mathematica セッションからは3つのパケットが返ってくる.
In[12]:=
Click for copyable input
Out[12]=

InputNamePacketOutputNamePacketは補助的 Mathematica セッションの現在の状態を知りたいときに利用することができる.補助的 Mathematica セッションをで起動すれば,それらのパケットの生成を抑制することができる.

InputNamePacketパケットとOutputNamePacketパケットの明示的な生成を抑制していても,Mathematica は,EnterTextPacketあるいはEnterExpressionPacketの入力を,あたかも入力行があるかのように処理する.つまり,Mathematica$Pre$Postを呼んでIn[$Line]Out[$Line]の値を代入する.

EvaluatePacket[expr]評価のために送信される式
ReturnPacket[expr]評価によって返信される式

明示的な入力行・出力行なしで評価を実行する

EvaluatePacketを送信する.Unevaluatedはパケットが送信される前に評価されることを抑止する.
In[13]:=
Click for copyable input
結果は純粋なReturnPacketである.
In[14]:=
Click for copyable input
Out[14]=
EvaluatePacketの評価を要求するPrint[x]を送る.
In[15]:=
Click for copyable input
最初に返ってくるのはTextPacketであり,Printが生成するテキストを表している.
In[16]:=
Click for copyable input
Out[16]=
その後,Printの結果が返ってくる.
In[17]:=
Click for copyable input
Out[17]=

ほとんどの場合,EvaluatePacketを送信することによって,Mathematica は計算を実行し,ReturnPacketで終るさまざまなパケットを返してくると思っていいだろう.しかし,実行すべき計算がInputのような関数を含んでいる場合,Mathematica は計算を続ける前にさらに入力を要求してくる.

Input関数の評価を含むパケットを送信する.
In[18]:=
Click for copyable input
返ってくるパケットはInputPacketであり,入力が必要なことを示している.
In[19]:=
Click for copyable input
Out[19]=
リンクには読むべきパケットが残っていない.
In[20]:=
Click for copyable input
Out[20]=
入力を与える.
In[21]:=
Click for copyable input
Input関数が評価され,ReturnPacketが生成された.
In[22]:=
Click for copyable input
Out[22]=
LinkInterrupt[link]MathLink 適合プログラムに割込み信号を送る

MathLink 適合プログラムへの割込み

非常に時間のかかる計算を補助的プロセスに送る.
In[23]:=
Click for copyable input
まだ計算中である.
In[24]:=
Click for copyable input
Out[24]=
割込み信号を送る.
In[25]:=
Click for copyable input
補助的なプロセスは中断し,割込みメニューを返してくる.
In[26]:=
Click for copyable input
Out[26]=
以下でリンクを閉じる.
In[27]:=
Click for copyable input
New to Mathematica? Find your learning path »
Have a question? Ask support »