===================================================================
RCS file: /home/cvs/OpenXM/doc/OpenXM-specs/stackmachine.tex,v
retrieving revision 1.5
retrieving revision 1.14
diff -u -p -r1.5 -r1.14
--- OpenXM/doc/OpenXM-specs/stackmachine.tex 2000/01/24 12:32:49 1.5
+++ OpenXM/doc/OpenXM-specs/stackmachine.tex 2020/03/14 01:21:56 1.14
@@ -1,21 +1,22 @@
-//&jp \section{ OX スタックマシン }
+%% $OpenXM: OpenXM/doc/OpenXM-specs/stackmachine.tex,v 1.13 2016/08/22 09:08:50 takayama Exp $
+//&jp \section{ OX 鴻帥激 }
//&eg \section{ OX stack machine }
\label{sec:stackmachine}
/*&jp
-この節では, OX スタックマシン operator の説明
-(TCP/IP ソケット上での標準 encoding 法 を用いる),
-および, サンプルサーバとリンクする場合または
-open XM ライブラリとしてリンクして使用する場合の
-ための C の関数の仕様を説明する.
+膀с, OX 鴻帥激 operator 茯
+(TCP/IP 純宴筝с罔羣 encoding 羈 ),
+, 泣潟泣若潟翫障
+open XM ゃ潟篏睡翫
+ C ∽違篁罕茯.
-説明の前に, OX サーバスタックマシンの動作の原則を
-説明しておく.
-サーバスタックマシンは,
-{\tt SM\_pop*} 系のスタックマシンコマンドがこないかぎり,
-自発的にメッセージを送信することはない.
-この原則に基づいて分散計算のプログラミングをおこなう.
-イベントドリブンなプログラム法とはちがうことに
-注意しよう.
+茯, OX 泣若鴻帥激潟篏
+茯.
+泣若鴻帥激潟,
+{\tt SM\_pop*} 膤祉鴻帥激潟潟潟,
+榊<祉若吾篆<.
+冴ャh膊違潟違.
+ゃ潟潟違羈<
+羈.
*/
/*&eg
@@ -27,13 +28,13 @@ commands. Note that the programming style should be d
that for event-driven programming.
*/
-//&jp \subsection{サーバスタックマシン }
+//&jp \subsection{泣若鴻帥激 }
//&eg \subsection{Server stack machine}
/*&jp
-サンプルサーバである {\tt oxserver00.c}
-は以下の仕様の C の関数を用意して,
-{\tt nullstackmachine.c } を置き換えれば一応動作するはずである.
+泣潟泣若с {\tt oxserver00.c}
+篁ヤ篁罕 C ∽違,
+{\tt nullstackmachine.c } 臀遺綽篏с.
*/
/*&eg
{\tt oxserver00.c} is implemented as a sample server.
@@ -42,45 +43,45 @@ write the following functions and use them instead of
those in {\tt nullstackmachine.c}.
*/
-//&jp \subsubsection{サーバスタックマシンのグループ SMobject/Primitive に属するオペレータ}
+//&jp \subsubsection{泣若鴻帥激潟違若 SMobject/Primitive 絮若}
//&eg \subsubsection{Operators in the group SMobject/Primitive}
/*&jp
\noindent
-サーバスタックマシンは最低で1本のスタック
+泣若鴻帥激潟篏1鴻帥
\begin{verbatim}
Object xxx_OperandStack[SIZE];
\end{verbatim}
-をもつ. ここで, {\tt Object} はそのシステム固有の Object 型で構わない.
-CMObject は各サーバ固有のローカルオブジェクトに変換してスタックへプッ
-シュしてよい. ただし変換, 逆変換を合成したものは恒等写像であることが
-のぞましい. CMObject をどのように (local) Object に変換するか, Object
-が受け付けるメッセージの定義は,各システムが独自にきめて文書化しておく
-ものとする. つまりすべてのメッセージは, private である. たとえば,
-{\tt add } のような基本的な メッセージにたいしても, OX スタックマシン
-はなにもきめていない. 将来的には open math \cite{openmath} のように
-CMObject に対する最大公約数的なメッセージの仕様をcontent dictionary
-(CD) の形で定義したい.
+. , {\tt Object} 激鴻堺 Object ф.
+CMObject 泣若堺若吾с紊鴻帥吾
+激ャ. 紊, 紊膈с
+障. CMObject (local) Object 紊, Object
+篁<祉若吾絎臂,激鴻後
+. ゃ障鴻<祉若吾, private с. ,
+{\tt add } 堺 <祉若吾, OX 鴻帥激
+. 絨ョ open math \cite{openmath}
+CMObject 絲障紊у膣亥<祉若吾篁罕content dictionary
+(CD) 綵≪у臂.
-以下, \verb+ xxx_ + は誤解の恐れがないときは省略する.
-\verb+ xxx_ + は local サーバシステムに固有の識別子である.
-{\tt Asir} の場合は \verb+ Asir_ + を用いる. {\tt kan/sm1} の場合は
-\verb+ Sm1_ + を用いる. 関数名, タグ名は長いので省略形を用いてもよい.
+篁ヤ, \verb+ xxx_ + 茯よВャ.
+\verb+ xxx_ + local 泣若激鴻堺茘ュс.
+{\tt Asir} 翫 \verb+ Asir_ + . {\tt kan/sm1} 翫
+\verb+ Sm1_ + . ∽医, 帥医激хュ就.
-以下では次のようにパケットを記述する. 各フィールドは,
-\fbox{データ型 \quad データ} なる形式
-で書く. たとえば, {\tt int32 OX\_DATA} は 32 bit network byte order
-の数字 {\tt OX\_DATA}という意味である. ``イタリックで書かれているフィー
-ルドは,定義が別のところでなされているか解釈に誤解のないような自然言語
-で説明されている object を表す.'' たとえば, {\it String commandName}
-は, String データ型の local object {\it commandName} を意味する. (サー
-バスタックマシン上の object は, CMO 形式の objectとは限らないことに注
-意. CMO 形式で書いてあっても, それはサーバスタックマシンのlocal 形式
-でスタック上にあると解釈して下さい.)
+篁ヤс罨<宴荐菴違. c若,
+\fbox{若水 \quad 若} 綵√
+ф吾. , {\tt int32 OX\_DATA} 32 bit network byte order
+医 {\tt OX\_DATA}潟с. ``ゃ帥ф吾c
+,絎臂ャс茹i茯よВ区茯
+ц object 茵.'' , {\it String commandName}
+, String 若水 local object {\it commandName} 潟. (泣
+鴻帥激割 object , CMO 綵√ object羈
+. CMO 綵√ф吾c, 泣若鴻帥激潟local 綵√
+с鴻帥筝茹i筝.)
-すべてのサーバスタックマシンは以下の操作を実装していないといけない.
-各操作に対し, その前後におけるスタックの状態を示す. 図において,
-右端のオブジェクトがスタックのトップに対応する.
+鴻泣若鴻帥激潟篁ヤ篏絎茖.
+篏絲障, 緇鴻帥倶腓冴. 潟,
+勆吾с鴻帥絲上.
*/
/*&eg
@@ -122,10 +123,10 @@ top of the stack. Only the modified part of the stack
\begin{enumerate}
\item
/*&jp
-CMObject/Primitive の CMO データのうち必須のもの, {\tt CMO\_ERROR2}, {\tt
-CMO\_NULL}, {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_LIST}がおく
-られて来た場合それをスタックに push する. たとえば, {\tt CMO\_NULL}
-あるいは {\tt CMO\_String} の場合次のようになる.
+CMObject/Primitive CMO 若帥≦, {\tt CMO\_ERROR2}, {\tt
+CMO\_NULL}, {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_LIST}
+ャ翫鴻帥 push . , {\tt CMO\_NULL}
+ {\tt CMO\_String} 翫罨<.
*/
/*&eg
Any server should accept CMObjects in the group CMObject/Primitive.
@@ -163,7 +164,7 @@ Stack after the request:
Output: none.
-//&jp CMO データの受け取りに失敗した時のみ \\
+//&jp CMO 若帥紊掩 \\
//&eg If the server fails to receive a CMO data,\\
\begin{tabular}{|c|c|c|} \hline
{\tt int32 OX\_DATA} & {\tt int32 CMO\_ERROR2} & {\it CMObject} ob\\
@@ -171,14 +172,14 @@ Output: none.
\end{tabular}
\\
/*&jp
-をスタックへ push する.
-現在のところ, ob には, \\
+鴻帥 push .
+憜, ob , \\
\centerline{
-[{\sl Integer32} OX パケット番号, {\sl Integer32} エラー番号,
-{\sl CMObject} optional 情報]
+[{\sl Integer32} OX 宴, {\sl Integer32} 主,
+{\sl CMObject} optional ]
}
-なるリストを入れる (CMO 形式でかいてあるが, これはサーバ独自の形式でよい.
-CMO として送出されるときこのような形式でないといけないという意味である.)
+鴻ャ (CMO 綵√с, 泣若綵√с.
+CMO 冴綵√с潟с.)
*/
/*&eg
is pushed onto the stack.
@@ -194,10 +195,10 @@ Currently ob is a list\\
SM_mathcap
\end{verbatim}
/*&jp
-このサーバの mathcap をもどす (termcap のまね). サーバのタイプ, サー
-バスタックマシンの能力を知ることができる. C 言語で実装する場合は,
-mathcap の構造体をシステム毎にきめるものとし,この関数はその構造体への
-ポインタを戻す. (open sm1 では {\tt struct mathcap} を用いている.
+泣若 mathcap (termcap 障). 泣若帥ゃ, 泣
+鴻帥激潟遵ャс. C 荐茯у茖翫,
+mathcap 罕篏激鴻罸,∽違罕篏吾
+ゃ潟帥祉. (open sm1 с {\tt struct mathcap} .
*/
/*&eg
It requests a server to push the mathcap of the server.
@@ -225,10 +226,10 @@ Output: none.
SM_setMathcap
\end{verbatim}
/*&jp
-受け取った Mathcap {\tt m} を自分のシステムに設定して, 相手側が理解不
-能な CMO をおくらないようにする. C 言語で実装する場合は, mathcap の構
-造体をシステム毎にきめるものとし,この関数はその構造体へのポインタを引
-数とする. (open sm1 では {\tt struct mathcap} を用いている.
+c Mathcap {\tt m} 激鴻荐絎, 御眼茹d
+純 CMO . C 荐茯у茖翫, mathcap 罕
+篏激鴻罸,∽違罕篏吾ゃ潟帥綣
+違. (open sm1 с {\tt struct mathcap} .
*/
/*&eg
It requests a server to register the peer's mathcap {\tt m} in the server.
@@ -251,13 +252,13 @@ Request:
Output: none.
/*&jp
\noindent
-注意: mathcap は一般にクライアント主体で設定する.
-クライアントがサーバに {\tt SM\_mathcap} をおくり,
-サーバ側の mathcap を得る.
-それを, クライアントはそのサーバに付随した mathcap として
-設定する.
-次に, クライアントはサーバに自分の mathcap を
-{\tt SM\_setMathcap} でおくり, 自分の mathcap を設定させる.
+羈: mathcap 筝ゃ≪潟筝私ц┃絎.
+ゃ≪潟泣若 {\tt SM\_mathcap} ,
+泣若眼 mathcap 緇.
+, ゃ≪潟泣若篁 mathcap
+荐絎.
+罨<, ゃ≪潟泣若 mathcap
+{\tt SM\_setMathcap} с, mathcap 荐絎.
*/
/*&eg
\noindent
@@ -273,13 +274,13 @@ registers it.
SM_executeStringByLocalParser
\end{verbatim}
/*&jp
-文字列 {\tt s} を stack から pop し,
-その文字列をシステム固有の文法(サーバスタックマシンの組み込みローカ
-ル言語)にしたがったコマンドとして実行する. コマンドの実行の結
-果の最後に戻り値があるときは, {\tt OperandStack} に戻り値を push する.
-OpenXM では, 現在のところ関数名の標準化はおこなっていない.
-この関数および {\tt popString} の機能を実現すれば, 最低限の open XM の
-サーバになれる. 実装では, まずこの二つの関数の機能を実現すべきである.
+絖 {\tt s} stack pop ,
+絖激鴻堺羈(泣若鴻帥激潟腟粋昭帥若
+荐茯)c潟潟絎茵. 潟潟絎茵腟
+緇祉ゃ, {\tt OperandStack} 祉ゃ push .
+OpenXM с, 憜∽医罔羣c.
+∽違 {\tt popString} 罘純絎憗, 篏 open XM
+泣若. 絎茖с, 障篋ゃ∽違罘純絎憗鴻с.
*/
/*&eg
It requests a server to pop a character string {\tt s}, to
@@ -309,10 +310,10 @@ Request:
Output: none.
/*&jp
\noindent
-参考: \ 実行前のスタックのデータは,
-{\it String commandString} なる local stack machine の object としてス
-タック上にあるが, TCP/IP の通信路では, 次のようなデータがまずながれて
-{\it commandName} がスタックに push される:
+: \ 絎茵鴻帥若帥,
+{\it String commandString} local stack machine object
+帥筝, TCP/IP 篆∴君с, 罨<若帥障
+{\it commandName} 鴻帥 push :
*/
/*&eg
\noindent
@@ -329,9 +330,9 @@ onto the stack. It is done by sending the following OX
SM_executeStringByLocalParserInBatchMode
\end{verbatim}
/*&jp
-スタックに副作用がない(スタックにたいしてなんの操作もしない)ことを除き
-上とまったく同じ関数である. エラーの時のみ, Error2 Object をスタック
-へプッシュする.
+鴻帥篏(鴻帥篏)ゃ
+筝障c∽違с. 若, Error2 Object 鴻帥
+吾激ャ.
*/
/*&eg
This is the same request as {\tt SM\_executeStringByLocalParser}
@@ -343,10 +344,10 @@ if an error has occurred.
SM_popString
\end{verbatim}
/*&jp
-{\tt OperandStack} より Object を pop し, それを xxx の出力規則にしたがい文
-字列型に変換して送信する. スタックが空のときは, {\tt (char *)NULL} を戻す.
-文字列は TCP/IP stream へ CMO のデー
-タとして送信する. エラーの場合は {\tt CMO\_ERROR2} を戻すべきである.
+{\tt OperandStack} Object pop , xxx 阪荀
+絖紊篆<. 鴻帥腥冴, {\tt (char *)NULL} 祉.
+絖 TCP/IP stream CMO
+帥篆<. 若翫 {\tt CMO\_ERROR2} 祉鴻с.
*/
/*&eg
It requests a server to pop an object from {\tt OperandStack},
@@ -380,8 +381,8 @@ Output:
SM_getsp
\end{verbatim}
/*&jp
-現在のスタックポインタの位置をもどす. スタート時点での位置は 0 であり,
-object が push されたばあい, 1 づつ増えるものとする.
+憜鴻帥ゃ潟帥篏臀. 鴻帥若鴻с篏臀 0 с,
+object push 違, 1 ャゅ.
*/
/*&eg
It requests a server to push the current stack pointer onto the stack.
@@ -415,8 +416,8 @@ Output: none.
SM_dupErrors
\end{verbatim}
/*&jp
-スタック上のエラーオブジェクトをリストにして戻す. スタック自体は変化
-させない.
+鴻帥筝若吾с鴻祉. 鴻帥篏紊
+.
*/
/*&eg
It requests a server to push a list object containing all error objects on the stack.
@@ -435,13 +436,48 @@ Stack after the request:
\end{tabular}
Output: none.
+
+\item
+\begin{verbatim}
+SM_pushCMOtag
+\end{verbatim}
+/*&jp
+鴻帥吾с CMO 紊翫 CMO tag
+{\tt CMO\_INT32} 鴻帥 push .
+吾с鴻帥障.
+吾сCMO 後号<翫, object 腥.
+*/
+/*&eg
+It requests a server to push the CMO tag of the top object on the server
+stack. The tag is pushed as {\tt CMO\_INT32}.
+The top object remains on the stack.
+If there is no way to translate the object into CMO,
+push an error object.
+*/
+
+Request:
+\begin{tabular}{|c|c|} \hline
+{\tt int32 OX\_COMMAND} & {\tt int32 SM\_pushCMOtag} \\
+\hline
+\end{tabular}
+
+Stack after the request:
+\begin{tabular}{|c|c|c|} \hline
+{\tt int32 OX\_DATA} & {\sl CMO\_INT32} \ tag\\
+\hline
+\end{tabular}
+
+Output: none.
\end{enumerate}
\medbreak
\noindent
+
+//&C \subsubsection{ MathCap } \label{subsubsection:mathcap}
+
/*&jp
-{\bf 例}: \
-mathcap の問い合わせに対して, {\tt ox\_sm1} は次のように答える.
+{\bf 箴}: \
+mathcap 絲障, {\tt ox\_sm1} 罨<膈.
*/
/*&eg
{\bf Example}: \
@@ -458,20 +494,27 @@ Class.mathcap
\end{verbatim}
/*&jp
-mathcap は 3つの要素をもつリストである. まづ, 最初の要素を見よう.
-Ox\_system は openXM システム名である. 読み込むライブラリがちがって
-いて, 関数名(または シンボル)の意味がちがうときはこの名前もかえる. た
-とえば, open math の basic content dictionary 対応の関数定義マクロを読
-みこんだ sm1 は, ox\_sm1\_basicCD なる名前にする. HOSTTYPE 値は, CPU
-の種類をあらわしunix では環境変数\verb+$HOSTTYPE+ の値である. 2 番目
-の要素は 利用可能な SM コマンドをあつめたリストである. 3 番目のリスト
-は, 処理可能な数学データの形式, およびCMOの場合なら処理可能なCMOのタグ
-のリストが続く. 上の例では, 514 は {\tt OX\_DATA} をあらわし, 数学デー
-タのフォマットは(サイズ情報なしの) CMO であることを示す.
+mathcap 3や札筝荀膣ゃ鴻с. 障, 荀膣(鴻)荀.
+鴻医 OpenXM 潟若吾с潟с.
+Ox\_system openXM 激鴻с. 茯粋昭ゃ<c
+, ∽医(障 激潟)潟<.
+, open math basic content dictionary 絲上∽医臂茯
+帥 sm1 , ox\_sm1\_basicCD . HOSTTYPE ゃ, CPU
+腮蕁unix с医紊\verb+$HOSTTYPE+ ゃс. 2
+荀膣 純 SM 潟潟ゃ鴻с. 3 鴻
+, 純医若帥綵√, CMO翫純CMO帥
+鴻膓. 筝箴с, 514 {\tt OX\_DATA} , 医
+帥(泣ゃ堺宴) CMO с腓冴.
+鴻 optinal , CMO string 鴻с.
+絖 option, 障 option=, 綵√т.
+option 掩医潟≪潟若若ц菴. = 篁ヤ utf-8 絖潟若.
*/
/*&eg
-A mathcap has three components. The first one contains informations
-to identify the system and hosts on which the application runs.
+A mathcap has three or more than three components.
+The first one, which is also a list,
+contains informations
+to identify the version number of the OpenXM protocol,
+the system and hosts on which the application runs.
In the above example, {\tt Ox\_system} denotes the system name.
{\tt HOSTTYPE} represents the OS type and taken from \verb+$HOSTTYPE+
enviroment variable.
@@ -482,21 +525,118 @@ Again in the above example, 514 is the value of {\tt O
and it indicates that the server accepts CMO (without size information)
as mathematical data messages. In this case the subsequent
list represents available CMO tags.
+The fourth list is optinal.
+This is a list of cmo strings.
+Each string has the formats ``an option name'' or ``an optionname=value''.
+The option name must consists only of alphabets, numbers, and under bars.
+The symbol = may be followed by a string in the utf-8 character codes.
*/
+/*&C
+\noindent
+OpenXM/XML expression of the example above:
+\begin{verbatim}
+
+
+
+
+ 4
+ 001001003
+ Ox_system=ox_sm1.plain
+ Version=2.990911
+ HOSTTYPE=i386
+
+
+
+ 11
+ 262
+ 263
+ ...
+
+
+
+ 2
+
+ 1
+ 514
+
+
+ 21
+ 2130706434
+ 1
+ ....
+
+
+
+
+
+\end{verbatim}
+*/
+
+/*&C
+\noindent
+Example of the use of the fourth argument (optional parameter).
+\begin{verbatim}
+
+
+
+
+ 4
+ 001001003
+ Ox_system=ox_sm1.plain
+ Version=2.990911
+ HOSTTYPE=i386
+
+
+
+ 11
+ 262
+ 263
+ ...
+
+
+
+ 2
+
+ 1
+ 514
+
+
+ 21
+ 2130706434
+ 1
+ ....
+
+
+
+
+ 2
+ no_ox_reset
+ opt_sample=Hello world.
+
+
+
+
+\end{verbatim}
+*/
+
\medbreak
+
+//&jp \subsubsection{ 箴 }
+//&eg \subsubsection{ Examples }
+
\noindent
-//&jp {\bf 例}: \
+//&jp {\bf 箴}: \
//&eg {\bf Example}: \
%%Prog: (ox.sm1) run sm1connectr [(oxWatch) ox.ccc] extension
%%Prog: ox.ccc (122345; ) oxsubmit ;
-//&jp {\tt message\_body} の実例をあげる. シリアル番号部は除いてある.
+//&jp {\tt message\_body} 絎箴. 激≪埌ゃ.
//&eg We show examples of {\tt message\_body}. Serial numbers are omitted.
\begin{enumerate}
\item {\tt executeStringByLocalParser("12345 ;");}
/*&jp
-は次のようなパケットに変換される. 各数字は 16進1バイトをあらわす.
-{\tt xx(yy)} のなかの {\tt (yy)} は対応するアスキーコードをあわらす.
+罨<宴紊. 医 161ゃ.
+{\tt xx(yy)} {\tt (yy)} 絲上≪鴻若潟若.
*/
/*&eg
is converted into the following packet. Each number denotes
@@ -509,7 +649,7 @@ one byte in hexadecimal representation.
0 0 2 1 0 0 1 c
\end{verbatim}
/*&jp
-それぞれのデータの意味は次のとおりである.
+若帥潟罨<с.
*/
/*&eg
Each data has the following meaning.
@@ -522,7 +662,7 @@ Each data has the following meaning.
0 0 2 1 (OX_COMMAND)
0 0 1 c (SM_executeStringByLocalParser)
\end{verbatim}
-//&jp これを OXexpression で表記すると次のようになる.
+//&jp OXexpression ц;荐罨<.
//&eg This is expressed by OXexpression as follows.
\begin{center}
(OX\_DATA, (CMO\_STRING, 7, "12345 ;"))
@@ -531,30 +671,30 @@ Each data has the following meaning.
(OX\_COMMAND, (SM\_executeStringByLocalParser))
\end{center}
-//&jp \item {\tt popString()} を要請するメッセージ:
+//&jp \item {\tt popString()} 荀茫<祉若:
//&eg \item A message which requests {\tt SM\_popString}:
\begin{verbatim}
0 0 2 1 (OX_COMMAND)
0 0 1 7 (SM_popString)
\end{verbatim}
-//&jp OXexpression では
+//&jp OXexpression с
//&eg In OXexpression it is represented as
(OX\_COMMAND, (SM\_popString)).
\noindent
-//&jp これにたいして次の返答メッセージがくる.
+//&jp 罨<菴膈<祉若吾.
//&eg The server returns the following reply message:
\begin{verbatim}
0 0 2 2 (OX_DATA)
0 0 0 4 (CMO_STRING) 0 0 0 5 (size)
31(1) 32(2) 33(3) 34(4) 35(5)
\end{verbatim}
-//&jp OXexpression でかくと,
+//&jp OXexpression с,
//&eg In OXexpression it is represented as
(OX\_DATA, (CMO\_STRING, 7, "12345 ;")).
\end{enumerate}
-//&jp \subsubsection{グループ SMobject/Basic に属するオペレータ}
+//&jp \subsubsection{違若 SMobject/Basic 絮若}
//&eg \subsubsection{Operators in the group SMobject/Basic}
\begin{enumerate}
@@ -563,8 +703,8 @@ Each data has the following meaning.
SM_pops
\end{verbatim}
/*&jp
-operand stack より, {\it n} 個の元 ({\it obj1, obj2, $\ldots$, objn}
-を pop して捨てる.
+operand stack , {\it n} ({\it obj1, obj2, $\ldots$, objn}
+ pop .
*/
/*&eg
It requests a server to pop {\it n} and to discard elements {\it obj1, obj2,
@@ -592,10 +732,10 @@ Output: none.
int SM_setName
\end{verbatim}
/*&jp
-{\tt OperandStack} より {\it name} を pop し, つぎに{\tt OperandStack}
-より {\it obj} を pop し, それを現在の名前空間で変数 {\it name} に
-bind する. 正常終了なら 0 を, 異常終了なら -1 をもどす. TCP/IP によ
-る通信では, 異常終了の時のみ, {\tt CMO\_ERROR2} をstack へ push する.
+{\tt OperandStack} {\it name} pop , ゃ{\tt OperandStack}
+ {\it obj} pop , 憜腥咲у {\it name}
+bind . 罩e幻腟篋 0 , 医幻腟篋 -1 . TCP/IP
+篆<с, 医幻腟篋, {\tt CMO\_ERROR2} stack push .
*/
/*&eg
It requests a server to pop {\it name}, to pop {\it obj}, and to
@@ -624,10 +764,10 @@ SM_evalName
\end{verbatim}
/*&jp
-現在の名前空間で変数 {\it name} を評価する. 評価の結果 {\it
-OutputObj} をスタックへ戻す. 関数自体は正常終了なら 0 を, 異常終了な
-ら -1 をもどす. TCP/IP の場合, 異常終了の場合のみ {\tt CMO\_ERROR2}
-を stack へ push する.
+憜腥咲у {\it name} 荅箴<. 荅箴<腟 {\it
+OutputObj} 鴻帥御祉. ∽域篏罩e幻腟篋 0 , 医幻腟篋
+ -1 . TCP/IP 翫, 医幻腟篋翫 {\tt CMO\_ERROR2}
+ stack push .
*/
/*&eg
@@ -664,9 +804,9 @@ Output: none.
SM_executeFunction
\end{verbatim}
/*&jp
-スタックより {\it n} 個のデータを pop して, サーバのローカル関数{\it
-s} を実行する. エラーのときのみ {\tt CMO\_ERROR2} を stack へ push す
-る.
+鴻帥 {\it n} 若帥 pop , 泣若若∽{\it
+s} 絎茵. 若 {\tt CMO\_ERROR2} stack push
+.
*/
/*&eg
It requests a server to pop {\it s} as a function name,
@@ -689,7 +829,7 @@ Request:
\hline
\end{tabular}
-//&jp Stack after the request: 関数実行の結果.
+//&jp Stack after the request: ∽医茵腟.
//&eg Stack after the request: The Output of the execution.
Output: none.
@@ -700,10 +840,10 @@ SM_popSerializedLocalObject
\end{verbatim}
/*&jp
-スタックより pop した object を local 形式で serialization して
-OX message として stream へ出力する. OX message tag としては,
-local 形式に対応したものが定義されていることが必要である.
-この関数はおもに, homogeneous な分散システムで用いる.
+鴻帥 pop object local 綵√ serialization
+OX message stream 後阪. OX message tag ,
+local 綵√絲上絎臂綽荀с.
+∽違, homogeneous c激鴻х.
*/
/*&eg
It requests a sever to pop an object, to convert it into a
@@ -721,8 +861,8 @@ SM_popCMO
\end{verbatim}
/*&jp
-{\tt OperandStack} より object を pop し CMO 形式の serialized object を
-stream へ header {\tt OX\_DATA} をつけてながす.
+{\tt OperandStack} object pop CMO 綵√ serialized object
+stream header {\tt OX\_DATA} ゃ.
*/
/*&eg
It requests a server to pop an object from the stack, to convert
@@ -741,6 +881,52 @@ Output:
{\tt int32 OX\_DATA} & {\it Serialized CMO} \\
\hline
\end{tabular}
+
+
+\item
+\begin{verbatim}
+SM_executeFunctionWithOptionalArgument
+\end{verbatim}
+/*&jp
+鴻帥 {\it n} 若帥割ゃ optional 綣 {\it opt} pop ,
+泣若若∽{\it s} 絎茵. 若 {\tt CMO\_ERROR2} stack push
+.
+{\it opt} 若若ゃ鴻鴻с. 若若絖с.
+*/
+/*&eg
+It requests a server to pop {\it s} as a function name,
+to pop an optional argument {\it opt},
+to pop {\it n} as the number of arguments and to execute
+a local function {\it s} with {\it n} arguments popped from
+the stack.
+If an error has occurred {\tt CMO\_ERROR2} is pushed to the stack.
+{\it opt} is a list of lists of a keyword and a value.
+Keywords are strings.
+*/
+
+//&jp Stack before the request: \\
+//&eg Stack before the request: \\
+\begin{tabular}{|c|c|c|c|c|c|} \hline
+{\it objn} & $\cdots$ & {\it obj1} & {\it INT32 n} & {\it Obj opt} & {\it String s} \\
+\hline
+\end{tabular}
+
+Request:
+\begin{tabular}{|c|c|} \hline
+{\tt int32 OX\_COMMAND} & {\tt int32 SM\_executeFunctionWithOptionalArgument} \\
+\hline
+\end{tabular}
+
+//&jp Stack after the request: ∽医茵腟.
+//&eg Stack after the request: The Output of the execution.
+
+Output: none.
+
+\noindent
+Example of {\it opt} : \verb@ (("p", 13),("vars",("x","y")))@
+
+\noindent
+[Added in 2004-3-8]
\end{enumerate}