azlist=[];
var hash={}; hash["id"]="0"; hash["name"]="Console"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="CTRL-Xヒストリーの表示<br>テンプレート<br>CTRL-F現在の行にテンプレートから1文字コピーする<br>CTRL-A現在の行にテンプレートに残っている全ての文字をコピーする<br>CTRL-Eテンプレート内の1文字をスキップする<br>CTRL-W挿入モードに入る。もう1度押すと挿入モードを解除する<br>CTRL-T現在の行の内容をテンプレートにコピーする<br>CTRL-Q現在の行の先頭まで戻り最初の2文字をスキップする<br>CTRL-U現在のテンプレートより一つ古いヒストリーをテンプレートにコピーし<br>同時に現在行の最初からコピーする(CTRL-A)<br>(最初のCTRL-UはCTRL-Aと同じ)<br>CTRL-N現在のテンプレートより一つ新しいヒストリーをテンプレート<br>にコピーし同時に現在行の最初からコピーする(CTRL-A)<br><br>"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="1"; hash["name"]="consult/1"; hash["common"]=""; hash["format"]="consult(+A)"; hash["argument"]="A:ファイル名(パス指定も可)"; hash["text"]="指定されたテキストファイルからプログラムを読み込みます。<br>正確には、読み込んだものが節であればその節をプログラムに付け加えます。<br>そのときに、既に同じ述語がある場合(頭部の名前およびアリティが等しい節が既にある場合)にはその後に付け加えられます。<br>また、読み込んだものが「コマンド」又は「質問」の場合にはそれを実行します。<br>UTF-8の文字コードプログラムファイルを作成する場合、BOMを付けないでください。"; hash["reference"]="「(操)5.3.2ファイルからのプログラム入力」<br>[･･････]"; hash["sample"]="| ?-consult('test.pl').<br>yes<br><br><span style='color:#FFFF00'>カレントディレクトリよりtest.plというソースファイルを読み込みます。</span>"; hash["genre"]="1"; hash["used"]="true"; hash["incident"]="reconsult/1"; azlist.push(hash);
var hash={}; hash["id"]="2"; hash["name"]="reconsult/1"; hash["common"]=""; hash["format"]="reconsult(+A)"; hash["argument"]="A:ファイル名(パス指定も可)"; hash["text"]="consult/1と同じように指定されたテキストファイルからプログラムを読み込みます。<br>ただし、consult/1との違いは既に同じ述語がある場合にはその述語の後に新しい節が付け加えるのではなくて、古い述語の定義は消去されて新しい述語の定義に置き換えられます。<br>UTF-8の文字コードプログラムファイルを作成する場合、BOMを付けないでください。"; hash["reference"]="「(操)5.3.2ファイルからのプログラム入力」<br>[･･････]"; hash["sample"]="| ?-reconsult('robot.pl').<br>yes<br><br><span style='color:#FFFF00'>カレントディレクトリよりrobot.plというソースファイルを読み込みます。</span>"; hash["genre"]="1"; hash["used"]="true"; hash["incident"]="consult/1"; azlist.push(hash);
var hash={}; hash["id"]="3"; hash["name"]="=:=  /xfx"; hash["common"]="ISO"; hash["format"]="N1 =:= N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1とN2の双方を評価した値が等しい場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+1 =:= 2.<br>yes<br>| ?-1.0 =:= 1.<br>yes"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=¥=  /xfx<br>=/=  /xfx<br><  /xfx<br>>  /xfx<br>=<  /xfx<br>>=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="4"; hash["name"]="==  /xfx"; hash["common"]="ISO"; hash["format"]="N1 == N2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1とT2がまったく同じ項の場合に成功し、それ以外の場合は失敗します。ストリングの場合はその実体は文字コードのリストですから、もう片方がその同じリストならば成功します。"; hash["reference"]=""; hash["sample"]="| ?-abc == abc.<br>yes<br>| ?-a(1,2) == a(1,2).<br>yes<br>| ?-1+2 == 1+2.<br>yes<br>| ?-1+2 == 3.<br>no<br>| ?-1+2 == 2+1.<br>no<br>| ?-&quot;abc&quot; == [97,98,99].<br>yes<br>"; hash["genre"]="15"; hash["used"]="false"; hash["incident"]="/==  /xfx<br>¥==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="5"; hash["name"]="<  /xfx"; hash["common"]="ISO"; hash["format"]="N1 < N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1を評価した値よりN2を評価した値の方が大きい場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+1 < 3.<br>yes<br>| ?-1.0 < 2.<br>yes"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=:=  /xfx<br>=\=  /xfx<br>=/=  /xfx<br>>  /xfx<br>=<  /xfx<br>>=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="6"; hash["name"]=">  /xfx"; hash["common"]="ISO"; hash["format"]="N1 > N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1を評価した値よりN2を評価した値の方が小さい場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+1 > 1.<br>yes<br>| ?-2.0 > 1.<br>yes"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=:=  /xfx<br>=\=  /xfx<br>=/=  /xfx<br><  /xfx<br>=<  /xfx<br>>=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="7"; hash["name"]="=<  /xfx"; hash["common"]="ISO"; hash["format"]="N1 =< N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1を評価した値よりN2を評価した値の方が大きいか等しい(以上)場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+1 =< 2.<br>yes<br>| ?-1.0 =< 2.<br>yes"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=:=  /xfx<br>=\=  /xfx<br>=/=  /xfx<br><  /xfx<br>>  /xfx<br>>=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="8"; hash["name"]=">=  /xfx"; hash["common"]="ISO"; hash["format"]="N1 >= N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1を評価した値よりN2を評価した値の方が小さいか等しい(以下)場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-2+1 >= 2.<br>yes<br>| ?-2.0 >= 1.<br>yes"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=:=  /xfx<br>=\=  /xfx<br>=/=  /xfx<br><  /xfx<br>>  /xfx<br>=<  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="9"; hash["name"]="==  /xfx"; hash["common"]="ISO"; hash["format"]="T1 == T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1とT2がまったく同じ項の場合に成功し、それ以外の場合は失敗します。<br>ストリングの場合はその実体は文字コードのリストですから、もう片方がその同じリストならば成功します。"; hash["reference"]=""; hash["sample"]="| ?-abc == abc.<br>yes<br>| ?-a(1,2) == a(1,2).<br>yes<br>| ?-1+2 == 1+2.<br>yes<br>| ?-1+2 == 3.<br>no<br>| ?-1+2 == 2+1.<br>no<br>| ?-&quot;abc&quot; == [97,98,99].<br>yes"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="/==  /xfx<br>¥==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="10"; hash["name"]="==  /xfx"; hash["common"]="ISO"; hash["format"]="T1 /== T2 、T1 == T2 どちらでも同じ"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1とT2とが等しくない場合に成功し、それ以外の場合は失敗します。<br>==   /xfx とまったく反対の結果になります。<br>項の比較方法は ==   /xfx と同じです。(==   /xfx 参照)"; hash["reference"]=""; hash["sample"]="| ?-abc /== abc.<br>no<br>| ?-a(1,2) /== a(1,2).<br>no<br>| ?-1+2 /== 1+2.<br>no<br>| ?-1+2 /== 3.<br>yes<br>| ?-1+2 /== 2+1.<br>yes<br>| ?-&quot;abc&quot; /== [97,98,99].<br>no"; hash["genre"]="15"; hash["used"]="false"; hash["incident"]="==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="11"; hash["name"]="@<  /xfx"; hash["common"]="ISO"; hash["format"]="T1 @< T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1よりT2が大きい場合に成功し、それ以外の場合は失敗します。<br>以下の仕様は ver.7 以前のものと大きく異なるので注意が必要です。<br><br><項の比較方法><br>・まず、項の種類によって大小判定します。次の規則に従います。<br>  未代入の変数<実数値<整数値<アトム<複合項<br>同じ種類の項同士を比較する場合は次の規則に従います。<br><br>・未代入の変数同士の場合は変数の種類によって次の関係が有ります。<br>大域変数<局所変数<虚変数<br>同じ種類の変数は節の中で古い方が小さいと見なされます。<br>「古い方」とは原則として、より左側にある方を指します。ただし、未代入の変数同士がユニファイされている時などは事情が違ってくる事もあります。<br><br>・整数値同士、実数値同士の場合は数値比較と同じ結果になります。<br>ただし、数式の場合は評価されませんので演算子・関数子を述語名とする複合項として比較されます。<br><br>・双方がアトムの場合はまず先頭の文字同士の文字コードの大小を比べて判断します。もし等しかった場合はその次の文字同士を調べます。<br><br>・双方が複合項の場合はまずアリティ(引数の数)を調べて、アリティが多い方を大きいと判断します。もしアリティが同じだった場合は述語名のアトムを調べます。<br>さらに述語名も同じであれば、引数の比較に移ります。<br>リストはその実体であるアリティが2、述語名が「.」の複合項として扱われます。<br>さらにストリングもその実体である文字列のキャラクタコードのリストとして扱われます。"; hash["reference"]=""; hash["sample"]="| ?-2.1 @< 1.<br>yes<br>| ?-abc @< xyz.<br>yes<br>| ?-a(1,2) @< a(1,2).<br>no<br>| ?-aa1 @< aa2.<br>yes<br>| ?-aaa @< aaa.<br>no<br>| ?-234 @< 1234.<br>yes<br>| ?-'234' @< '1234'.<br>no"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>/==  /xfx<br>¥==  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="12"; hash["name"]="@=<  /xfx"; hash["common"]="ISO"; hash["format"]="T1 @=< T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1よりT2が大きいか又は等しい場合に成功し、それ以外の場合は失敗します。<br>項の比較方法は @<   /xfx と同じです。(@<   /xfx 参照)"; hash["reference"]=""; hash["sample"]="| ?-abc @=< xyz.<br>yes<br>| ?-a(1,2) @=< a(1,2).<br>yes<br>| ?-aa1 @=< aa2.<br>yes<br>| ?-aaa @=< aaa.<br>yes<br>| ?-234 @=< 1234.<br>yes<br>| ?-'234' @=< '1234'.<br>no<br>| ?-[1,2,3] @=< [3,2,1].<br>yes"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>/==  /xfx<br>==  /xfx<br>@<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="13"; hash["name"]="@>  /xfx"; hash["common"]="ISO"; hash["format"]="T1 @> T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1よりT2が小さい場合に成功し、それ以外の場合は失敗します。<br>項の比較方法は @<   /xfx と同じです。(@<   /xfx 参照)"; hash["reference"]=""; hash["sample"]="| ?-abc @> xyz.<br>no<br>| ?-a(1,2) @> a(1,2).<br>no<br>| ?-aa1 @> aa2.<br>no<br>| ?-aaa @> aaa.<br>no<br>| ?-234 @> 1234.<br>no<br>| ?-'234' @> '1234'.<br>yes<br>| ?-[1,2,3] @> [3,2,1].<br>no"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>/==  /xfx<br>==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="14"; hash["name"]="@>=  /xfx"; hash["common"]="ISO"; hash["format"]="T1 @>= T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1よりT2が小さいか又は等しい場合に成功し、それ以外の場合は失敗します。<br>項の比較方法は @<   /xfx と同じです。(@<   /xfx 参照)"; hash["reference"]=""; hash["sample"]="?-abc @>= xyz.<br>no<br>?-a(1,2) @>= a(1,2).<br>yes<br>?-aa1 @>= aa2.<br>no<br>?-aaa @>= aaa.<br>yes<br>?-234 @>= 1234.<br>no<br>?-'234' @>= '1234'.<br>yes<br>?-[1,2,3] @>= [3,2,1].<br>no"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>/==  /xfx<br>==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>compare/3"; azlist.push(hash);
var hash={}; hash["id"]="15"; hash["name"]="compare/3"; hash["common"]="ISO"; hash["format"]="compare(A,T1,T2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:大小関係を表す「&gt;」「&lt;」「=」のどれかがユニファイされる</td>    </tr>    <tr>      <td align='left'>T1・T2</td>      <td>:ストリーム値を除く項。ただし、数式は評価されない</td>    </tr>  </tbody></table>"; hash["text"]="T1とT2の大小関係を比べて、それを表す「>」「<」「=」のどれかをAにユニファイします。<br>項の比較方法は @<   /xfx と同じです。(@<   /xfx 参照)"; hash["reference"]=""; hash["sample"]="| ?-compare(A,2.1,1).<br>A = <<br>yes<br>| ?-compare(A,z,a).<br>A = ><br>yes<br>| ?-compare(A,a(1),a(1)).<br>A = =<br>yes<br>| ?-compare(A,[3,4],[1,2,3]).<br>A = ><br>yes<br>| ?-compare(A,b(1),a(1,2)).<br>A = <<br>yes"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>/==  /xfx<br>\=  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="16"; hash["name"]="assert/1"; hash["common"]="ISO"; hash["format"]="assert(+C)"; hash["argument"]="C:追加したい節になりうる項(数値とストリーム値以外の項)"; hash["text"]="引数に与えられた項Cを節としてヒープ(プログラム)領域に追加します。<br>既に同じ述語(同じ述語名とアリティの頭部を持つ節の集り)が存在していた場合にはその同じ節の何番目に追加されるかは保証されません。<br>通常は最後に追加されます。<br>節の追加は「assert/2」「asserta/1」「assertz/1」でも可能です。<br>Cが<節の書式>に当てはまらない場合はエラー(syntax error)になります。<br>※追加する節の頭部と同じ述語名とアリティを持つ「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」が既に存在する場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(述)2.4プログラム構成」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-assert(a(a)).<br>yes<br>| ?-assert(a(b)).<br>yes<br>| ?-assert((a(3,1) :- write(mno),nl)).<br>yes<br>| ?-assert((a(3,2) :- write(qrs),nl)).<br>yes<br>| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(a).                           <span style='color: #FFFF00'><== assert/1 によって追加された節</span><br>a(b).                           <span style='color: #FFFF00'><== assert/1 によって追加された節</span><br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>a(3,1) :- write(mno),nl.        <span style='color: #FFFF00'><== assert/1 によって追加された節</span><br>a(3,2) :- write(qrs),nl.        <span style='color: #FFFF00'><== assert/1 によって追加された節</span><br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="assert/2<br>asserta/1<br>assertz/1"; azlist.push(hash);
var hash={}; hash["id"]="17"; hash["name"]="assert/2"; hash["common"]="ISO"; hash["format"]="assert(+C,+I)"; hash["argument"]="C:追加したい節になりうる項(数値とストリーム値以外の項)<br>I:追加する位置(負整数も可)"; hash["text"]="引数に与えられた項Cを節としてヒープ(プログラム)領域に追加します。<br>既に同じ述語(同じ述語名とアリティの頭部を持つ節の集り)が存在していた場合にその同じ節の中の何番目に追加するかをIによって指定できます。<br>正確には現在のI番目の節とI+1番目の節の間に挿入します。<br>その結果、挿入された節はI+1番目の節となります。<br>複数の同じ述語名とアリティの頭部を持つ節の集りの途中に追加する場合に使います。<br>節の集りの最初か最後への追加は「asserta/1」「assertz/1」で可能です。<br>Cが<節の書式>に当てはまらない場合はエラー(syntax error)になります。<br>※追加する節の頭部と同じ述語名とアリティを持つ「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」が既に存在する場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(述)2.4プログラム構成」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-assert(a(a),2).<br>yes<br>| ?-assert((a(3,1) :- write(mno),nl),1).<br>yes<br>| ?-listing.<br>a(1).<br>a(2).<br>a(a).                     <span style='color: #FFFF00'><== assert/2 によって追加された節</span><br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(3,1) :- write(mno),nl.  <span style='color: #FFFF00'><== assert/2 によって追加された節</span><br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="assert/1<br>asserta/1<br>assertz/1"; azlist.push(hash);
var hash={}; hash["id"]="18"; hash["name"]="asserta/1"; hash["common"]="ISO"; hash["format"]="asserta(+C)"; hash["argument"]="C:追加したい節になりうる項(数値とストリーム値以外の項)"; hash["text"]="引数に与えられた項Cを節としてヒープ(プログラム)領域に追加します。<br>既に同じ述語(同じ述語名とアリティの頭部を持つ節の集り)が存在していた場合にはその同じ節の最初(1番目)に追加されます。<br>Cが<節の書式>に当てはまらない場合はエラー(syntax error)になります。<br>※追加する節の頭部と同じ述語名とアリティを持つ「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」が既に存在する場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(述)2.4プログラム構成」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」<br>"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-asserta(a(a)).<br>yes<br>| ?-asserta((a(3,2) :- write(qrs),nl)).<br>yes<br>| ?-listing.<br>a(a).                     <span style='color: #FFFF00'><== asserta/1 によって追加された節</span><br>a(1).<br>a(2).<br>a(3).<br>a(3,2) :- write(qrs),nl.  <span style='color: #FFFF00'><== asserta/1 によって追加された節</span><br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="assert/1<br>assert/2<br>assertz/1"; azlist.push(hash);
var hash={}; hash["id"]="19"; hash["name"]="assertz/1"; hash["common"]="ISO"; hash["format"]="assertz(+C)"; hash["argument"]="C:追加したい節になりうる項(数値とストリーム値以外の項)"; hash["text"]="引数に与えられた項Cを節としてヒープ(プログラム)領域に追加します。<br>既に同じ述語(同じ述語名とアリティの頭部を持つ節の集り)が存在していた場合にはその同じ節の最後に追加されます。<br>Cが<節の書式>に当てはまらない場合はエラー(syntax error)になります。<br>※追加する節の頭部と同じ述語名とアリティを持つ「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」が既に存在する場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(述)2.4プログラム構成」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="assert/1 の[実行例]参照"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="assert/1<br>assert/2<br>asserta/1"; azlist.push(hash);
var hash={}; hash["id"]="20"; hash["name"]="abolish/1"; hash["common"]="ISO"; hash["format"]="abolish(+A/+I) abolish(+A,+I)"; hash["argument"]="A:削除する述語の述語名<br>I:削除する述語のアリティ"; hash["text"]="引数で指定された述語名・アリティの述語(引数で指定された述語名・アリティを頭部とする定義節)のすべてをヒープ領域から削除します。<br>現在の動作モードがユーザモードの場合はユーザ述語(ユーザ側の定義節)しか削除できません。<br>システムモードの場合はユーザ述語(ユーザ側の定義節)に加えてシステム述語(システム側の定義節)が指定できます。<br>どちらの場合でも「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(操)5.11.2定義述語(システム述語とユーザ述語)」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>b(1).<br>b(2).<br>yes<br>| ?-abolish(a,1).<br>yes<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>b(1).<br>b(2).<br>yes<br>| ?-abolish(b/1).<br>yes<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="retract/1<br>retract/3<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="21"; hash["name"]="retract/1"; hash["common"]="ISO"; hash["format"]="retract(+C)"; hash["argument"]="C:削除する節の頭部とユニファイ可能な項"; hash["text"]="まず、ヒープ領域中の定義節の中からCとユニファイ可能な節をヒープ領域の先頭から探し、あればユニファイが試みられます。そしてユニファイに成功すればその節がヒープ領域中から削除されます。<br>Cの中に変数が含まれていても、その定義節の該当の値がユニファイされます。<br>この述語は非決定性ですから、その後バックトラックによって戻ってきた場合は再びCとユニファイ可能な節をヒープ領域の先頭から探し、あればユニファイが試みられます。以下同じ事を繰返します。<br>Cとユニファイ可能な節がヒープ領域に無かった(又は、無くなった)場合はこの述語は失敗します。<br>現在の動作モードがユーザモードの場合はユーザ述語(ユーザ側の定義節)しか削除できません。「システム述語」「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります<br>システムモードの場合はユーザ述語(ユーザ側の定義節)に加えてシステム述語(システム側の定義節)も削除できます。この場合でも「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(操)5.11.2定義述語(システム述語とユーザ述語)」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-retract(a(X)).<br>X = 1;<br>X = 2<br>yes<br>| ?-listing.<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-retract(a(X)).<br>X = 3;<br>no<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="abolish/2<br>retract/3<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="22"; hash["name"]="retract/3"; hash["common"]=""; hash["format"]="retract(+A,+I1,+I2)"; hash["argument"]="A:削除する述語の述語名<br>I1:削除する述語のアリティ<br>I2:削除する節の指定(上から第何番目か)"; hash["text"]="述語名AとアリティI1によって指定された述語の定義のI2番目の節をプログラムから取り除きます。<br>ただし、I2が負のときには指定された述語の定義の後ろからI2番目の節をプログラムから取り除きます。<br>どちらの場合にも該当する節が存在しないときには失敗します。<br>例外として、I2に0を指定した場合には最初の節が取り除かれます(つまり、1を指定したのと同じ)。<br>現在の動作モードがユーザモードの場合はユーザ述語(ユーザ側の定義節)しか削除できません。「システム述語」「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります。<br>システムモードの場合はユーザ述語(ユーザ側の定義節)に加えてシステム述語(システム側の定義節)も削除できます。この場合でも「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります。"; hash["reference"]="「(操)5.11.2定義述語(システム述語とユーザ述語)」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-retract(a,1,2).<br>yes<br>| ?-listing.<br>a(1).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-retract(a,2,-1).<br>yes<br>| ?-listing.<br>a(1).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="abolish/2<br>retract/1<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="23"; hash["name"]="s_new/0"; hash["common"]=""; hash["format"]="s_new"; hash["argument"]="なし"; hash["text"]="全ユーザ側定義節(全ユーザ述語)を一括削除します。<br>現在の動作モードには無関係です。<br>「システム述語」「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」は削除されません。"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-s_new.<br>yes<br>| ?-listing.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="abolish/1<br>abolish/2<br>retract/1<br>retract/3<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="24"; hash["name"]="clause/2"; hash["common"]="ISO"; hash["format"]="clause(+T1,-T2)"; hash["argument"]="T1:取り出す頭部を指定する<br>T2:取り出された本体がユニファイされる"; hash["text"]="T1とユニファイ可能な頭部を持つ節を見つけて、その節の本体をT2にユニファイします。<br>もし、その節が規則(本体を持たない節)の場合はT2に「true」をユニファイします。<br>ユーザ側定義節・システム側定義節を問わず取り出します。<br>T1の中に変数が含まれる場合は、該当の値をユニファイします。<br>この述語は非決定性ですから、バックトラックにより後戻りしてきた場合は、次の節を探します。<br>該当の節がなければこの述語は失敗します。<br>「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」は取り出せません。"; hash["reference"]="「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-clause(a(X),C).<br>X = 1,<br>C = true;<br>X = 2,<br>C = true<br>yes<br>| ?-clause(a(1,X),C).<br>X = 1,<br>C = write(abc),nl;<br>X = 2,<br>C = write(def),nl;<br>no"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="clause/3<br>clause/4"; azlist.push(hash);
var hash={}; hash["id"]="25"; hash["name"]="clause/3"; hash["common"]=""; hash["format"]="clause(+A,+I1,-I2)"; hash["argument"]="A:節の述語名<br>I1:節のアリティ<br>I2:節の個数"; hash["text"]="述語名A、アリティI1の頭部を持つ節の数をI2にユニファイします。<br>ユーザ側定義節・システム側定義節を問わず取り出します。<br>該当の節がない場合はI2に 0 をユニファイします。<br>「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合もI2に0をユニファイします。"; hash["reference"]=""; hash["sample"]="?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(4).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>?-clause(a,1,X).<br>X = 4<br>yes<br>?-clause(a,2,X).<br>X = 3<br>yes<br>?-clause(write,1,X).<br>X = 0<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="clause/2<br>clause/4"; azlist.push(hash);
var hash={}; hash["id"]="26"; hash["name"]="clause/4"; hash["common"]=""; hash["format"]="clause(+A,+I1,+I2,-C)"; hash["argument"]="A:取り出す節の述語名を指定する<br>I1:取り出す節のアリティを指定する<br>I2:取り出す節の指定(上から第何番目か)を指定する<br>C:取り出された節がユニファイされる"; hash["text"]="述語名A、アリティI1の頭部を持つ節の上からI2番目の節をCにユニファイするユーザ側定義節・システム側定義節を問わず取り出します。<br>該当の節がない場合この述語は失敗します。<br>「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」は取り出せません。"; hash["reference"]="「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-clause(a,1,1,C).<br>C = a(1)<br>yes<br>| ?-clause(a,2,2,C).<br>C = a(1,2) :- write(def),nl<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="clause/2<br>clause/3"; azlist.push(hash);
var hash={}; hash["id"]="27"; hash["name"]="=..  /xfx"; hash["common"]="ISO"; hash["format"]="?T =.. ?L"; hash["argument"]="T:分解する項を与える。又は、組立てた項がユニファイされる。<br>L:項を分解したリストがユニファイされる。又は項を組立てる為のリストを与える。"; hash["text"]="項TをリストLの要素に分解し、また逆にリストLの要素から項Tを組立てます。本述語はユニブと呼ばれています<br><br>項Tが述語表現の複合項である場合は、その述語名を第一番目の要素に、引数を二番目以降の要素にしたリストLに変換してLにユニファイします。またその逆も変換できます。<br>例)a(1,2,3) =.. [a,1,2,3]<br><br>項Tが演算子形式の場合は最も結合の優先順位の低い演算子を第一番目の要素に、その演算子の左側を第二番目の要素に、その演算子の右側を第三番目の要素とした三要素のリストに変換してLにユニファイします。またその逆も変換できます。<br>例)1*2+3*4 =.. [+,1*2,3*4]<br><br>項Tがリストの場合はピリオド「.」を第一番目の要素とし、Tの第一番目の要素を第二番目の要素に、Tの残りのリストを第三番目の要素とした三要素のリストに変換してLにユニファイします。またその逆も変換できます。<br>例)[1,2,3,4] =.. [.,1,[2,3,4]]<br><br>Tがアトムの場合はそのアトムを唯一の要素とするリストに変換してLにユニファイします。<br>例)abcd =.. [abcd]<br><br>※この述語で作った項をゴールとして用いて述語を call している節をコンパイルして作った「コンパイル済み述語」は正常に動作しない事があります。"; hash["reference"]="「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-a(1,2,3)=..X.<br>X = [a,1,2,3]<br>yes<br>| ?-X =.. [a,1,2,3].<br>X = a(1,2,3)<br>yes<br>| ?-1*2+3*4 =.. X.<br>X = [+,1*2,3*4]<br>yes<br>| ?-X =.. [+,1*2,3*4].<br>X = 1*2+3*4<br>yes<br>| ?-[1,2,3,4] =.. X.<br>X = [.,1,[2,3,4]]<br>yes<br>| ?-X =.. [.,1,[2,3,4]].<br>X = [1,2,3,4]<br>yes<br>| ?-abcd =.. X.<br>X = [abcd]<br>yes<br>| ?-X =.. [abcd].<br>X = abcd<br>yes"; hash["genre"]="17"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="28"; hash["name"]="arg/3"; hash["common"]="ISO"; hash["format"]="arg(+I,+T1,-T2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>I</td>      <td>:T1の第何番目の引数かを整数で指定<br>        1 ≦ I ≦ (T1のアリティ)</td>    </tr>    <tr>      <td align='left'>T1</td>      <td>:引数の値を取り出したい複合項</td>    </tr>    <tr>      <td align='left'>T2</td>      <td>:T1のI番目の引数の値がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="T1のI番目の引数の値をT2にユニファイします。<br>ただし、Iは1 ≦ I ≦ (T1のアリティ)の範囲にないときは失敗します。<br>リストは第1番目の要素とそれ以降の要素を引数とするアリティが2の複合項と見なされます。<br>T1が数式の場合は結合の優先順位の最も低い演算子の左と右を引数とするアリティが2の複合項と見なされます。"; hash["reference"]=""; hash["sample"]="| ?-arg(1,a(1,2,3),X).<br>X = 1<br>yes<br>| ?-arg(2,a(1,2,3),X).<br>X = 2<br>yes<br>| ?-arg(4,a(1,2,3),X).<br>no<br>| ?-arg(1,[1,2,3],X).<br>X = 1<br>yes<br>| ?-arg(2,[1,2,3],X).<br>X = [2,3]<br>yes<br>| ?-arg(3,[1,2,3],X).<br>no<br>| ?-arg(1,1*2+3*4,X).<br>X = 1*2<br>yes<br>| ?-arg(2,1*2+3*4,X).<br>X = 3*4<br>yes<br>| ?-arg(3,1*2+3*4,X).<br>no"; hash["genre"]="17"; hash["used"]="true"; hash["incident"]="=..  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="29"; hash["name"]="call/1"; hash["common"]="ISO"; hash["format"]="call(+T)　X・・・値Tを持つ変数。未代入の変数は許されない。"; hash["argument"]="T:ゴールとなりうる項。"; hash["text"]="項Tとユニファイ可能な頭部を持った述語を呼出します。<br>通常は項T(又はその値を持つ変数)を直接ゴールとして書く事が許される為call/1 を使う意味は有りません。<br>今、次のようなプログラムをコンパイルして、実行しようとした場合、=..で作った項をcallしようとしてもfailします。<br>a:-A=..[b,X],call(A).<br>b(1).<br>この場合は<br>:-public b/1.<br>の宣言が必要です。"; hash["reference"]="「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」"; hash["sample"]="| ?-X=true,call(X).<br>X=true<br>yes<br>| ?-X=true,X.<br>X=true<br>yes"; hash["genre"]="17"; hash["used"]="true"; hash["incident"]="true/0"; azlist.push(hash);
var hash={}; hash["id"]="30"; hash["name"]="s_sort/2"; hash["common"]=""; hash["format"]="s_sort(+T,-A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>T:</td>      <td nowrap>調べたい述語とユニファイ可能なアトム又は複合項<br>      複合項の引数は数さえ合っていれば、値は関係無いので匿名変数で埋めても良い</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A:</td>      <td nowrap>Tとユニファイ可能な述語が存在すればその種類を次のアトムで返される<br>        「builtin」･･･「標準組み込み述語」「コンパイル組み込み述語」「Cリンク組み込み述語」のいずれか<br>        「system」･･･システム述語<br>      「user」･･････ユーザ定義述語</td>    </tr>  </tbody></table>"; hash["text"]="Tとユニファイ可能な述語が存在すればその種類を表すアトムをAにユニファイします。<br>そのような述語が存在しない場合には失敗します。"; hash["reference"]="「(操)5.11定義述語の種類」<br>"; hash["sample"]="<span style='color: #FFFF00'>いま、a/1 というユーザ定義述語であり、<br>b/1 というシステム述語がヒープ領域に登録されているとすると・・・</span><br>| ?-s_sort(a(_),X).<br>_ = _,<br>X = user<br>yes<br>| ?-s_sort(write(_),X).<br>_ = _,<br>X = builtin<br>yes<br>| ?-s_sort(b(_),X).<br>_ = _,<br>X = system<br>yes<br>| ?-s_sort(c(_),X).<br>no"; hash["genre"]="17"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="31"; hash["name"]="functor/3"; hash["common"]="ISO"; hash["format"]="functor(?T,?A・I1,?I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>T</td>      <td>:調べたい項を入力するか、組立てられた複合項、又はアトムか整数値がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>A・I1</td>      <td>:Tが複合項の場合はその複合項の述語名(ファンクタ名)がユニファイされる<br>        Tがアトムか整数値の場合はそのアトムか整数値がそのままユニファイされる<br>        Tが未代入の変数でかつI2が0の場合、ここにアトムか整数値を入力すると<br>        Tにそのアトムか整数値がそのままユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>I2</td>      <td>:Tが複合項の場合はその複合項のアリティがユニファイされる<br>        Tがアトムか整数値の場合は0がユニファイされる<br>        ここに0を入力すると、アトムか整数値に限ってTとA・I1が双方向にユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="「複合項」とその「述語名とアリティ」間で双方向にユニファイします。<br>つまり、Tに「複合項」が入力されるとその「述語名とアリティ」をそれぞれAとI2に出力し、逆にAとI2それぞれに「述語名とアリティ」が入力されるとその「複合項(引数は未代入の変数になる)」を出力します。<br>また、Tがアトムか整数値が入力されると、そのアトムか整数値をA・I1にそのままユニファイし、I2には0をユニファイします。<br>その逆にA・I1にアトムか整数値、I2に0が入力されると、そのアトムか整数値をTにそのままユニファイします。<br>Tが未代入の変数である場合、A・I1かI2のどちらか一方でも未代入の変数である事は許されません。(エラー{Illegal argument supplied}になります)"; hash["reference"]=""; hash["sample"]="| ?-functor(a(1,2),F,I).<br>F = a,<br>I = 2<br>yes<br>| ?-functor(T,a,2).<br>T = a(A_6,B_6)        <span style='color: #FFFF00'><==複合項の引数は変数になります。変数名は不定</span><br>yes<br>| ?-functor(abc,F,I).<br>F = abc,<br>I = 0<br>yes<br>| ?-functor(123,F,I).<br>F = 123,<br>I = 0<br>yes<br>| ?-functor(abc,F,0).<br>F = abc<br>yes<br>| ?-functor(123,F,0).<br>F = 123<br>yes<br>| ?-functor(1.23,F,0).<br>F = 1.23000000000000<br>yes<br>| ?-functor(T,abc,0).<br>T = abc<br>yes<br>| ?-functor(T,123,0).<br>T = 123<br>yes<br>| ?-functor(T,1.23,0).<br>T = 1.23000000000000<br>yes<br>| ?-functor(T,1.23,N).  <span style='color: #FFFF00'><==エラーになります。</span><br>Illegal Argument supplied ----- Backtrace<br>functor(T,1.23000000000000,N) <br>| ?-"; hash["genre"]="17"; hash["used"]="true"; hash["incident"]="=..  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="32"; hash["name"]="atom/1"; hash["common"]="ISO"; hash["format"]="atom(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tがアトムの場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合アトムではないので失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-atom(abc).<br>yes<br>| ?-atom(123).<br>no<br>| ?-atom(1.23).<br>no<br>| ?-atom([a,b,c]).<br>no<br>| ?-atom(X).<br>no<br>| ?-X=abc,atom(X).<br>X = abc<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="33"; hash["name"]="atomic/1"; hash["common"]="ISO"; hash["format"]="atomic(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tがアトムか又は数値の場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論アトムでも、整数値でもないので失敗します。<br><br>ver.7以前と仕様が異なりますので注意してください。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="?-atomic(abc).<br>yes<br>?-atomic(123).<br>yes<br>?-atomic(1.23).<br>yes<br>?-atomic([a,b,c]).<br>no<br>?-atomic(X).<br>no<br>?-X=abc,atomic(X).<br>X = abc<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="34"; hash["name"]="float/1  (1)"; hash["common"]="ISO"; hash["format"]="float(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tが実数の場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合実数ではないので失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-float(abc).<br>no<br>| ?-float(123).<br>no<br>| ?-float(1.23).<br>yes<br>| ?-float([a,b,c]).<br>no<br>| ?-float(X).<br>no<br>| ?-X=1.23,float(X).<br>X       = 1.23000000000000<br>yes<br>| ?-"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]="float/1  (2)"; azlist.push(hash);
var hash={}; hash["id"]="35"; hash["name"]="integer/1 (1)"; hash["common"]="ISO"; hash["format"]="integer(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tが整数の場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合整数ではないので失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-integer(abc).<br>no<br>| ?-integer(123).<br>yes<br>| ?-integer(1.23).<br>no<br>| ?-integer([a,b,c]).<br>no<br>| ?-integer(X).<br>no<br>| ?-X=123,integer(X).<br>X = 123<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]="integer/1 (2)"; azlist.push(hash);
var hash={}; hash["id"]="36"; hash["name"]="number/1"; hash["common"]="ISO"; hash["format"]="number(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tが数値(実数又は整数)の場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合、数値ではないので失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-number(abc).<br>no<br>| ?-number(123).<br>yes<br>| ?-number(1.23).<br>yes<br>| ?-number([a,b,c]).<br>no<br>| ?-number(X).<br>no<br>| ?-X=1.23,number(X).<br>X = 1.23000000000000<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="37"; hash["name"]="list/1"; hash["common"]=""; hash["format"]="list(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tがリストの場合のみ成功します。それ以外は失敗します。<br>ただし、空リスト「[]」は文法的にはリストでなくアトムなので失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合リストではないので失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-list(abc).<br>no<br>| ?-list(123).<br>no<br>| ?-list(1.23).<br>no<br>| ?-list([a,b,c]).<br>yes<br>| ?-list(X).<br>no<br>| ?-X=[a,b,c],list(X).<br>X = [a,b,c]<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="38"; hash["name"]="var/1"; hash["common"]="ISO"; hash["format"]="var(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tが未代入の変数の場合のみ成功します。<br>それ以外は失敗します。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-var(abc).<br>no<br>| ?-var(123).<br>no<br>| ?-var(1.23).<br>no<br>| ?-var([a,b,c]).<br>no<br>| ?-var(X).<br>X=X<br>yes<br>| ?-X=abc,var(X).<br>no"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="39"; hash["name"]="nonvar/1"; hash["common"]="ISO"; hash["format"]="nonvar(+T)"; hash["argument"]="T:調べたい項<br>入力引数だが未代入の変数でもエラーにはならない"; hash["text"]="Tが未代入の変数の場合にのみ失敗します。それ以外は成功します。<br>つまり、\\+ var(+T) とまったく同じです。"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-nonvar(abc).<br>yes<br>| ?-nonvar(123).<br>yes<br>| ?-nonvar(1.23).<br>yes<br>| ?-nonvar([a,b,c]).<br>yes<br>| ?-nonvar(X).<br>no<br>| ?-X=abc,nonvar(X).<br>X = abc<br>yes"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="40"; hash["name"]="name/2"; hash["common"]=""; hash["format"]="name(?A・N,?L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A・N</td>      <td>:「文字コードリスト」に変換したい「アトム又は数値」を指定する(ただし、数式を指定する事は許されない。<br>        又は「文字コードリスト又はストリング」から変換された「アトム又は数値」がユニファイされる。</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>:「アトム又は数値」に変換したい「文字コードリスト又はストリング」を指定する。<br>        又は「アトム又は数値」から変換された「文字コードリストがユニファイされる。</td>    </tr>  </tbody></table>"; hash["text"]="漢字などの多バイト（全角）文字を含むアトムを変換した場合に返される文字コードリストの要素は、現在の漢字モードによって次の様に異なります。<br><br><漢字モードがonの場合><br>一文字分の漢字コード(多バイト)を32ビット整数とした値(10進表現)を返される文字コードリストの1要素とします。<br>例)漢字 というアトムを変換すると [35519,36506] となります。（Windows）<br><br><br><漢字モードがoffの場合><br>一文字分の漢字コード(多バイト)をバイト単位に分割してそれぞれを32ビット整数の下位8ビットとした値(10進表現)を返される。<br>文字コードリストの2要素とします。つまり、漢字1文字で2要素となります。(Prolog-KABAと同じ)<br>例)「漢字」というアトムを変換すると [138,191,142,154] となります。（Windows）<br><br>数値の場合もその数字列のコードの並びを要素とするリストに変換します。<br>2バイト文字のコードリストからアトム・数値に変換する場合は、漢字モードには関係無く、上の「1文字1要素表現」、「1文字2要素表現」どちらでも書く事が出来ますし結果も同じになります。<br>ストリングの場合は「&quot; &quot;」で囲った文字列がそのままアトム・数値に変換されます。この際の文字列はアトムとして許されないような文字列でも構いません。<br>また、変換した結果が数値として認められるような文字列の場合は数値となります。<br>したがってこの述語では変換した結果が数値として認められるような文字列をアトムにする事はできません。<br>引数のAにアトム・数値以外、又はLにリスト以外の項を与えるとエラー(Illegal argument supplied)になります。"; hash["reference"]="「(操)5.8日本語処理と漢字モード」<br>「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-name('Panda',X).<br>X       = [80,97,110,100,97]<br>yes<br>| ?-name(123,X).<br>X       = [49,50,51]<br>yes<br>| ?-kanji_mode(X,X).      <span style='color: #FFFF00'><== 漢字モードがonである事を確認します。</span><br>X       = on<br>yes<br>| ?-name(漢字,X).<br>X       = [35519,36506]<br>yes<br>| ?-name(X,[35519,36506]),atom(X).<br>X       = 漢字<br>yes<br>| ?-kanji_mode(_,off).    <span style='color: #FFFF00'><== 漢字モードがoffに切換えます。</span><br>_0      = on<br>yes<br>| ?-name(漢字,X).<br>X       = [138,191,142,154]<br>yes<br>| ?-name(X,[80,97,110,100,97]),atom(X).<br>X       = Panda<br>yes<br>| ?-name(X,[138,191,142,154]),atom(X).<br>X       = 漢字<br>yes<br>| ?-name(X,&quot;ﾐｶﾝ ﾄ ﾘﾝｺﾞ&quot;),atom(X).<br>X       = ﾐｶﾝ ﾄ ﾘﾝｺﾞ<br>yes<br>| ?-name(X,&quot;1.2&quot;),float(X).<br>X       = 1.20000000000000<br>yes<br>| ?-"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="kanji_mode/2<br>atom_codes/2<br>number_codes/2"; azlist.push(hash);
var hash={}; hash["id"]="41"; hash["name"]="term_atom/2"; hash["common"]=""; hash["format"]="term_atom(?T,?A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>T:</td>      <td width=&quot;454&quot; nowrap>アトムに変換したい項を指定する。又はアトムから変換された項がユニファイされる。</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A:</td>      <td nowrap>項に変換したいアトムを指定する。又は項から変換されたアトムがユニファイされる。</td>    </tr>  </tbody></table>"; hash["text"]="項とアトムを相互(双方向)に変換します。<br><br>つまり、<br>a(X) ←→ 'a(X)'{複合項 ←→ アトム}<br>1234 ←→ '1234'{数値 ←→ アトム}<br><br>などの変換が可能です。<br><br>・第1引数は項または変数、第2引数はアトム(65,535文字以内)または変数をそれぞれあてはめます。<br>・複合項をアトムに変換した結果、そのアトムのバイト数が65,53バイトを越えた場合は失敗します。<br>・変換しようとする複合項に値が定まってない変数が含まれているか、変換しようとするものが値が定まってない変数そのものであるとき、その変数名は保証されません。(アトムになった時に変数名が変ります)<br>・複合項になったとき不完全(括弧の数が合わないなど)になるようなアトムを複合項に変換しようとした場合はエラー(Syntax error)になります。<br>"; hash["reference"]="「(述)2.2トークン(データ構成)」"; hash["sample"]="| ?-term_atom(X,'123'),integer(X).<br>X = 123<br>yes<br>| ?-term_atom(a(X),'a(123)').<br>X = 123<br>yes<br>| ?-term_atom(X,'a(').<br>syntax error<br>| ?-term_atom(123,X),atom(X).<br>X = 123<br>yes<br>| ?-term_atom(aaa,X).<br>X = aaa<br>yes"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="42"; hash["name"]="atom_append/3"; hash["common"]=""; hash["format"]="atom_append(+A1,+A2,-A3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A1,A2</td>      <td>:結合するアトム</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:A1とA2を結合したアトム</td>    </tr>  </tbody></table>"; hash["text"]="A1とA2のアトムを結合したアトムをA3にユニファイします。<br><br>結合したアトムの大きさが65,535バイトより大きくなる時は失敗します。<br>次の定義と同義です。<br><br>atom_append(A,B,C) :- name(A,L1),name(B,L2),<br>　　　　　　　　　　  append(L1,L2,L3),!,name(C,L3)."; hash["reference"]=""; hash["sample"]="| ?-atom_append(abc,def,X).<br>X = abcdef<br>yes"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2"; azlist.push(hash);
var hash={}; hash["id"]="43"; hash["name"]="atom/2"; hash["common"]=""; hash["format"]="atom(+A,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:長さを調べたいアトム</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:Aの長さ(文字数)がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="Aの長さ(文字数)をIにユニファイします。<br>kanji_modeがonのときには、漢字等でない1バイト文字は1文字として数えられ、kanji_modeがoffのときには、多バイト文字はそのバイト数の文字として数えられます。ISOのatom_length/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-atom(abc,X).<br>X       = 3<br>yes<br>| ?-atom(あいう,X).<br>X       = 3<br>yes<br><br>| ?-kanji_mode(_,off).<br>_0      = on<br>yes<br>| ?-atom(あいう,X).<br>X       = 6<br>yes<br>| ?-"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="atom_length/2<br>kanji_mode/2"; azlist.push(hash);
var hash={}; hash["id"]="44"; hash["name"]="length/2"; hash["common"]=""; hash["format"]="length(+L,-I) or length(?L,+I)"; hash["argument"]="L:要素数を調べたいリスト<br>I:Lの要素数がユニファイします"; hash["text"]="Lの要素数をIにユニファイします。<br>要素数を指定した場合、その要素数のリストを返します。<br><br><br>※リストの尾部が [] で終了していない場合は結果は保証されません。<br>   特に環リストになっている場合は無限ループに陥って終了しなくなります。<br><br>?-A=[a|A],length(A,Z)."; hash["reference"]=""; hash["sample"]="| ?-length([a,b,c],X).<br>X = 3<br>yes<br><br>| ?-length(L,2).<br>L = [_1,_2]<br>yes<br>"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="45"; hash["name"]="!/0"; hash["common"]="ISO"; hash["format"]="!"; hash["argument"]="なし"; hash["text"]="「カットオペレータ」又は「カット」と呼ばれ、ある同じ述語名、アリティの頭部を持つ節の集りである述語のなかで、このカットを最初に実行したときは必ず成功しますが、バックトラックによって後戻りしてきた場合にはこの述語は必ず失敗します。<br>つまり、カットの左側に別の可能性を持ったゴールが在ってもその可能性は試みられません。<br>通常カットの有効範囲はその述語内だけです。<br>つまり、ある述語にカットがあるとカットまでバックトラックによって後戻りしてきた場合にその述語を失敗します。<br>ただし、 ¥&quot; , ¥&quot; ゴールゴール(列)を引き数とする組込述語 call,errorset,catchなどの中ではそのゴール(列)の範囲内でカットは有効です。<br>これらの範囲を超えて制御を行いたいときには catch/2 throw/1 をお勧めします。"; hash["reference"]=""; hash["sample"]="a :- a(X),write(X),nl,fail.<br>a.<br>a(1).<br>a(2).<br>a(3).<br>b :- b(X),!,write(X),nl,fail.<br>b.<br>b(1).<br>b(2).<br>b(3).<br><br><span style='color:#FFFF00'>このaとbの述語の違いはカットの有無だけです。<br>これらを実行してみると、次の様になります。</span><br>| ?-a.<br>1<br>2<br>3<br>yes<br>| ?-b.<br>1<br>no<br><span style='color:#FFFF00'>aを実行すると最後のfailでバックトラックしてきた時に<br>a/1に別の可能性があるので試し次の値をXにユニファイし<br>次々とwrite/1で画面に出力します。<br>a/1の別の可能性が無くなると、aの次の節とマッチして成功して終ります。<br>他方、bは最初、aと同じ様に b/1 の一つ目の節とマッチし、<br>Xに1をユニファイして、カットを実行後、 write/1 で画面に出力しますが、<br>最後のfailでバックトラックしてきた時に、<br>b/1 の別解を探す事なく、bの次の節にも行かずにbがそのまま 失敗します。</span>"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="46"; hash["name"]="->  /xfy"; hash["common"]="ISO"; hash["format"]="C1 -> C2;C3、C1 -> C2"; hash["argument"]="C1,C2,C3はどれもゴール又はゴールの並びとする"; hash["text"]="C1の実行が成功した時C2を実行し、失敗した時C3を実行します。<br>a :- b -> c;d.<br>と<br>a :- b,!,c.<br>a :- d.<br>は全く等価です。<br>つまり、b に他の可能性が有り c や d 以降からバックトラックしてきても、b の他の可能性は試されずに a が失敗します。<br>この2通りの書き方のどちらを使うかはプログラマの自由てすが、後者の方がよりProlog的な書き方であると言えます。<br>また、-> を多用するとプログラムの動きが分りにくくなり、プログラムの保守性が悪くなる恐れもあります。<br>なお、C1 -> C2 は C1 -> C2;fail と等価です。"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>a(X) :-<br>    (X=:=0->write(a1);write(a2)).<br>b :-<br>    (b(X),write(X)->write(bbbb),nl),<br>    fail.<br>b(1).<br>b(2).<br>b(3).<br>yes<br>| ?-a(0).<br>a1<br>yes<br>| ?-a(1).<br>a2<br>yes<br>| ?-b.<br>1bbbb<br>no    <span style='color: #FFFF00'><==最後の fail によって後戻りしてきても<</span><br>         <span style='color: #FFFF00'>b/1の別の可能性は試されないまま失敗します</span><br>"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="fail/0<br>!/0"; azlist.push(hash);
var hash={}; hash["id"]="47"; hash["name"]="; /xfy"; hash["common"]="ISO"; hash["format"]="C1;C2"; hash["argument"]="C1、C2:共にゴールまたはゴールの並び"; hash["text"]="C1、C2のどちらかが成功すれば成功します。<br>正確には次の様な動きをします。<br>まずC1の実行に成功した場合はC2は実行されず、C2以降の実行に移ります。<br>そしてC2以降のゴールの実行に失敗しバックトラック(後戻り)してきたときにC1にオルタネィティブがない(他の可能性がない)場合はC2が実行されます。<br>(ただし、C1か、C2と失敗したゴールの間にカット「! /0」が含まれる場合C2は実行されずにその述語が失敗します)<br>C1が失敗するとすぐC2が試されます。<br>また、例えば<br>a :- b;c.<br>と<br>a :- b.<br>a :- c.<br>は等価です。<br>この2通りの書き方のどちらを使うかはプログラマの自由てすが、後者の方がよりProlog的な書き方であると言えます。<br>また、「->」と同様に「;」を多用するとプログラムの動きが分りにくくなりプログラムの保守性が悪くなる恐れもあります。"; hash["reference"]=""; hash["sample"]="| a(X) :- (true ;write(aaaaa)),X =:= 0.   節が定義されているとすると<br>| ?-a(0).    <span style='color: #FFFF00'><== true が成功するので write(aaaaa) を実行せず、X =:= 0を試して</span><br>yes　　　　　　　　<span style='color: #FFFF00'>成功するのでa/1も成功する。</span><br>| ?-a(1).    <span style='color: #FFFF00'><== true が成功するので write(aaaaa) を実行せず、X =:= 0を試すが</span><br>aaaaano            <span style='color: #FFFF00'>失敗するので後戻りして write(aaaaa) を実行し、再度 X =:= 0</span><br>| ?-               <span style='color: #FFFF00'>を試すが状況が変わらず失敗するのでa/1も失敗する。</span>"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="!/0<br>->  /xfy<br>"; azlist.push(hash);
var hash={}; hash["id"]="48"; hash["name"]="\+  /fy"; hash["common"]="ISO"; hash["format"]="\+ C"; hash["argument"]="C:共にゴールまたはゴールの並び<br>ただし、ゴールの並びの場合はその並びを「()」で括ること"; hash["text"]="Cの成功・失敗を反転します。<br>つまり、Cが成功すると失敗させ、Cが失敗すると成功させます。<br>また、<br>a(X) :- \+ X.<br>と<br>a(X) :- X,!,fail.<br>a(_).<br>は等価です。"; hash["reference"]=""; hash["sample"]="| ?-(\+ fail).<br>yes<br>| ?-(\+ true).<br>no<br><br>| a(1).<br>| a(2).<br>| a(3).<br>| ?- \+((a(X),write(X),fail)).<br>123<br>X       = X<br>yes"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="!/0<br>fail/0<br>"; azlist.push(hash);
var hash={}; hash["id"]="49"; hash["name"]="true/0"; hash["common"]="ISO"; hash["format"]="TRUE"; hash["argument"]="なし"; hash["text"]="常に必ず成功します。<br>ただし、決定性述語ですから成功するのは最初の1回だけでバックトラックしてきても、再び成功する事は有りません。<br>従って通常は節のゴールとして書いてもあまり意味が有りません。<br>代表的な使い方はif~then~制御で<br>X -> Y;true<br>と書いておくと、Xが成功した時のみYを実行し、Xが失敗しても何もせずに成功させるという事が出来ます。<br>"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>a(X) :-<br>    (X=:=0->write(aaaa);true).<br>yes<br>| ?-a(0).<br>aaaa<br>yes<br>| ?-a(1).<br>yes"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="->  /xfy<br>call/1<br>"; azlist.push(hash);
var hash={}; hash["id"]="50"; hash["name"]="fail/0"; hash["common"]="ISO"; hash["format"]="fail"; hash["argument"]="なし"; hash["text"]="常に必ず失敗します。<br>主に失敗させる事によって強制的にバックトラックを起こし別解を求める時に使います。<br>repeat/0 と合せて無限ループを構成する事が出来ます。"; hash["reference"]=""; hash["sample"]="a :- a(X),write(X),nl,fail.<br>a.<br>a(1).<br>a(2).<br>a(3).<br>yes<br>| ?-a.                     <span style='color: #FFFF00'><==プログラムを実行すると、a/1 の全解が得られます。</span><br>1<br>2<br>3<br>yes<br><br>b :- repeat,write(b),fail.  <span style='color: #FFFF00'><==これは無限ループの例です。</span><br>| ?-b. <br>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br>bbbbbbbbbbbbbbbbbbbbb･･･････"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="repeat/0<br>repeat/1"; azlist.push(hash);
var hash={}; hash["id"]="51"; hash["name"]="repeat/0"; hash["common"]="ISO"; hash["format"]="repeat"; hash["argument"]="なし"; hash["text"]="何回でも成功する述語です。<br>つまりこの述語以降でゴールが失敗して後戻りしてきた時、何回でも成功します。"; hash["reference"]=""; hash["sample"]="b :- repeat,write(b),fail.  <span style='color: #FFFF00'><==これは無限ループの例です。</span><br>| ?-b. <br>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br>bbbbbbbbbbbbbbbbbbbbb･･･････<br><br><br><br>type(F) :- see(F),repeat,get0(X),ttyput(X),X=:=26,seen.<br>yes              <span style='color: #FFFF00'>任意のテキストファイルを一文字単位で入力して画面に出力する。</span><br>                 <span style='color: #FFFF00'>ファイルの「end of file」(ｷｬﾗｸﾀｺｰﾄﾞ:26とする)を読み込むまで</span><br>                 <span style='color: #FFFF00'>一文字単位の入出力を繰返すために repeat が用いられている。</span><br><br>| ?-type('abc.txt').      <br>abcdefghijklmnopqrstuvwxyz<br>yes"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="fail/0<br>repeat/1<br>once/1"; azlist.push(hash);
var hash={}; hash["id"]="52"; hash["name"]="repeat/1"; hash["common"]=""; hash["format"]="repeat(-I)"; hash["argument"]="I:バックトラック(後戻り)によって成功した回数がユニファイされる"; hash["text"]="何回でも成功する述語です。(Iが未代入の変数の場合)<br>つまり、この述語以降でゴールが失敗してバックトラック(後戻り)してきた時、何回でも成功します。<br>repeat/0  との違いはバックトラックによって成功した回数を引数にユニファイする点です。<br>これにより回数を限定した繰返し処理が可能です。"; hash["reference"]=""; hash["sample"]="| ?-repeat(I),write(I),nl,I=:=10.<br>0<br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>I = 10<br>yes"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="fail/0<br>repeat/0<br>once/1"; azlist.push(hash);
var hash={}; hash["id"]="53"; hash["name"]="catch/2"; hash["common"]=""; hash["format"]="catch(+A・I,+C)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A・I</td>      <td>:識別タグをアトムか整数で指定</td>    </tr>    <tr>      <td align='left' valign='top'>C</td>      <td>:呼出すゴールを指定</td>    </tr>  </tbody></table>"; hash["text"]="Cで呼出された節又はその節から呼出されたそれ以下のレベルの節にあるA・Iで指定された識別タグと同じ識別タグを引数に持つ throw/1 が実行されると一気にこの catch/2 まで制御が戻されます。<br>ただし、同じ識別タグを持つ catch/2 が途中のレベルにあるとそこまでしか戻りません。<br>また、一旦、catch/2 まで制御が戻されるとCに別の可能性(選択肢)があってもそれを試す(実行する)事はしません。<br>(決定性述語になります)<br>この実行制御の方法はAZ-Prolog独自のものですら、Prologの入門書などには出てきません。<br>そのため動きを理解するのに少々難しいかもしれません。<br>そこでデバッグモードのトレースを用いると比較的容易に理解出来ます。"; hash["reference"]=""; hash["sample"]="| a:- catch(a,go(X)).<br>| go(X):- repeat,read(X),do(X),fail.<br>| do(exit):- throw(a).<br>| do(X):- write(X).<br>| ?-a.<br>|: bb.<br>bbbbbb|:<br>|:<br>|: exit.<br>yes<br>| ?-"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="throw/1"; azlist.push(hash);
var hash={}; hash["id"]="54"; hash["name"]="throw/1"; hash["common"]=""; hash["format"]="throw(+A・I)"; hash["argument"]="A・I:戻りたい catch/2 の識別タグを指定"; hash["text"]="この述語がある節を呼びたした節又はそれ以上のレベルの節を呼出した catch/2 の中でA・Iで指定した識別タグと同じ識別タグを持つ catch/2 まで一気に戻ります。<br>その様な catch/2 が複数個ある場合は最も近いレベルの catch/2 まで戻ります。<br>もし、その様な catch/2 が存在しない場合はエラー(Illegal catch tag)となります。"; hash["reference"]=""; hash["sample"]="catch/2 の[実行例]参照"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="catch/2"; azlist.push(hash);
var hash={}; hash["id"]="55"; hash["name"]="abort/0"; hash["common"]=""; hash["format"]="abort"; hash["argument"]="なし"; hash["text"]="処理を中止してトップレベルに戻します。画面には abort と表示されます。<br>オープンされていたファイルはすべてクローズされ、現在の入出力ストリームは「user」に切換えられます。<br>この述語が実行されてもブレークレベルは変化しません。<br>なお、abort はエラー番号255のシステムエラー(abort/0 code)と同等です。<br>従って、errorset で捕まえる事が出来ます。"; hash["reference"]=""; hash["sample"]="| ?-tell(test1),write(aaaaaaaaaa),abort.<br>| ?-telling(X).         <span style='color: #FFFF00'><==abort が　画面表示されません。要確認。</span><br>X       = user<br>yes<br>| ?-errorset(abort,E).<br>E       = 255<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="errorset/2"; azlist.push(hash);
var hash={}; hash["id"]="56"; hash["name"]="break/0"; hash["common"]=""; hash["format"]="break"; hash["argument"]="なし"; hash["text"]="実行を保留して、インタ-プリタは別のコマンドレベルに移行します。これをブレークレベルといいます。<br>ブレークレベルでの実行中に再び別のブレークをすることもできます。<br>現在のブレークレベルまでに重なっているブレークレベルの数がプロンプト(?-)の上の行に表示されます。<br>abort/0 とは異なり、unbreak/0,unbreak/1 によって実行を再開することができます。<br>また、実行を中断したまま別の(あるいは同じ)プログラムを走らせることができます。<br>この場合、その中でも、もう一度break/0 を使うこともできます。"; hash["reference"]="「(操)5.5.1インタープリタの実行の中断(ブレークレベル)」<br>"; hash["sample"]="| ?-write(aaa),nl,X=bbb,break,write(X),nl.<br>aaa<br>[1]<br>| ?-unbreak.<br>bbb<br>X = bbb<br>yes<br><br><span style='color: #FFFF00'>この例は先ず write(aaa),nl で aaa を表示し変数 X に bbb をユニファイ(代入)し、<br>次の break で別のコマンドレベルにします。<br>そのレベルでunbreakを実行すると処理が break の直後から再開されて <br>break以前に X に代入された bbb が write(X),nl で表示された事を示しています。<br>つまり、実行再開のための実行順序や変数の値がすべて保存されている事を示しています。</span>"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="abort/0<br>unbreak/0<br>unbreak/1<br>"; azlist.push(hash);
var hash={}; hash["id"]="57"; hash["name"]="unbreak/0"; hash["common"]=""; hash["format"]="unbreak"; hash["argument"]="なし"; hash["text"]="break/0 によって中断された実行を再開します。<br>詳細は break/0 を参照して下さい。"; hash["reference"]="「(操)5.5.1インタープリタの実行の中断(ブレークレベル)」<br>"; hash["sample"]="| ?-write(aaa),nl,X=bbb,break,write(X),nl.<br>aaa<br>[1]<br>| ?-unbreak.<br>bbb<br>X = bbb<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="abort/0<br>break/0<br>unbreak/1"; azlist.push(hash);
var hash={}; hash["id"]="58"; hash["name"]="unbreak/1"; hash["common"]=""; hash["format"]="unbreak(+I)"; hash["argument"]="I:相対レベルを指定"; hash["text"]="現在のブレークレベル数からIを引いたブレークレベルのプログラムの実行を再開します。よって、Iが1の時は unbreak と全く同じように動作します。<br>現在のブレークレベルと、そこからIを引いたブレークレベルの間の中断されている実行はキャンセルされます。<br>(二度と実行の再開はできません)。<br>また、Iに0又は現在のレベル数以上の数値を設定すると、すべての中断されている実行がキャンセルされます。"; hash["reference"]="「(操)5.5.1インタープリタの実行の中断(ブレークレベル)」<br>"; hash["sample"]="| ?-break,write(aaa).<br>[1]<br>| ?-break,write(bbb).<br>[2]<br>| ?-break,write(ccc).<br>[3]<br>| ?-break,write(ddd).<br>[4]<br>| ?-break,write(eee).<br>[5]<br>| ?-unbreak(3).<br>ccc<br>yes<br>[2]<br>| ?-<br><br>   <span style='color: #FFFF00'>この例ではブレークを次々にかけて現在のブレークレベルを5としました。<br>   そこで unbreak(3) を実行すると5-3でブレークレベル2の実行を再開して、<br>    write(ccc) が実行されて、ccc が表示された事を示しています。<br>   また、この場合、ブレークレベル3と4(つまり、write(ddd)とwrite(eee))は<br>   キャンセルされるため、これらの実行再開は不可能となります。</span>"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="abort/0<br>break/0<br>unbreak/0"; azlist.push(hash);
var hash={}; hash["id"]="59"; hash["name"]="manual/1"; hash["common"]=""; hash["format"]="manual(+T)"; hash["argument"]="T:「述語名」または「述語名/引数」の書式で標準組込み述語を指定する<br>     キーワードを指定する"; hash["text"]="Tで指定される標準組込み述語の説明を画面に表示します。<br>説明内容は述語リファレンスの内容に準じます。<br>キーワードを指定した場合は、対応するユーザーズマニュアルの章を表示します。<br>キーワード一覧は、「（マニュアルの使い方）2-3.電子マニュアル呼び出し機能」を参照して下さい。<br>manual/0 の場合は マニュアルの目次を表示します。"; hash["reference"]=""; hash["sample"]="| ?-manual(write).<br><br><span style='color:#FFFF00'>　　　 →「write/1」「write/2」が表示されます。</span><br><br>| ?-manual(write/1).<br><br><span style='color:#FFFF00'>　　　 →「write/1」が表示されます。</span><br><br>| ?-manual(debugger).　　　　<span style='color: #FFFF00'><==　キーワードは　debugger　です。</span><br><br><span style='color:#FFFF00'> 　　 →「6.デバッガ」の章が表示されます。</span>"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="60"; hash["name"]="get_parameter/1"; hash["common"]=""; hash["format"]="get_parameter(-L)"; hash["argument"]="L:コマンドラインパラメータ(アトム)のリスト"; hash["text"]="AZ-Prologインタープリタ起動時、又はスタンドアロンアプリケーション(コンパイルコード)起動時のコマンドラインパラメータをアトムのリストとして受取ります。<br>AZ-Prologインタープリタ起動時は「-p」オプション以降のパラメータが対象となり、スタンドアロンアプリケーション(コンパイルコード)はそのコンパイル時(AZPC 使用時)にコンパイラオプションの「/no」を指定した場合はコマンドラインパラメータの全てが対象となり、「/no」を指定しなかった場合はインタープリタ起動時と同様に「-p」オプション以降のパラメータが対象となります。"; hash["reference"]="「(操)3.3起動時のオプション」<br>"; hash["sample"]="[A:\\]prolog -h 30 -p 123 test.pl<br><br>| ?-get_parameter(L).<br>L = [&#39;123&#39;,&#39;test.pl&#39;]<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="61"; hash["name"]="halt/0"; hash["common"]="ISO"; hash["format"]="halt"; hash["argument"]="なし"; hash["text"]="現在オープンされているファイルはすべてクローズした後、処理系を終了し制御をOSに戻します。"; hash["reference"]="「(操)3.2.1インタープリタの起動と終了」<br>"; hash["sample"]="| ?-halt.<br>Exit from Prolog<br><br>[A:\\]"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="halt/1<br>sh/0"; azlist.push(hash);
var hash={}; hash["id"]="62"; hash["name"]="halt/1"; hash["common"]="ISO"; hash["format"]="halt(+I)"; hash["argument"]="I:終了条件の値を0~255の整数で指定<br>(32ビットの整数の下位8ビットを評価する)"; hash["text"]="現在オープンされているファイルはすべてクローズした後、処理系を終了し制御をOSに戻します。<br>halt/0 との違いは引数Iで終了条件(終了ステータス)を指定できる点だけです。<br>終了条件とはAZ-Prologを起動した親プロセスに返す値です。<br>例えばOS/2ではこの値をバッチファイル中でIFコマンドの条件文のERRORLEVELの値として受取らせる事が出来ます。"; hash["reference"]="「(操)3.2.1インタープリタの起動と終了」"; hash["sample"]="[A:]type az.cmd<br>echo off<br>cd az<br>prolog<br>if errorlevel 1 cd <br><span style='color:#FFFF00'>というバッチファイルを考えてみると・・・<br>このバッチファイルは「az」というディレクトリにAZ-Prologがインストールされているとして、<br>まず「ルート」から「az」ディレクトリに移りAZ-Prologを立上げて、<br>halt(1) で終了すると、<br>「az」から「ルート」ディレクトリに戻し、<br>halt/1 引数にそれ以外の値を指定して終了すると、<br>「az」ディレクトリのままになるようになっています。</span><br>[A:]az<br>[A:]echo off<br>| ?-<br>･<br>･<br>･<br>| ?-halt(1).<br>Exit from Prolog<br><br>[A:]        <span style='color: #FFFF00'><== halt(1) で終了するとルートディレクトリに戻ります。</span><br>･<br>･<br>･<br>[A:]az<br>[A:]echo off<br>･<br>･<br>･<br>| ?-<br>･<br>･<br>･<br>| ?-halt(0).  <span style='color: #FFFF00'><== halt/1 の引数に1以外を指定して終了するとルートディレクトリに戻らず、</span><br>                <span style='color: #FFFF00'> 「az」ディレクトリのままになります。</span><br>Exit from Prolog <br>[A:AZ]<br>･<br>･<br>･<br>[A:AZ]az<br>[A:AZ]echo off<br>･<br>･<br>･<br>| ?-<br>･<br>･<br>･<br>| ?-halt.     <span style='color: #FFFF00'><== halt/0 で終了するとルートディレクトリに戻ります。</span><br>                  <span style='color: #FFFF00'>つまり、halt/0 は終了ステータス1を返します。(halt(1)と等価)</span><br>Exit from Prolog  <br>[A:]"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="halt/0<br>sh/0"; azlist.push(hash);
var hash={}; hash["id"]="63"; hash["name"]="s_reclaim/0"; hash["common"]=""; hash["format"]="s_reclaim"; hash["argument"]="なし"; hash["text"]="ヒープ領域及びグローバルスタックのガベージコレクション(GC:チリ集め)を強制的に行ないます。<br>例えば、ヒープ領域上の節をretractして削除しても実際にはマークが付けられるだけでメモリは開放されず未使用域になります。このため assert とretract を繰返すとヒープ領域に未使用域が隙間となって増えてしまうので有効利用範囲が狭くなってしまいます。そこでその隙間を詰め、未使用域を集めて、まとめて開放する必要が出てきます。この作業をガベージコレクション(GC:チリ集め)と呼ばれます。<br><br>通常、ガベージコレクションは自動的に行なわれます(Prologプログラムを実行中、突然訳もなく止ることがあるのはこの為です)。<br>しかし、どうしても途中で止っては困る処理もあります。<br>そんなときにこの述語をプログラム中に書いておき、止っては困る処理の前で実行しておくとしばらくは起こり難くなります(ただし、絶対起こらないという保証は有りません)。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="s_greclaim/0<br>s_verbos/2<br>assert/1<br>assert/2<br>asserta/1<br>retract/1<br>retract/3<br>abolish/1<br>abolish/2<br>s_new/0<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="64"; hash["name"]="s_greclaim/0"; hash["common"]=""; hash["format"]="s_greclaim"; hash["argument"]="なし"; hash["text"]="グローバルスタックだけのガベージコレクタを強制的に起動します。<br>それ以外は s_reclaim/0 と同じです。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="s_reclaim/0<br>s_verbos/2<br>assert/1<br>assert/2<br>asserta/1<br>retract/1<br>retract/3<br>abolish/1<br>abolish/2<br>s_new/0<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="65"; hash["name"]="s_verbos/2"; hash["common"]=""; hash["format"]="s_verbos(-A1,+A2)"; hash["argument"]="A1:変更前の状態が「on」か「off」でユニファイされる<br>A2:変更後の状態を「on」か「off」で指定する"; hash["text"]="ガベージコレクション(GC:チリ集め)が起こった時に、メッセージを表示するかどうかを「on」か「off」で切換えます。<br>表示させたい場合は「on」、表示させたくない場合は「off」を指定します。<br>ガベージコレクションの表示は主にデバッグ時に使います。"; hash["reference"]=""; hash["sample"]="| ?-s_verbos(_,on).<br>_ = off<br>yes<br>| ?-s_reclaim.<br>ENTERING GLOBAL GC.. 12345678 COLLECTED CELLS 10  USING 68<br>ENTERING HEAP GC ... 1234567  COLLECTED CELLS:852 USING:4142 LEFT:858<br>yes<br><br><span style='color: #FFFF00'>この例では s_reclaim/0 をトップレベルで実行していますが通常は s_reclaim/0をトップレベルで実行してもあまり意味が有りません。</span>"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="s_reclaim/0<br>s_greclaim/0"; azlist.push(hash);
var hash={}; hash["id"]="66"; hash["name"]="statistics/0"; hash["common"]=""; hash["format"]="statistics"; hash["argument"]="なし"; hash["text"]="本処理系で使用している各種スタックなどの各領域の設定値(領域確保量)と現在の使用量を表示します。<br>ただし、ローカル・グローバル・トレイルの各スタックは現在の使用量ではなくて過去の最大使用量を表示します。<br>過去の最大使用量とはAZ-Prolog立上げ後か又は<br>reset_statistics/0実行後からの最大使用量です。<br>これを参考にして各領域の設定値を最小限に抑える事が出来る為、メモリの有効利用が可能です。<br>各領域の設定は、起動時のオプション(-a -h -l -g) に続くＫセル単位の数値で指定できます。<br>また起動フォルダや環境変数AZPrologの場所にあるprolog.defファイルによっても指定可能です。<br><br>prolog.def ファイルは順番にatom、heap、Local、globalのＫセル単位の数値をスペース区切りで記述します。<br>prolog.defの例(下記の実行例の設定値です）：100 200 300 400"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM      (cell)   102400  USED: 590<br> ARITY    (cell)   102400  USED: 660<br>HEAP      (cell)   204800  USED: 4772<br>LSTACK    (cell)   306900   MAX: 53<br>GSTACK    (cell)   409600  &nbspMAX: 1867<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="reset_statistics/0<br>atommax/0<br>atomused/0<br>heapmax/0<br>heapused/0<br>localmax/0<br>localused/0<br>globalmax/0<br>globalused/0"; azlist.push(hash);
var hash={}; hash["id"]="67"; hash["name"]="reset_statistics/0"; hash["common"]=""; hash["format"]="reset_statistics/0"; hash["argument"]="なし"; hash["text"]="statistics/0 でのローカル・グローバル・トレイルの各スタックの過去の最大使用量表示を初期化します。<br>ただし、インタープリタ自信の実行に必要な部分があるため初期化しても必ずしも0になるとは限りません。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 883<br> ARITY (cell)   2048000 USED: 836<br>HEAP   (cell)   2097152 USED: 463<br>LSTACK (cell)   1048276  MAX: 159<br>GSTACK (cell)   2097152  MAX: 1062<br>yes<br>| ?-reset_statistics.<br>yes<br>| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 883<br> ARITY (cell)   2048000 USED: 836<br>HEAP   (cell)   2097152 USED: 463<br>LSTACK (cell)   1048276  MAX: 5      <span style='color:#FFFF00'>ローカル・グローバル・トレイルスタックの</span><br>GSTACK (cell)   2097152  MAX: 2      <span style='color:#FFFF00'>過去の最大使用量が減っている事が分る。</span><br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="68"; hash["name"]="meter/1"; hash["common"]=""; hash["format"]="meter(?A)"; hash["argument"]="A : 変数現在の状態が返ります。<br>on  メモリメータを表示します。<br>offメモリメータを消去します。"; hash["text"]="ヒープ、グローバルスタック、ローカルスタックの使用状況を自動的に表示します。<br>デバッグ時のスタック・ヒープの使用状況を監視するのに使います。<br><br>※OS/2版 のみサポートです。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="21"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="69"; hash["name"]="s_version/4"; hash["common"]=""; hash["format"]="s_version(-I,-A1,-A2,_)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>I</td>      <td nowrap>:AZ-Prologのバージョン<br>        (整数表現する為、100倍されている)</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>A1</td>      <td nowrap>:使用OS名</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>A2</td>      <td nowrap>:国別情報(国名)</td>    </tr>  </tbody></table>"; hash["text"]="AZ-Prologのバージョン・使用OS名・国別情報(国名)を取得します。<br>プログラム中でそれぞれの事情に合せた部分を作っておき、それらを実行時に自動的に分岐させたい場合などに使用します。"; hash["reference"]=""; hash["sample"]="| ?-s_version(AZ,OS,KU,_).<br>AZ      = 730,<br>OS      = Win64,<br>KU      = JAPAN,<br>_3      = x64<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="70"; hash["name"]="error/1"; hash["common"]=""; hash["format"]="error(+I)"; hash["argument"]="I:エラー番号を指定する<br>(ただし、201以上は200を指定したと見なされる)"; hash["text"]="Iで指定したエラー番号のエラーを強制的に起こします。"; hash["reference"]="「(操)A.4エラーメッセージ一覧表」<br>"; hash["sample"]="| ?-error(1).<br>Syntax error          ---- Backtrace<br>error(1)  ?-<br>| ?-error(200).<br>user errors limit     ---- Backtrace<br>error(200)  ?-<br>| ?-error(1000).<br>user errors limit     ---- Backtrace<br>error(1000)  ?-"; hash["genre"]="22"; hash["used"]="true"; hash["incident"]="errormode/2<br>errorset/2"; azlist.push(hash);
var hash={}; hash["id"]="71"; hash["name"]="errormode/2"; hash["common"]=""; hash["format"]="errormode(-I1,+I2)"; hash["argument"]="I1:変更前のエラーモードがユニファイされる<br>I2:変更後のエラーモードを指定する<br>ただし、エラーモードは 0,1,2,3 のいずれかの値である<br>それ以外の値を指定した場合はエラー(Illegal argument supplied)となる"; hash["text"]="エラーモードを変更します。<br>エラーモードとは何等かのエラーが起きた時の画面に出力される情報量を変化させるモードです。つまり、デバッグ時には出来るだけ多くの情報が要求され、反対にアプリケーション実行時には処理系からのメッセージによって画面が破壊されてしまうので出力されては困る場合もあります。<br>このように時と場合によってエラーに関する情報の量を変化させるのがエラーモードです。<br>それぞれのモードによって次の様な差が有ります。<br><br>0 何も出力しません。<br>1 エラーメッセージのみを出力します。<br>2 エラーメッセージを出力した上でバックトレースし、今まで実行された述語を遡って表示します。<br>3 デバッグモードの場合は、エラーメッセージを出力した上でバックトレースし、今まで実行された節を遡ってそのレベル数と共に表示します。ノーマルモードの場合は、2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-errormode(_,0).<br>_0      = 2<br>yes<br>| ?-error(1).<br>| ?-errormode(_,1).<br>_0      = 0<br>yes<br>| ?-error(1).<br>syntax error<br>| ?-errormode(_,2).<br>_0      = 1<br>yes<br>| ?-error(1).<br>syntax error     ---- Backtrace<br>error(1) ?-<br>| ?-errormode(_,3).<br>_0      = 2<br>yes<br>| ?-error(1).<br>syntax error     ---- Backtrace<br>error(1) ?-<br>| ?-errormode(_,4).<br>Illegal argument supplied        ---- Backtrace<br>errormode(3,4) ?-<br>| ?-"; hash["genre"]="22"; hash["used"]="true"; hash["incident"]="error/1<br>errorset/2"; azlist.push(hash);
var hash={}; hash["id"]="72"; hash["name"]="errorset/2"; hash["common"]=""; hash["format"]="errorset(+C,-I・A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>C</td>      <td>:ゴール、又はゴールの並びを「( )」で囲って指定する</td>    </tr>    <tr>      <td align='left' valign='top'>I・A</td>      <td align='left' valign='top'>:Cの実行結果の「エラー番号」又は「succ」か「fail」がユニファイされる。</td>    </tr>  </tbody></table>"; hash["text"]="Cで呼出された述語、又はそれ以下の述語の実行結果(「成功」「失敗」「エラー」)に関わらず成功し、その結果をI・Aにユニファイします。<br>通常、特に何等かの実行エラーが起こると、処理系はその実行を強制的に終了し、質問を発したコマンドレベルまで戻します。<br>しかし、アプリケーション実行時にこのような事が起こると都合が悪い事が多いと思われます。<br>そこで、この errorset/2 を使って述語をコールしておく(これを「トラップする」と言います)と、その述語、又はそれ以下の述語が例えエラーが起こっても、強制終了されず errorset/2 まで戻り、起こったエラーの番号が返されます。<br>エラーが起きなかった場合はその「成功」「失敗」によって「succ」か「fail」が返されます。<br>また、errormode を0にしておけば、全くアプリケーション利用者には気付かれずに処理できます。"; hash["reference"]=""; hash["sample"]="| ?-errormode(_,0).<br>_0      = 2<br>yes<br>| ?-errorset(error(1),X).<br>X       = 1<br>yes<br>| ?-errorset(error(199),X).<br>X       = 199<br>yes<br>| ?-errorset(true,X).<br>X       = succ<br>yes<br>| ?-errorset(fail,X).<br>X       = fail<br>yes<br>| ?-errorset(abort,X).<br>X       = 255<br>yes<br>| ?-<br><br><span style='color:#FFFF00'>この実行例は errorset/2 の動作を示しています。<br>通常はこの組込み述語をトップレベルで実行しても意味はありません。</span>"; hash["genre"]="22"; hash["used"]="true"; hash["incident"]="error/1<br>errormode/2"; azlist.push(hash);
var hash={}; hash["id"]="73"; hash["name"]="s_mode/2"; hash["common"]=""; hash["format"]="s_mode(-A1,+A2)"; hash["argument"]="A1:変更前の状態を「on」か「off」でユニファイする<br>A2:変更後の状態を「on」か「off」で指定する"; hash["text"]="システムモードの「on」か「off」を指定します。<br>システムモードの「off」はユーザモードを意味します。"; hash["reference"]="「(操)5.11.2定義述語(システム述語とユーザ述語)」"; hash["sample"]="<span style='color:#FFFF00'>ヒープ領域のユーザ側に「8クィーンのプログラム」、<br>システム側に「エディタのプログラム」がそれぞれ入っているとすると・・・</span><br>?-listing.<br>q(N) :-<br>e_register(0,_,0),<br>queen(N,L),<br>e_register(0,N1,N1+1),<br>M is N1+1,<br>write('No.'),<br>write(M),<br>nl,<br>disp(L,N),<br>fail.<br>q(_) :-<br>e_register(0,N,N),<br>write('Total = '),<br>write(N).<br> ･<br> ･<br> ･<br>yes<br>?-s_mode(_,on).<br>_   = off<br>yes<br>! ?-listing.<br>edit :-<br>e_cr_buf,<br>unknown(U,fail),<br>unknown(_,U),<br>e_cua,<br>e_dline(D),<br>e_init(D),<br>fileerrors(FE,fail),<br> ･<br> ･<br> ･<br>yes<br>! ?-"; hash["genre"]="23"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="74"; hash["name"]="kanji_mode/2"; hash["common"]=""; hash["format"]="kanji_mode(-A1,+A2)"; hash["argument"]="A1:変更前の状態を「on」か「off」でユニファイする<br>A2:変更後の状態を「on」か「off」で指定する"; hash["text"]="漢字モードの「on」か「off」を指定します。<br>漢字モードとは一文字入出力述語や name/2 において、漢字などの多バイトコードをそのバイトをまとめて一つ数の数値として扱うか、1バイトづつ分けて複数の数値として扱うかを決定するモードです。<br>漢字モード「on」の時はそのバイト数をまとめて扱い、「off」の時1バイトづつ分けて扱います。<br>処理系立上げ時の初期値は「on」です。<br><br>通常は漢字モード「on」にしておけば問題ありませんが、Prolog-KABA上で動作していたPrologプログラムをAZ-Prolog上で動作させる時などは漢字モード「off」にしておいた方が都合のいい事もあります。"; hash["reference"]="「(操)5.8日本語処理と漢字モード」"; hash["sample"]="| ?-name(漢字,X).<br>X = [35519,36506]<br>yes<br>| ?-kanji_mode(_,off).<br>_ = on<br>yes<br>| ?-name(漢字,X).<br>X = [138,191,142,154]<br>yes"; hash["genre"]="23"; hash["used"]="true"; hash["incident"]="get/1<br>get/2<br>get0/1<br>get1/1<br>skip/1<br>name/2"; azlist.push(hash);
var hash={}; hash["id"]="75"; hash["name"]="op/3"; hash["common"]="ISO"; hash["format"]="op(+I,+A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>I</td>      <td nowrap>:オペレータの結合の優先順位を表す整数値(0~1200)を指定する</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>A1</td>      <td nowrap>:オペレータの型を表すアトム(「xfx」「xfy」「yfx」「fx」「fy」「xf」「yf」のどれか)を指定する</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>A2</td>      <td nowrap>:オペレータ名を指定する</td>    </tr>  </tbody></table>"; hash["text"]="A2をオペレータ名、結合の優先順位I、その型A1のオペレータを宣言します。"; hash["reference"]="「(操)4.4オペレータ」<br>"; hash["sample"]="| ?-op(500,xfy,と).<br>yes<br>| ?-read(X).<br>|: なす と きゅうり.<br>X = なす と きゅうり<br>yes"; hash["genre"]="23"; hash["used"]="true"; hash["incident"]="current_op/3"; azlist.push(hash);
var hash={}; hash["id"]="76"; hash["name"]="debug/0"; hash["common"]=""; hash["format"]="debug"; hash["argument"]="なし"; hash["text"]="動作モードをデバッグモードにします。<br><br><デバッグモードとは><br>インタープリタ動作中(プログラム実行中)にゴールの実行の回数をカウントし、各ポイント毎にスパイのチェックを行なうモードです。<br>実行終了後トッフレベルに戻った時に述語をコールした回数の合計が表示されます。<br>ただし、デバッグモードではノーマルモードに比べて実行速度が落ちます。<br>(デバッグモードに対して普通の状態のことをノーマルモードと呼びます)<br><br>次の nodebug/0 でデバッグモードを解除し、ノーマルモードに戻ります。<br><br>なお、ノーマルモードにおいて trace/0 か spy  /fy を実行すると自動的にデバッグ<br>モードに入ります。"; hash["reference"]="「(操)第6章デバッガ」<br>"; hash["sample"]="| ?-debug.<br>yes<br>debug mode on<br>||?-<br>LOOP = 1       <span style='color: #FF0'><== ゴール(debug/0)が1回だけコールされた事を示す</span><br>|| ?-          <span style='color: #FF0'><== プロンプトが「|| ?-」に代って</span><br>                   <span style='color: #FF0'>デバッグモードに入った事を示す</span>"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="nodebug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>leash1/1<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="77"; hash["name"]="nodebug/0"; hash["common"]=""; hash["format"]="nodebug"; hash["argument"]="なし"; hash["text"]="デバッグモードを解除し、実行モードをノーマルモードに戻します。<br>この述語が実行されるとコンソ-ルに以下のようなメッセージが出力されます。<br>debug mode off<br>ただし、すでにデバッグモードでない場合にはこのメッセージは出力されません。<br>"; hash["reference"]="「(操)第6章デバッガ」<br>"; hash["sample"]=""; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>leash1/1<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="78"; hash["name"]="trace/0"; hash["common"]=""; hash["format"]="trace"; hash["argument"]="なし"; hash["text"]="現在の実行モードがノーマルモードの場合は先ずデバッグモードにした後、トレースモードに移行します。<br>トレースモードに移行すると、以降コールする全述語の「成功」「失敗」「エラー」等を画面に報告します。<br>また、それぞれの局面でプログラムの中断・強制終了・または強制的に成功させたり、失敗させたりする事も出来ます。<br>また、この述語をプログラム中に書いておくと、実行の途中からトレースする事も出来ます。<br>トレースモードは次の notrace/0 で解除出来ます。"; hash["reference"]="「(操)第6章デバッガ」<br>"; hash["sample"]="| ?-trace.<br>yes<br>debug mode on<br>||?-trace.<br> [1] 0 Try   : trace ?<br> << BUILTIN CALL >><br> [1] 0 Succ  : trace<br>yes<br>LOOP = 2<br>||?-q(8).                           <span style='color: #FFFF00'><== 8クィーンのプログラムをトレースしてみる</span><br> [1] 0 Try   : q(8) ?<br>  Match   : q(8) :-<br>                e_register(0,__6,0),<br>                queen(8,L_8),<br>                e_register(0,N1_10,N1_10+1),<br>                M_12 is N1_10+1,<br>                write(No.),<br>                write(M_12),<br>                nl,<br>                disp(L_8,8),<br>                fail.<br> [2] 1 Try   : e_register(0,__6,0) ?<br> << BUILTIN CALL >><br> [2] 1 Succ  : e_register(0,92,0)<br> [2] 1 Try   : queen(8,L_8) ?<br>  Match   : queen(8,L_8) :-<br>                generate(8,L1_18),<br>                put(L1_18,[],L_8).<br> [3] 2 Try   : generate(8,L1_18) ?<br>  Match   : generate(8,[8|L_22]) :-<br>                N1_24 is 8-1,<br>                generate(N1_24,L_22).<br> [4] 3 Try   : N1_24 is 8-1 ?<br> << BUILTIN CALL >><br> [4] 3 Succ  : 7 is 8-1<br> << LAST CALL >><br> [3] 2 Try   : generate(7,L_22) ?<br>  Match   : generate(7,[7|L_33]) :-<br>                N1_35 is 7-1,<br>                generate(N1_35,L_33).<br> [4] 3 Try   : N1_35 is 7-1 ?<br> << BUILTIN CALL >><br> [4] 3 Succ  : 6 is 7-1<br> << LAST CALL >><br> [3] 2 Try   : generate(6,L_33) ?<br>  Match   : generate(6,[6|L_44]) :-<br>                N1_46 is 6-1,<br>                generate(N1_46,L_44).<br> [4] 3 Try   : N1_46 is 6-1 ?<br> << BUILTIN CALL >><br> [4] 3 Succ  : 5 is 6-1<br> << LAST CALL >><br> [3] 2 Try   : generate(5,L_44) ?<br>  Match   : generate(5,[5|L_55]) :-<br>                N1_57 is 5-1,<br>                generate(N1_57,L_55).<br> [4] 3 Try   : N1_57 is 5-1 ?<br> << BUILTIN CALL >><br> [4] 3 Succ  : 4 is 5-1<br> << LAST CALL >><br> [3] 2 Try   : generate(4,L_55) ?<br>  Match   : generate(4,[4|L_66]) :-<br>                N1_68 is 4-1,<br>                generate(N1_68,L_66).<br> [4] 3 Try   : N1_68 is 4-1 ?<br> << BUILTIN CALL >><br> [4] 3 Succ  : 3 is 4-1"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>leash1/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="79"; hash["name"]="notrace/0"; hash["common"]=""; hash["format"]="notrace"; hash["argument"]="なし"; hash["text"]="トレースモードを解除し、トレースを中止します。<br>ただし、デバッグモードは解除されませんのでノーマルモードには戻りません。"; hash["reference"]=""; hash["sample"]="||?-notrace.<br>yes<br>LOOP = 1<br>||?-nodebug.<br>yes<br>debug mode off<br>| ?-"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>leash1/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="80"; hash["name"]="spy  /fy"; hash["common"]=""; hash["format"]="spy +A・A/I・A/Ｉ１/I2・A/I1/I2/I3・L"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A</td>      <td>：「述語名」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I</td>      <td>：「述語名/アリティ」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I1/I2</td>      <td nowrap>：「述語名/アリティ/節順位」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I1/I2/I3</td>      <td>：「述語名/アリティ/節順位/ボディ部のゴール順位」</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>：上記を要素とし、カンマ区切りに並べる</td>    </tr>  </tbody></table>"; hash["text"]="引数で指定される述語をスパイポイントとして設定します。<br>なお、ノーマルモードにおいてこの spy /fy を実行すると先ずデバッグモードに入ってからスパイポイントを設定します。<br>スパイとはある限定された述語のみか、又はそれ以降をトレースする機能です。<br>その述語をスパイポイントと呼びます。(スパイは、他言語プログラムにおいてデバッグ時によく使用されるブレークポイントに相当します)<br>また、当然ながら複数個の述語にスパイを同時にかけることもできます。<br> <br>・引数が「述語名」の場合はその述語名を持つ述語すべてをスパイポイントとして設定します。<br>・引数が「述語名/アリテ」の場合はその述語名とアリティの述語をスパイポイントとして設定します。<br>・引数が「述語名/アリテ/節順位」の場合はその述語名とアリティの述語の指定された順位の節をスパイポイントとして設定します<br>・引数が「述語名/アリテ/節順位/節順位/ボディ部のゴール順位」の場合はその述語名とアリティの述語の指定された順位の節のゴール順位をスパイポイントとして設定します。<br>・引数が上記を要素とするリストの場合は､その個々の要素に対してスパイポイントを設定します。<br><br>もし引数で指定される述語が存在しなかった場合は無視します。その場合でも spy /fy 自身は成功します。<br>spy /fy は前置オペレータであることに注意して下さい。<br>nospy /fy でスパイポイントを解除出来ます。"; hash["reference"]=""; hash["sample"]="/*  例( spy +A )  */<br>| ?-[-'queen.pl'].                      <span style='color: #FFFF00'><== queen.pl をコンサルト</span><br>yes<br>| ?-spy generate.                       <span style='color: #FFFF00'><== 述語名generateに異なるアリティで複数の述語がある場合　?-spy generate/3. で一意化可</span><br>yes<br>debug mode on<br>||?-queen(4,X).<br> [2] 1 Try   : generate(4,L1_11) ?      <span style='color: #FFFF00'><== generate/3がTryされるところでトレース開始</span><br>  Match   : generate(4,[4|L_15]) :-<br>                N1_17 is 4-1,<br>                generate(N1_17,L_15).<br> [3] 2 Try   : N1_17 is 4-1 ?<br> << BUILTIN CALL >><br> [3] 2 Succ  : 3 is 4-1<br> << LAST CALL >><br> [2] 1 Try   : generate(3,L_15) ?<br><br>    |<br>    |<br>    |<br><br> [9] 4 Retry : put([],[2,4,1,3],X_5) ?<br>  Match   : put([],[2,4,1,3],[2,4,1,3]).<br> [9] 4 Succ  : put([],[2,4,1,3],[2,4,1,3])<br> [7] 3 Succ  : put([2],[4,1,3],[2,4,1,3])<br> [5] 2 Succ  : put([4,2],[1,3],[2,4,1,3])<br> [3] 1 Succ  : put([4,2,1],[3],[2,4,1,3])<br> [1] 0 Succ  : put([4,3,2,1],[],[2,4,1,3])<br>X       = [2,4,1,3]<br>yes<br>LOOP = 125"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>notrace/0<br>nospy  /fy<br>leash/1<br>leash1/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="81"; hash["name"]="nospy  /fy"; hash["common"]=""; hash["format"]="nospy +A・A/I・A/I1/I2・A/I1/I2/I3・L"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A</td>      <td>：「述語名」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I</td>      <td>：「述語名/アリティ」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I1/I2</td>      <td nowrap>：「述語名/アリティ/節順位」</td>    </tr>    <tr>      <td align='left' valign='top'>A/I1/I2/I3</td>      <td>：「述語名/アリティ/節順位/ボディ部のゴール順位」</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>：上記を要素とし、カンマ区切りに並べる</td>    </tr>  </tbody></table>"; hash["text"]="引数で指定される述語がスパイポイントに設定されていた場合、その設定を解除します。<br>・引数が「述語名」の場合はその述語名を持つ述語のどれかがスパイポイントとして設定されていた場合その設定を解除します。<br>・引数が「述語名/アリティ」の場合はその述語名とアリティの述語がスパイポイントとして設定されていた場合その設定を解除します。<br>・引数が「述語名/アリテ/節順位」の場合はその述語名とアリティの述語の指定された順位の節がスパイポイントとして設定されていた場合その設定を解除します。<br>・引数が「述語名/アリテ/節順位/節順位/ボディ部のゴール順位」の場合はその述語名とアリティの述語の指定された順位の節のゴール順位がスパイポイントとして設定されていた場合その設定を解除します。 <br>・引数が上記をを要素とするリストの場合は､その個々の要素に対してスパイポイントを解除します。<br><br>ただし、この述語によって例えすべてのスパイポイントが解除されてもデバッグモードは解除されずノーマルモードには戻りません。<br><br>nodebug/0 が実行されると、スパイポイントも、そのすべてが解除されます。"; hash["reference"]="「(操)第6章デバッガ」<br>"; hash["sample"]="||?-nospy queen.<br> [1] 0 Try   : nospy generate ?<br> << BUILTIN CALL >><br> [1] 0 Succ  : nospy generate<br>yes<br>LOOP = 1<br>||?-queen(4,X).<br>X       = [2,4,1,3]<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>leash/1<br>leash1/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="82"; hash["name"]="leash/1"; hash["common"]=""; hash["format"]="leash(+I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>I</td>      <td valign=&quot;top&quot;>:各局面を対応ビットで表した整数値を設定<br>        どのビットがどの局面に対応しているかを下に示す        <table width=&quot;0&quot; border=&quot;0&quot; cellspacing=&quot;5&quot;>          <tbody>            <tr>              <td>5</td>              <td>4</td>              <td>3</td>              <td>2</td>              <td>1</td>              <td>0</td>            </tr>            <tr>              <td>Retry</td>              <td>Pop</td>              <td>Fail</td>              <td>Succ</td>              <td>Match</td>              <td>try</td>            </tr>          </tbody>        </table>        <br>        「対応ビットで表した整数値」とは2進数の対応した桁を1にした値。<br>        例えば「Retry」と「Match」「try」の3つの局面に設定したい場合は「2'100011」<br>        又は10進数表現で「35」を設定する。(実行例参照)<br>        従って、すべての局面を設定したい場合は「2'111111」、<br>        又は10進数表現で「63」を設定すればよい。<br>        <br></td>    </tr>    <tr>      <td align='left' valign='top'>A</td>      <td>:Version 8 からは、r,p,f,s,m,t を含むアトムによる設定を追加<br>        r,p,f,s,m,tが Retry  Pop  Fail  Succ  Match  tryに対応。順序は問わず、それ以外の文字は無視する。<br>        ?- leash(rfpt).   <= retry,fail,pop,tryの意味  2'111001と同義<br></td>    </tr>  </tbody></table>"; hash["text"]="トレース時にどの局面でコマンド入力を受け付けるかを変更します。<br>"; hash["reference"]=""; hash["sample"]="| ?-debugging.<br><< DEBUGGING >><br>Debug Mode    = debug<br>Unknown       = fail<br>Spy Points    =<br>Command Point = Try Retry                          <span style='color: #FF0'><== 「Command Point」のデフォルト。</span><br>Display Point = Try Match Succ Fail Pop Retry<br>Verbos Mode   = middle<br>yes<br>LOOP = 1<br>| ?-leash(2'100011).<br>yes<br>LOOP = 1<br>| ?-debugging.<br><< DEBUGGING >><br>Debug Mode    = debug<br>Unknown       = fail<br>Spy Points    =<br>Command Point = Try Match Retry                     <span style='color: #FF0'><== 「Match」が追加されました。</span><br>Display Point = Try Match Succ Fail Pop Retry<br>Verbos Mode   = middle<br>yes<br>LOOP = 1<br>| ?-"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash1/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="83"; hash["name"]="leash1/1"; hash["common"]=""; hash["format"]="leash1(+I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>I</td>      <td>:各局面を対応ビットで表した整数値を設定</td>    </tr>    <tr>      <td align='left' valign='top'>A</td>      <td>:Version 8 からは、r,p,f,s,m,t を含むアトムによる設定を追加<br>        r,p,f,s,m,tが Retry  Pop  Fail  Succ  Match  tryに対応。順序は問わず、それ以外の文字は無視する。<br>        ?- leash(rfpt).   <= retry,fail,pop,tryの意味  2'111001と同義</td>    </tr>  </tbody></table>"; hash["text"]="トレース時及びスパイにおいてどの局面を表示するかを変更します。<br>引数の設定方法は、leash/1 と同じです。<br>"; hash["reference"]="「(操)第6章デバッガ」<br><br>"; hash["sample"]="| ?-debugging.<br><< DEBUGGING >><br>Debug Mode    = debug<br>Unknown       = fail<br>Spy Points    =<br>Command Point = Try Retry<br>Display Point = Try Match Succ Fail Pop Retry   <span style='color: #FF0'><==「表示 Point」のデフォルト。</span><br>Verbos Mode   = middle<br>yes<br>LOOP = 1<br>| ?-leash1(2'100011).<br>yes<br>LOOP = 1<br>| ?-debugging.<br><< DEBUGGING >><br>Debug Mode    = debug<br>Unknown       = fail<br>Spy Points    =<br>Command Point = Try Retry<br>Display Point = Try Match Retry                <span style='color: #FF0'><==「Try」「Match」「Retry」に変更されました。</span><br>Verbos Mode   = middle<br><br>yes<br>LOOP = 1<br>| ?-"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>unknown/2<br>debugging/0"; azlist.push(hash);
var hash={}; hash["id"]="84"; hash["name"]="unknown/2"; hash["common"]=""; hash["format"]="unknown(-A1,+A2)"; hash["argument"]="A1:変更前の状態が「trace」「fail」「error」のいずれかでユニファイされる<br>A2:変更後の状態を「trace」「fail」「error」のいずれかで指定する<br>"; hash["text"]="定義されていない述語を実行しようとしたときの処理モードを変更できる。<br>・ただ単にその述語は失敗する。「fail」<br>・トレースモードに移行する。「trace」<br>・エラーになる。「error」<br>の内どれにするかを変更します。初期値はfailです。"; hash["reference"]="「(操)第6章デバッガ」<br>trace/0  errorset/2<br>"; hash["sample"]="| ?-aaaa.<br>no<br>| ?-unknown(_,error).<br>_ = fail<br>yes<br>| ?-aaaa.<br>unknown predicate call      ---- Backtrace<br>aaaa  | ?-<br>| ?-"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="trace/0<br>errorset/2<br>"; azlist.push(hash);
var hash={}; hash["id"]="85"; hash["name"]="debugging/0"; hash["common"]=""; hash["format"]="debugging"; hash["argument"]="なし"; hash["text"]="1) 現在デバッグモードか否か<br>2) 定義されていない述語を実行しようとしたとき、「失敗する」「トレースを始める」「エラーとなる」の内どの動作をするか<br>3) スパイがかかっている述語<br>4) トレース時にどの局面でコマンド入力を受け付けるか<br>5) トレース時及びスパイにおいてどの局面を表示するか<br>"; hash["reference"]="「(操)第6章デバッガ」<br>"; hash["sample"]="?-debugging.<br><br><< DEBUGGING >><br><br>Debug Mode    = debug<br>Unknown       = fail<br>Spy Points    =<br>Command Point = Try Retry<br>Display Point = Try Match Succ Fail Pop Retry<br>Verbos Mode   = middle<br>yes<br>?-"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="debug/0<br>nodebug/0<br>trace/0<br>notrace/0<br>spy  /fy<br>nospy  /fy<br>leash/1<br>leash1/1<br>unknown/2"; azlist.push(hash);
var hash={}; hash["id"]="86"; hash["name"]="=  /xfx"; hash["common"]="ISO"; hash["format"]="? T1 = ? T2"; hash["argument"]="T1,T2:任意の項"; hash["text"]="T1とT2をユニファイ(ユニフィケーション・単一化)します。<br>単純項のユニファイには次の3通りの場合があります。<br>・どちらか一方が未代入の変数で他方が実体を持つ項である時、未代入の変数に項<br>が代入されます。この場合は必ず成功します。<br>・双方が実体を持つ項である時、全く同じ項であれば成功し、そうでなければ失敗<br>します。(==   /xfy と同じ)<br>・双方が未代入の変数である時、双方の変数の領域を共有します。<br>領域を共有するとは、その後ユニファイによってどちらかの変数に値が代入され<br>ると他方の変数にも同じ値が代入されるということです。<br><br>複合項のユニファイはファンクタとアリティが共に同じでなければ失敗し、同じな<br>らば引数のユニファイにかかり、全ての引数のユニファイが成功して初めてその複<br>合項のユニファイが成功します。<br><br>なお、本書の中で数多く使われている「ユニファイ」という言葉の意味はすべてこ<br>れと同じ意味です。"; hash["reference"]=""; hash["sample"]="| ?-X = aaa.<br>X = aaa<br>yes<br>| ?-1+2 = 1+2.<br>yes<br>| ?-X = Y,X = aaa.<br>X = aaa,<br>Y = aaa<br>yes<br>| ?-1+2 = 3.<br>no<br>| ?-1+2 = 2+1.<br>no<br>| ?-\&quot;a\&quot; = [97].<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="==  /xfx<br>"; azlist.push(hash);
var hash={}; hash["id"]="87"; hash["name"]="e_switch/3"; hash["common"]=""; hash["format"]="e_switch(+N,-A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td width=&quot;18&quot; align='left' valign='top'>A1</td>      <td>:変更前の状態が「on」「off」のいずれかでユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:変更後の状態を「on」「off」のいずれかで指定する<br>        「on」「off」以外を指定するとエラー(Illegal argument supplied)となる</td>    </tr>  </tbody></table>"; hash["text"]="Nで指定された番号のフラグレジスタの値を取得・変更します。<br><br>AZ-Prolog起動直後の初期値は「off」ですが、当然ながら何等かのプログラムを走らせた後は値が変っている可能性がありますから、プログラム中で使用する場合は初期設定する必要があります。<br><br>なおこの他に整数を保存する整数レジスタ、実数を保存する実数レジスタ、アトムを保存するアトムレジスタがそれぞれ32個づつ用意されています。<br>"; hash["reference"]=""; hash["sample"]="| ?-e_switch(0,_,on).<br>_0      = off<br>yes<br>| ?-e_switch(0,X,X).<br>X       = on<br>yes<br>| ?-"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="88"; hash["name"]="e_register/3"; hash["common"]=""; hash["format"]="e_register(+N1,-I,+N2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>N1</td>      <td>:レジスタ番号を0~31の範囲内の値の数式で指定する</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td align='left' valign='top'>:変更前の値がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>N2</td>      <td align='left' valign='top'>:変更後の値を指定する</td>    </tr>  </tbody></table><br>数値以外を指定するとエラー(Illegal argument supplied)となる"; hash["text"]="N1で指定された番号の整数レジスタの値を取得・変更します。<br><br>AZ-Prolog起動直後の初期値は「0」ですが、当然ながら何等かのプログラムを走らせた後は値が変っている可能性がありますから、プログラム中で使用する場合は初期設定する必要があります。<br><br>なお、この他に「on」「off」の状態を保存するフラグレジスタ、実数を保存する実数レジスタ、アトムを保存するアトムレジスタがそれぞれ32個づつ用意されています。"; hash["reference"]=""; hash["sample"]="| ?-e_register(0,_,123).<br>_ = 0<br>yes<br>| ?-e_register(0,X,X).<br>X = 123<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="e_switch/3<br>f_register/3<br>a_register/3"; azlist.push(hash);
var hash={}; hash["id"]="89"; hash["name"]="f_register/3"; hash["common"]=""; hash["format"]="f_egister(+N1,-F,+N2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>N1</td>      <td>:レジスタ番号を0~31の範囲内の値の数式で指定する</td>    </tr>    <tr>      <td align='left' valign='top'>F</td>      <td align='left' valign='top'>:変更前の値がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>N2</td>      <td align='left' valign='top'>:変更後の値を指定する</td>    </tr>  </tbody></table>"; hash["text"]="N1で指定された番号の実数レジスタの値を取得・変更します。<br>例えN2に整数値を指定しても「.00000」が付いた実数が保存されます。<br><br>AZ-Prolog起動直後の初期値は「0.00000」ですが、当然ながら何等かのプログラムを走らせた後は値が変っている可能性がありますから、プログラム中で使用する場合は初期設定する必要があります。<br><br>なお、この他に「on」「off」の状態を保存するフラグレジスタ、整数を保存する整数レジスタ、実数を保存する実数レジスタ、アトムを保存するアトムレジスタがそれぞれ32個づつ用意されています。<br>"; hash["reference"]=""; hash["sample"]="| ?-f_register(0,_,1.23).<br>_ = 0.000000000000000<br>yes<br>| ?-f_register(0,X,X).<br>X = 1.23000000000000<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="e_switch/3<br>e_register/3<br>a_register/3"; azlist.push(hash);
var hash={}; hash["id"]="90"; hash["name"]="a_register/3"; hash["common"]=""; hash["format"]="a_register(+N,-A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>N</td>      <td>:レジスタ番号を0~31の範囲内の値の数式で指定する</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td align='left' valign='top'>:変更前の値がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td align='left' valign='top'>:変更後の値を指定する</td>    </tr>  </tbody></table><br>アトム以外を指定するとエラー(Illegal argument supplied)となる"; hash["text"]="Nで指定された番号のレジスタの値を取得・変更します。<br><br>AZ-Prolog起動直後の初期値は「[]」ですが、当然ながら何等かのプログラムを走らせた後は値が変っている可能性がありますから、プログラム中で使用する場合は初期設定する必要があります。<br><br>なお、この他に「on」「off」の状態を保存するフラグレジスタ、整数を保存する整数レジスタ、実数を保存する実数レジスタ、アトムを保存するアトムレジスタがそれぞれ32個づつ用意されています。"; hash["reference"]=""; hash["sample"]="| ?-a_register(0,_,abc).<br>_ = []<br>yes<br>| ?-a_register(0,X,X).<br>X = abc<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="e_switch/3<br>e_register/3<br>f_register/3"; azlist.push(hash);
var hash={}; hash["id"]="91"; hash["name"]="s_atom/2"; hash["common"]=""; hash["format"]="s_atom(?A,?I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A:</td>      <td width=&quot;454&quot; nowrap>アトムを指定、又はユニファイされる</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>I:</td>      <td nowrap>アトム番号を整数で指定、又はユニファイされるこれら以外を指定した場合はエラー(Illegal argument supplied)となる</td>    </tr>  </tbody></table>"; hash["text"]="アトムからそのアトム番号、アトム番号から該当のアトムを相互に取得します。<br>なお、アトム番号からアトムを取得しようとした場合に該当のアトムがなければこの述語は失敗します。<br><br>この述語は「HELPメンテナンスユーティリティ」で使用しています。<br>"; hash["reference"]=""; hash["sample"]="| ?-s_atom(end_of_file,X).<br>X = 32<br>yes<br>| ?-s_atom(X,61).<br>X = breaklevel<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="92"; hash["name"]="current_atom/1"; hash["common"]=""; hash["format"]="current_atom(-A)"; hash["argument"]="A:現在、ヒープ領域に登録されているアトムがユニファイされる"; hash["text"]="現在、ヒープ領域に存在するアトムを一つずつ取ってきてAにユニファイします。<br>この述語は非決定性ですからバックトラックによって後戻りしてきたら次のアトムをAにユニファイします。<br>これを繰返すと全てのアトムを取ってくることができます。"; hash["reference"]=""; hash["sample"]="| ?-current_atom(X).<br>X   = [];<br>X   = +;<br>X   = -;<br>X   = *;<br>X   = /;<br>X   = :-;<br>X   = .;<br>X   = ,;<br>X   = ;;<br>X   = ->;<br>X   = succ;"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="93"; hash["name"]="current_op/3"; hash["common"]="ISO"; hash["format"]="current_op(?I,?A1,?A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td width=&quot;18&quot; align='left' valign='top'>I</td>      <td width=&quot;381&quot;>:A2のオペレータの結合の優先順位がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:A2のオペレータの型がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:現在、宣言されているオペレータがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="現在、宣言されているオペレータのその結合の優先順位と型とを一つずつ取ってきて、それぞれの引数にユニファイします。<br>この述語は非決定性ですからバックトラックによって後戻りしてきたら次のオペレータをユニファイし、これを繰返すと全てのオペレータを取ってくることができます。"; hash["reference"]=""; hash["sample"]="| ?-current_op(N,K,O).<br>N       = 1200,<br>K       = fx,<br>O       = :-;<br>N       = 1200,<br>K       = xfx,<br>O       = :-;<br>N       = 1200,<br>O       = ?-;<br>N       = 900,<br>K       = fy,<br>O       = \+,<br>yes<br>| ?-"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="94"; hash["name"]="current_pred/2"; hash["common"]=""; hash["format"]="current_pred(?A,?I), current_predicate(?A/I)"; hash["argument"]="A:述語の述語名がユニファイされる<br>I:述語のアリティがユニファイされる"; hash["text"]="現在、登録されている述語のその述語名とアリティを一つずつ取ってきて、それぞれの引数にユニファイします。<br>この述語は非決定性ですから、バックトラックによって後戻りしてきたら次の述語をユニファイし、これを繰返すと全ての述語を取ってくることができます。<br>ISOのcurrent_predicate/1と同じです。"; hash["reference"]=""; hash["sample"]="| ?-current_pred(F,N).<br>F   = ;,<br>N   = 2;<br>F   = ->,<br>N   = 2;<br>F   = call,<br>N   = 1;<br>F   = log,<br>N   = 0;<br>F   = log,<br>N   = 1;<br>F   = edit,<br>N   = 0;<br>F   = edit,<br>N   = 1;<br>F   = error,<br>N   = 1;<br>F   = fail,<br>N   = 0;<br><br>| ?-current_predicate(F/N).<br>F = !,<br>N = 0<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="95"; hash["name"]="s_random/2"; hash["common"]=""; hash["format"]="s_random(+N,-I)"; hash["argument"]="N:乱数の上限を指定する<br>I:発生した乱数がユニファイされる"; hash["text"]="0からN-1を上限とする疑似乱数を発生し、Iにユニファイします。"; hash["reference"]="s_randomize/2"; hash["sample"]="| ?-repeat,s_random(10,X),write(X),put(32),fail.<br>1 9 1 6 7 6 3 7 1 2 7 9 4 7 1 8 2 4 8 8 1 6 2 0 4 8 5 9 4 4 4 9 9 4 5 3 2 1<br>7 4 3 1 9 0 7 3 8 4 2 6 9 8 7 7 4 8 7 8 3 2 1 9 3 7 4 4 4 3 5 1 3 2 8 0 9 0<br>3 4 9 4 4 3 9 8 5 3 8 1 2 3 8 9 8 5 1 0 6 1 8 1 8 7 7 2 8 2 3 6 6 9 6 5 1 3<br>8 0 7 6 1 6 0 3 1 0 4 3 1 5 8 9 5 4 5 7 4 4 6 7 7 5 2 6 8 8 9 1 9 8 0 5 0 2<br>9 6 0 2 2 9 2 6 7 3 6 0 5 2 1 7 1 1 5 3 2 6 6 8 1 5 8 6 9 4 6 6 2 8 8 1 6 8<br>7 8 9 7 9 0 5 8 2 6 9 7 1 7 5 1 6 4 4 9 9 6 1 5 5 6 0 7 5 0 7 9 5 6 8 5 3 7<br>0 7 5 2 3 0 4 9 8 5 8 0 0 9 7 7 4 4 7 5 9 2 3 2 2 3 1 9 7 3 0 4 3 7 8 0 8 8<br>1 2 7 4 9 1 9 3 6 2 0 7 2 0 0 5 3 5 7 7 4 4 3 3 8 6 4 4 5 9 2 4 4 2 4 2 5 3<br>2 3 4 0 2 3 7 2 0 7 7 6 1 7 5 6 7 9 0 8 5 7 4 2 5 6 5 8 8 2 8 5 2 7 6 7 3 3<br>5 6 9 4 4 5 9 6 9 2 9 5 6 1 7 8 3 7 2 6 9 1 0 0 4 5 6 3 6 4 6 7 6 3 9 1 4 7<br>5 0 0 5 5 8 8 6 9 8 1 5 6 0 6 0 4 7 8 6 4 0 3 4 1 0 0 4 3 6 1 0 5 6 8 6 7 6<br>7 8 9 4 5 1 0 2 8 6 7 0 7 7 4 6 2 2 9 6 5 6 4 0 6 9 6 2 9 1 2 6 4 7 0 8 2 4<br>1 0 0 3 6 1 7 9 8 0 2 9 8 9 7 4 7 7 5 3 9 1 2 9 6 1 1 4 9 8 6 9 7 4 8 2 5 8<br>2 5 6 1 9 3 7 1 3 2 0 6 8 9 9 3 9 1 1 3 4 8 2 4 9 1 4 3 9 4 9 5 2 1 6 7 2 5<br>1 8 0 7 5 7 4 2 9 1 8 4 4 8 1 2 8 4 6 7 3 1 5 8 5 4 2 6 6 4 6 1 4 0 4 6 6 7<br>5 8 1 1 5 1 1 9 0 7 6 3 4 4 5 7 2 6 5 6 2 9 6 5 3 2 1 6 3 4 9 0 5 6 5 0 6 5<br>3 3 2 6 6 0 6 2 0 0 5 2 0 5 6 1 0 4 9 4 0 2 6 6 4 0 7 2 6 6 8 5 1 0 0 2 1 3<br>8 4 3 5 0 8 7 0 5 3 5 6 3 0 2 9 9 3 7 9 3 9 3 0 2 5 1 1 8 3 3 7 4 6 7 1 9 4<br>INTERRUPT<== [中断キー] を押しました。<br>Interrepting A(bort),B(reak),C(ontinue),O(s level),N(odebug) or T(race) ?a<br>| ?-"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="s_randomize/2"; azlist.push(hash);
var hash={}; hash["id"]="96"; hash["name"]="e_edit/2"; hash["common"]=""; hash["format"]="e_edit(-I,+N)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>I</td>      <td>:変更前のバッファ番号がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>N</td>      <td>:変更後のバッファ番号を0~7の範囲内の値の数式で指定する<br>        実数を指定した場合は小数点以下が切捨てられる<br>        範囲外の数値を指定すると失敗する</td>    </tr>  </tbody></table>"; hash["text"]="まずNに現在のバッファ番号をユニファイした後、現在のバッファ番号をNで指定された番号に変更します。<br><br>この述語は現在のバッファ番号を変更するだけのもので、実際に領域が確保されていないバッファでも指定できますし、またその場合でも自ら領域確保はしません。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="97"; hash["name"]="e_end/0"; hash["common"]=""; hash["format"]="e_end"; hash["argument"]="なし"; hash["text"]="e_initによって禁止されたキーボードからの[中断キー(CTRL-S と CTRL-Q)]による割込みを許可し、逆にCTRL-G による割込みを禁止します。<br>AzEdit を終了する時には、必ず呼ぶ必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="98"; hash["name"]="e_free/0"; hash["common"]=""; hash["format"]="e_free"; hash["argument"]="なし"; hash["text"]="現在のバッファ番号のバッファが e_create/1 によって領域が確保されていれば、その領域を開放します。<br>もし確保されていなければ何もせずに失敗します。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="99"; hash["name"]="e_bell/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="ダブり削除"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="100"; hash["name"]="e_bothcase/2"; hash["common"]=""; hash["format"]="e_bothcase(-A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td nowrap>:変更前の状態が「on」「off」のいずれかでユニファイされる</td>    </tr>    <tr>      <td align='left' nowrap>A2</td>      <td nowrap>:変更後の状態を「on」「off」のいずれかで指定する<br>        「on」「off」以外を指定するとエラー(Illegal argument supplied)となる </td>    </tr>  </tbody></table>"; hash["text"]="e_fsearch/1 と e_bsearch/1 による探索において英字の大小を区別するかどうかを設定します。<br>「on」の状態で区別せず、「off」で区別を行います。<br>Prologが起動されたときのデフォルト値は「on」です。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="101"; hash["name"]="e_change/2"; hash["common"]=""; hash["format"]="e_change(-A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td nowrap>:変更前の状態が「on」「off」のいずれかでユニファイされる</td>    </tr>    <tr>      <td align='left' nowrap>A2</td>      <td nowrap>:変更後の状態を「on」「off」のいずれかで指定する<br>「on」「off」以外を指定するとエラー(Illegal argument supplied)となる</td>    </tr>  </tbody></table>"; hash["text"]="「on」「off」状態を保存します。<br>e_switch/3と同じ様にフラグとして使用できます。<br>Prolog-KABAの初期のバージョンで使われていた述語で、Prolog-KABA後期バージョンでは当初の機能は無くなったのですが述語は残ったため、ユーザが単にフラグとして使用している事が考えられ、その互換のためにAZ-Prologでも残されました。"; hash["reference"]="e_switch/3"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="102"; hash["name"]="e_forward/1"; hash["common"]=""; hash["format"]="e_forward(+N) {^G}"; hash["argument"]="N:ドットを前方に進める文字数を指定"; hash["text"]="Nの文字数分だけドットを前方に進めます。<br>ドットがバッファの最後にあったり、バッファの最後を越えて進めようとした場合は失敗します。<br><br>なお、この述語を実行しただけではドットが移動するだけで画面のカーソルは移動しません。(つまり、画面のカーソルとドットがずれる事になります)<br>画面のカーソルを移動するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="103"; hash["name"]="e_backward/1"; hash["common"]=""; hash["format"]="e_backward(+N) {^G}"; hash["argument"]="N:後戻りしたい文字数を指定<br>"; hash["text"]="Nの字数の分だけドットを後方に戻します。<br>ドットが既にバッファの先頭にあったり、バッファの先頭を越えて戻そうとした場合には、述語は失敗します。<br><br>なお、この述語を実行しただけではドット(バッファポインタ)が移動するだけで画面のカーソルは移動しません。(つまり、画面のカーソルとドットがずれる事になります)<br>画面のカーソルを移動するには e_disp/0 を実行して画面を更新する必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="104"; hash["name"]="e_up/1"; hash["common"]=""; hash["format"]="e_up(+N)   {^G}"; hash["argument"]="N:桁位置(行の先頭からの文字数)を指定する<br>"; hash["text"]="ドットを一つ上(後方)の物理行のNで指定される桁位置に移動させます。<br><br>e_up(0)で一つ上の行の先頭(画面の左端)に移動します。<br>また、その行にNで示されただけの文字がなかった場合にはその行の最後に移動します。<br>更に、ドットがバッファの先頭行にある時には述語は失敗します。<br>なお、この述語を実行しただけではドットが移動するだけで画面中のカーソルの位置は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>e_disp/0"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="105"; hash["name"]="e_down/1"; hash["common"]=""; hash["format"]="e_down(+N)   {^G}"; hash["argument"]="N:桁位置(行の先頭からの文字数)を指定する"; hash["text"]="ドットを一つ下(前方)の物理行のNで指定される桁位置に移動させます。<br>e_down(0) で一つ下の行の先頭(画面の左端)に移動します。<br>また、その行にNで示されただけの文字がなかった場合にはその行の最後に移動します。<br>更に、ドットが最終行にある時には述語は失敗します。<br>なお、この述語を実行しただけではドットが移動するだけで画面中のカーソルの位置は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="106"; hash["name"]="e_next/0"; hash["common"]=""; hash["format"]="e_next{^G}"; hash["argument"]="なし<br>"; hash["text"]="次の画面が表示されるようになるまでドットを前方に進めます。<br>なお、この述語を実行してもドットが移動するだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="107"; hash["name"]="e_previous/0"; hash["common"]=""; hash["format"]="e_previous{^G}"; hash["argument"]="なし<br>"; hash["text"]="一つ後方の画面が表示されるようになるまでドットを後方に戻します。<br>なお、この述語を実行してもドットが移動するだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br><br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="108"; hash["name"]="e_jump/1"; hash["common"]=""; hash["format"]="e_jump(+N) {^G}"; hash["argument"]="N:バッファ内の位置をその先頭からの文字数で指定する<br>"; hash["text"]="Nで示される位置にドットを移動させます。<br>ここで、位置はバッファの先頭からそこまでの文字数で表されます。<br>なお、この述語を実行してもドットが移動するだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]="<span style='color:#FFFF00'>バッファの先頭にドットを移動させるには</span><br>e_jump(0)<br><br><span style='color:#FFFF00'>バッファの最後に移動させるには</span><br>e_eob(P),e_jump(P)<br><br><span style='color:#FFFF00'>とします。</span><br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="109"; hash["name"]="e_mark/0"; hash["common"]=""; hash["format"]="e_mark{^G}"; hash["argument"]="なし<br>"; hash["text"]="現在のドットの位置にマークが付けられます。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="110"; hash["name"]="e_markend/0"; hash["common"]=""; hash["format"]="e_markend"; hash["argument"]="なし<br>"; hash["text"]="バッファの最後の位置にマークを付けます。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="111"; hash["name"]="e_insert/1"; hash["common"]=""; hash["format"]="e_insert(+N・L) {^G}"; hash["argument"]="N・L:文字コード(数式)、又はそのリスト(ストリング)を指定する"; hash["text"]="文字又は文字列をバッファ中のドット位置の直後に挿入し、ドットを一つ又は文字列の文字数分だけ前方に進めます。<br><br>なお、この述語を実行しただけでは文字がバッファに挿入されるだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="112"; hash["name"]="e_char/1"; hash["common"]=""; hash["format"]="e_char(-I)  {^G}"; hash["argument"]="I:ドットの直後の文字コードがユニファイされる"; hash["text"]="ドットの次にある文字の文字コードをIにユニファイします。<br>なお、ドットがバッファの最後にある場合には失敗します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="113"; hash["name"]="e_consult/0"; hash["common"]=""; hash["format"]="e_consult"; hash["argument"]="なし"; hash["text"]="ドットからバッファの前方に向かってマークまでのテキストを consult し、ドットはマークの位置に移動します。<br>既にドットがマークの後ろにある場合には何もしません。<br>なお、consult 中に「Syntax Error」が起きた時には、consult を中止してドットをエラーの位置に移動します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="114"; hash["name"]="e_reconsult/0"; hash["common"]=""; hash["format"]="e_reconsult"; hash["argument"]="なし"; hash["text"]="ドットから前方に向かってマークまでのテキストを reconsult し、ドットはマークの位置に移動します。<br>既にドットがマークの後ろにある場合には何もしません。<br>なお reconsult 中に「Syntax Error」が起きた時には、reconsult を中止してドットをエラーの位置に移動します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="115"; hash["name"]="e_delete/1"; hash["common"]=""; hash["format"]="e_delete(+N) {^G}"; hash["argument"]="N:削除したい文字数を指定する"; hash["text"]="ドットの直後から前方に向ってNで指定された数だけの文字をバッファから削除します。<br>バッファ中でドットの前方にある文字数より多く削除しようとした場合には、述語は失敗し、バッファは変更されません。<br><br>なお、この述語を実行しただけでは文字がバッファから削除されるだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="116"; hash["name"]="e_new/0"; hash["common"]=""; hash["format"]="e_new"; hash["argument"]="なし"; hash["text"]="現在のバッファおよびキルバッファをクリア(空に)します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="117"; hash["name"]="e_yank/0"; hash["common"]=""; hash["format"]="e_yank"; hash["argument"]="なし"; hash["text"]="キルバッファの内容をドットの前に挿入し、ドットを挿入した文字列の直後に移動させます。<br>この述語を実行してもキルバッファ内容は変化しません。<br>従って、同じ文字列を何回でも挿入できます。<br><br>なお、この述語を実行するとバッファ内容は変化しますが、画面表示は変化しません。<br><br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="118"; hash["name"]="e_kill/1"; hash["common"]=""; hash["format"]="e_kill(+N) {^G}"; hash["argument"]="N:文字数を指定する"; hash["text"]="ドットの直後から後方に向ってNで指定された数の文字がキルバッファにコピーされ付け加えられます。<br>ドットの位置およびバッファは変更されません。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="119"; hash["name"]="e_kill/0"; hash["common"]=""; hash["format"]="e_kill{^G}"; hash["argument"]="なし"; hash["text"]="キルバッファをクリアします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="120"; hash["name"]="e_bob/0"; hash["common"]=""; hash["format"]="e_bob {^G}"; hash["argument"]="なし"; hash["text"]="ドットがバッファの先頭にある場合に成功し、それ以外のときには失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="121"; hash["name"]="e_eob/0"; hash["common"]=""; hash["format"]="e_eob {^G}"; hash["argument"]="なし"; hash["text"]="ドットがバッファの最後にある場合に成功し、それ以外のときには失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="122"; hash["name"]="e_bol/0"; hash["common"]=""; hash["format"]="e_bol {^G}"; hash["argument"]="なし"; hash["text"]="ドットが行の先頭にある場合に成功し、それ以外のときには失敗します。<br>行の先頭かどうかは、バッファの先頭であるか、あるいはドットの前の文字が「NL」かどうかによって判断されます。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="123"; hash["name"]="e_eol/0"; hash["common"]=""; hash["format"]="e_eol {^G}"; hash["argument"]="なし"; hash["text"]="ドットが行の最後にある場合に成功し、それ以外のときには失敗します。<br>行の最後かどうかは、バッファの最後であるか、あるいはドットの後ろの文字が NLかどうかによって判断しています。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="124"; hash["name"]="e_pos/1"; hash["common"]=""; hash["format"]="e_pos(-I) {^G}"; hash["argument"]="I:ドット位置がユニファイされる"; hash["text"]="現在のドット位置(バッファの先頭からドットまでの文字数)をIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="125"; hash["name"]="e_eob/1"; hash["common"]=""; hash["format"]="e_eob(-I) {^G}"; hash["argument"]="I:バッファ最終文字位置(現在のバッファに格納されている文字数)がユニファイされる"; hash["text"]="バッファ最終文字位置(現在のバッファに格納されている文字数)をIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="126"; hash["name"]="e_bol/1"; hash["common"]=""; hash["format"]="e_bol(-I){^G}"; hash["argument"]="I:現在のドットがある行の先頭の位置がユニファイされる"; hash["text"]="現在のドットがある行の先頭の位置(バッファの先頭からその位置までの文字数)をIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="<span style='color:#FFFF00'> AzEdit のCTRL-Aを行う本体は、次の様になります。</span><br>e_bol(Position),e_jump(Position)<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="127"; hash["name"]="e_eol/1"; hash["common"]=""; hash["format"]="e_eol(-I) {^G}"; hash["argument"]="I:ドットがある行の最後の文字の位置がユニファイされる"; hash["text"]="現在、ドットがある行の文字数をユニファイします。<br>ここでいう行とは画面の物理行ではなく、前行の NL の次の文字(又はバッファの先頭)から NL までの論理行を意味します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="128"; hash["name"]="e_mark/1"; hash["common"]=""; hash["format"]="e_mark(-I){^G}"; hash["argument"]="I:マーク位置がユニファイされる"; hash["text"]="マークの現在位置をIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="<span style='color:#FFFF00'>マークの位置へのドットの移動は</span><br>e_mark(Ps),e_jump(Ps)<br><span style='color:#FFFF00'>で行うことができます。</span>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="129"; hash["name"]="e_alpha/1"; hash["common"]=""; hash["format"]="e_alpha(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが英字を表すキャラクターコードであった場合には成功し、それ以外の場合に失敗します。"; hash["reference"]=""; hash["sample"]="| ?-e_alpha(97).  <span style='color: #FFFF00'><== 97は英字の「a」を表すキャラクターコードなので成功。</span><br>yes<br>| ?-e_alpha(47).  <span style='color: #FFFF00'><== 47は数字の「1」を表すキャラクターコードなので失敗。</span><br>no"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="130"; hash["name"]="e_lower/1"; hash["common"]=""; hash["format"]="e_lower(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが半角英小文字(1バイト文字)の文字コードならば成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_lower(97). <span style='color: #FFFF00'><== &quot;a&quot;を表す文字コード</span><br>yes<br>| ?-e_lower(&quot;a&quot;).<br>yes<br>| ?-e_lower(&quot;ｲ&quot;).<br>no"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="131"; hash["name"]="e_upper/1"; hash["common"]=""; hash["format"]="e_upper(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが半角英大文字(1バイト文字)の文字コードならば成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_upper(65). <span style='color: #FFFF00'><== &quot;A&quot;を表す文字コード</span><br>yes<br>| ?-e_upper(&quot;A&quot;).<br>yes<br>| ?-e_upper(&quot;a&quot;).<br>no"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="132"; hash["name"]="e_digit/1"; hash["common"]=""; hash["format"]="e_digit(+N)"; hash["argument"]="N:調べたい文字のキャラクタコード"; hash["text"]="Nが数字を表すキャラクタコードであった場合には成功し、そうでない場合に失敗します。"; hash["reference"]=""; hash["sample"]="| ?-e_digit(48).   <span style='color: #FFFF00'><== &quot;A&quot;を表す文字コード</span><br>yes<br>| ?-e_digit(&quot;1&quot;).<br>yes<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="133"; hash["name"]="e_kana/1"; hash["common"]=""; hash["format"]="e_kana(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが半角文字(1バイトコード文字)の文字コードならば成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_kana(178).  <span style='color: #FFFF00'><== &quot;ｲ&quot;を表す文字コード</span><br>yes<br>| ?-e_kana(&quot;ｲ&quot;).<br>yes<br>| ?-e_kana(&quot;a&quot;).<br>no"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="134"; hash["name"]="e_kanji/1"; hash["common"]=""; hash["format"]="e_kanji(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが漢字などの多バイト文字の文字コードならば成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_kanji(35519). <span style='color: #FFFF00'><== &quot;漢&quot;を表す文字コード</span><br>yes<br>| ?-e_kanji(&quot;漢&quot;).<br>yes<br>| ?-e_kanji(&quot;a&quot;).<br>no<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="135"; hash["name"]="e_kanji1/1"; hash["common"]=""; hash["format"]="e_kanji1(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが漢字などの多バイト文字の文字コードの第1バイト目ならば(可能性があれば)成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_kanji(0'8ABF). <span style='color: #FFFF00'><== &quot;漢&quot;を表す文字コード</span><br>yes<br>| ?-e_kanji1(0'8A).<br>yes<br>| ?-e_kanji1(0'BF).<br>no<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="136"; hash["name"]="e_kanji2/1"; hash["common"]=""; hash["format"]="e_kanji2(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nが漢字などの多バイト文字の文字コードの第2バイト目以降ならば(可能性があれば)成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_kanji(0'8ABF). <span style='color: #FFFF00'><== &quot;漢&quot;を表す文字コード</span><br>yes<br>| ?-e_kanji2(0'8A).<br>yes<br>| ?-e_kanji2(0'BF).<br>yes"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="137"; hash["name"]="e_space/1"; hash["common"]=""; hash["format"]="e_space(+N)"; hash["argument"]="N:調べたい一文字の文字コードを指定する"; hash["text"]="Nがコントロールコードか半角(1バイトコード文字)の空白文字の文字コード(32以下)ならば成功し、それ以外ならば失敗します。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_space(32).  <span style='color: #FFFF00'><== &quot; &quot;を表す文字コード</span><br>no<br>| ?-e_space(13).<br>yes<br>| ?-e_space(&quot;a&quot;).<br>no<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="138"; hash["name"]="e_lower/2"; hash["common"]=""; hash["format"]="e_lower(+N,-I)"; hash["argument"]="N:一文字の文字コードを指定する<br>I:文字コードがユニファイされる"; hash["text"]="Nが英大文字を表す文字コードの場合には、小文字に変換してその文字コードをIにユニファイします。<br>それ以外の場合には、Nの文字コードをそのままIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]="| ?-e_lower(&quot;A&quot;,X).<br>X = 97   <span style='color: #FFFF00'><== &quot;a&quot;を表す文字コード</span><br>yes<br>| ?-e_lower(&quot;a&quot;,X).<br>X = 97   <span style='color: #FFFF00'><== &quot;a&quot;を表す文字コード</span><br>yes<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="139"; hash["name"]="e_upper/2"; hash["common"]=""; hash["format"]="e_upper(+N,-I)"; hash["argument"]="N:一文字の文字コードを指定する<br>I:文字コードがユニファイされる"; hash["text"]="Nが英大文字を表す文字コードの場合には、小文字に変換してその文字コードをIにユニファイします。<br>それ以外の場合には、Nの文字コードをそのままIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]="| ?-e_upper(&quot;a&quot;,X).<br>X = 65  <span style='color: #FFFF00'><== &quot;A&quot;を表す文字コード</span><br>yes<br>| ?-e_upper(&quot;A&quot;,X).<br>X = 65  <span style='color: #FFFF00'><== &quot;A&quot;を表す文字コード</span><br>yes<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="140"; hash["name"]="e_fsearch/1"; hash["common"]=""; hash["format"]="e_fsearch(+L){^G}"; hash["argument"]="L:検索する文字列の文字コードのリスト(ストリング)を指定する"; hash["text"]="ストリング(文字コードのリスト)からなる文字列を与えられると、その文字列と一致する文字列を前方に向かって探索します。<br>探索に成功するとドットは一致した文字列の直後に移動し、述語は成功します。<br>探索に失敗した場合には、ドットはバッファの最後に移動し、述語は失敗します。<br><br>なお、この述語を実行してもドットが移動するだけで画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]="<span style='color:#FFFF00'>appendという文字列を後方に探索し、それをconcatに変えたい場合には次のようになります。</span><br>e_fsearch(&quot;append&quot;),e_backward(6),e_delete(6),e_insert(&quot;concat&quot;)"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="141"; hash["name"]="e_bsearch/1"; hash["common"]=""; hash["format"]="e_bsearch(+L){^G}"; hash["argument"]="L:検索する文字列の文字コードのリスト(ストリング)を指定する"; hash["text"]="ストリング(文字コードのリスト)からなる文字列を与えられると、その文字列と一 致する文字列を後方に向かって探索します。<br>探索に成功するとドットは一致した文字列の直前に移動し、述語は成功します。<br>探索に失敗した場合には、ドットはバッファの先頭に移動し、述語は失敗します。<br><br>なお、この述語を実行しただけではドットが移動するだけで画面のカーソルは移動しません。<br>画面のカーソルを移動するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>appendという文字列を後方に探索し、それをconcatに変えたい場合には次のようになります。</span><br>e_bsearch(&quot;append&quot;),e_delete(6),e_insert(&quot;concat&quot;)"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="142"; hash["name"]="e_nword/1"; hash["common"]=""; hash["format"]="e_nword(-I) {^G}"; hash["argument"]="I:区切り文字の位置(バッファの先頭からの文字数)がユニファイされる"; hash["text"]="現在のドットから前方に捜し、最初に見つけた単語の次の区切り文字の位置をIにユニファイします。<br>区切り文字とは「空白」「.」「.」「/」「;」「\&quot;」「&#39;」<br>「(」「)」「[」「]」「-」「+」「*」「&」です。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="143"; hash["name"]="e_pword/1"; hash["common"]=""; hash["format"]="e_pword(-I) {^G}"; hash["argument"]="I:単語りの先頭文字の位置(バッファの先頭からの文字数)がユニファイされる"; hash["text"]="現在のドットからバッファの後方に捜して最初の単語の先頭文字の位置をIにユニファイします。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="144"; hash["name"]="e_disp/0"; hash["common"]=""; hash["format"]="e_disp"; hash["argument"]="なし"; hash["text"]="画面の更新を行います。<br>バッファの内容と画面の表示が異なっている場合に画面に更新された部分を表示し、ドットの次の文字の所にカーソルを表示します。<br>逆に言えば、それぞれの述語によってドット位置やバッファ内容を変更しても、この e_disp/0 を呼出して実行しないと、画面はまったく変化しないという事です。<br>そのため、AzEdit では一つのコマンドを実行するたびに、この述語を実行しています。<br><br>画面更新中にキーボードから入力が行われた時には、更新をそこで打ち切ります。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション /curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="145"; hash["name"]="e_dline/1"; hash["common"]=""; hash["format"]="e_dline(-I)"; hash["argument"]="I:行数がユニファイされる"; hash["text"]="現在、AzEdit が使用している画面の行数(エコー行を除く)をIにユニファイします。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="146"; hash["name"]="e_echo/0"; hash["common"]=""; hash["format"]="e_echo"; hash["argument"]="なし"; hash["text"]="エコー行(e_echo/1で表示される行)をクリアします。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="147"; hash["name"]="e_echo/1"; hash["common"]=""; hash["format"]="e_echo(+N)"; hash["argument"]="N:表示したい一文字の文字コードを指定する"; hash["text"]="エコー行(エディタで使用している行の直後の行)にNで指定された文字コードに対応する文字を表示します。"; hash["reference"]=""; hash["sample"]="Ok と表示するには、<br>e_echo,e_echo(79),e_echo(107)<br>又は<br>e_echo,e_echo(\&quot;O\&quot;),e_echo(\&quot;k\&quot;)<br>とします。<br>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="148"; hash["name"]="e_pos/2"; hash["common"]=""; hash["format"]="e_pos(-I1,-I2){^G}"; hash["argument"]="I1:カーソルの画面桁位置<br>I2:カーソルの画面行位置"; hash["text"]="ドットに対応する画面のカーソルの桁位置がI1に、行位置がI2にそれぞれユニファイされます。<br>カーソル座標は画面一番上の左端が(1,1)です。<br>このカーソルの位置は現在のドット位置で e_disp/0 を実行した時にカーソルが表示されるであろう位置です。<br>従って最後に e_disp/0 を実行した時点から現在までにドットが移動した場合は現在カーソルが表示されている位置とは一致しません。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション<br>   /curses を指定してコンパイルする必要があります。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="149"; hash["name"]="e_refresh/0"; hash["common"]=""; hash["format"]="e_refresh"; hash["argument"]="なし"; hash["text"]="AzEdit で使用している画面の部分をクリアします。この述語ではバッファの内容は表示されず、次にe_disp/0 が実行されたときに行われます。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br><br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="150"; hash["name"]="e_repos/1"; hash["common"]=""; hash["format"]="e_repos(+N) {^G}"; hash["argument"]="N:画面物理行数を指定する"; hash["text"]="現在のドットのある行が、Nで示された画面の行にくるように画面を再配置します。<br>例えば、e_repos(1)により、ドットの位置を変えることなしに、カーソルを画面の先頭の行に持っていくことができます。(ただし、カーソルがドット位置を指している{一致している}場合)バッファの先頭からの行数が足りなくて再配置できない場合には何も行いません。<br>なお、この述語を実行しても画面表示は変化しません。<br>実行結果を画面に反映するには e_disp/0 を実行して画面を更新する必要があります。<br>"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="151"; hash["name"]="restore/1"; hash["common"]=""; hash["format"]="restore(+A)"; hash["argument"]="A:ファイル名(パス指定も可)"; hash["text"]="すべてのファイルをクローズした後、指定されたバイナリファイルからプログラム<br>を読み込みます。save/1によって書き出されたファイルを読み込むことができます。<br>この save/1 によって書き出された時と同じ実行環境にできます。<br>一般に consult に比べ、構文解析などをしないため短時間で読み込むことができます。<br>この述語が実行されるとすべてのブレークレベルがキャンセルされ、インタープリタのトップレベルに制御が移ります。<br>また、プログラム中にこの述語を書いておくと、この述語を実行直後にプログラムの実行を強制終了し、インタープリタのトップレベルに制御が移ります。"; hash["reference"]="「(操)5.7ヒープ領域の保存」<br>"; hash["sample"]="| ?ｰrestore('prolog.bin').<br>top_level<br><span style='color:#FFFF00'>カレントディレクトリよりprolog.binをリストアしトップレベルに制御を移します。</span>"; hash["genre"]="1"; hash["used"]="true"; hash["incident"]="save/1"; azlist.push(hash);
var hash={}; hash["id"]="152"; hash["name"]="save/1"; hash["common"]=""; hash["format"]="save(+A)"; hash["argument"]="A:ファイル名(パス指定も可)"; hash["text"]="ヒープ領域にあるプログラム、その他の情報全てをバイナリイメージで引数で指定されたファイルに書き出します。<br>従ってファイルはバイナリ形式のファイルになります。<br>このファイルは restore/1 によって読み込むことができます。<br><br>【注意】<br>array、neuronもセーブされるが、neuronの知識自体はセーブされません。"; hash["reference"]="「(操)5.7ヒープ領域の保存」<br>"; hash["sample"]="| ?-save('prolog.bin').<br>yes<br><span style='color: #FFFF00'>カレントディレクリの prolog.bin へ現在のヒープ領域にあるプログラム、その他の情報全てを書き出します。</span>"; hash["genre"]="1"; hash["used"]="true"; hash["incident"]="restore/1"; azlist.push(hash);
var hash={}; hash["id"]="153"; hash["name"]="see/1"; hash["common"]=""; hash["format"]="see(+A)"; hash["argument"]="A:入力ストリーム(ファイル)名"; hash["text"]="Aで指定されたファイルを入力ファイルとしてオープンし、現在の入力ストリームをそのファイルに切換えます。<br>また、Aで指定されたファイルが入力ファイルとしてオープンされている場合は現在の入力ストリームをそのファイルに切換える事のみとします。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-see(&#39;test.txt&#39;),read(X),seen.<br>X = d(1000)"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="seen/1<br>close/1<br>seeing/1"; azlist.push(hash);
var hash={}; hash["id"]="154"; hash["name"]="see/2"; hash["common"]=""; hash["format"]="see(+A,-S), open(+A,read,-S)"; hash["argument"]="A:入力ファイル名<br>S:入力ストリーム値"; hash["text"]="Aを入力ファイルとしてオープンし、そのストリーム値をSにユニファイします。<br>このストリーム値を read/2,get/2,get0/2 の第一引数に渡すと現在の入力ストリームに関係無く指定のファイルから入力します。<br>入力終了後は必ず seen/1 または close/1 でクローズします。<br>ISOのopen/3と同じです。<br><br>【注意】<br>seen/0 ではクローズ出来ません。<br>現在の入力ストリームには影響しません(切換わらない)。"; hash["reference"]="「(操)5.6ストリーム入出力」"; hash["sample"]="| ?-see(test,S),get(S,X),seen(S).<br>S = fp_6600,<br>X = 96<br>yes<br><br>| ?-open('test',read,S),get_code(S,X),close(S).<br>S = fp_123,<br>X = 96<br>yes<br><br><span style=&quot;color: #FFFF00&quot;>test というファイルの先頭の一文字のキャラクターコードを X にユニファイします。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="seen/1<br>close/1<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="155"; hash["name"]="seeing/1"; hash["common"]=""; hash["format"]="seeing(-A)"; hash["argument"]="A:現在の入力ストリーム(入力対象となっているファイル名)"; hash["text"]="現在の入力ストリーム(現在、入力対象となっているファイル名)をAにユニファイされる。<br>立上げ直後のデフォルト値は user(キーボード)です。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-seeing(F).<br>F = user<br>yes<br><br>| ?-see(&#39;test.pl&#39;),read(X),seeing(F),seen.<br>X = a:-b,<br>F = test.pl<br>yes"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="see/1"; azlist.push(hash);
var hash={}; hash["id"]="156"; hash["name"]="seen/0"; hash["common"]=""; hash["format"]="seen"; hash["argument"]="なし"; hash["text"]="現在の入力ストリームであるファイル(最も最近に see/1 によってオープン、又は切換えられたファイル)をクローズし、入力ストリームを see/1 が実行される前の入力ストリームに戻します。<br><br><br>◎注意<br>see/2 によってオープンされたファイルはこの seen/0 ではクローズ出来ません。<br>"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-see('test.txt'),read(X),seen.<br>X = d(1000)<br>yes"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="seen/1"; azlist.push(hash);
var hash={}; hash["id"]="157"; hash["name"]="seen/1"; hash["common"]=""; hash["format"]="seen(+S)"; hash["argument"]="S:入力ファイルをsee/2 によってオープンしたときに返されたストリーム値"; hash["text"]="see/2 によってオープンされた入力ファイルをクローズします。<br>なお、現在の入力ストリームには影響を与えません。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-see(test,S),get(S,X),seen(S).<br>S = fp_6600,<br>X = 96<br>yes<br><br><span style='color:#FFFF00'>testというファイルの先頭の一文字のキャラクターコードを X にユニファイします</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="see/2"; azlist.push(hash);
var hash={}; hash["id"]="158"; hash["name"]="tell/1"; hash["common"]=""; hash["format"]="tell(+A)"; hash["argument"]="A:出力ストリーム(ファイル)名"; hash["text"]="Aで指定されたファイルを出力ファイルとしてオープンし、現在の出力ストリームをそのファイルに切換えます。<br>また、Aで指定されたファイルが出力ファイルとしてオープンされている場合は現在の出力ストリームをそのファイルに切換える事のみします。<br><br>【注意】<br>既に同名ファイルが存在する場合はオープンした時点でその内容が消去されます。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-tell('abc.txt'),write(abcdefgh),told.<br>yes<br><br><span style='color:#FFFF00'>abc.txt というファイルに abcdefgh というアトムを書込む</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="telling/1<br>told/0"; azlist.push(hash);
var hash={}; hash["id"]="159"; hash["name"]="tell/2"; hash["common"]=""; hash["format"]="tell(+A,-S), open(+A,write,-S)"; hash["argument"]="A:出力ファイル名<br>S:出力ストリーム値"; hash["text"]="Aを出力ファイルとしてオープンし、そのストリーム値をSにユニファイします。<br>このストリーム値を write/2, put/2, put_code/2, put_char/2 の第一引数に渡すと現在の出力ストリームに関係無く指定のファイルへ出力します。<br>出力終了後は必ず told/1 または close/1 でクローズします。<br>ISOのopen/3と同じです。<br><br>【注意】<br>told/0 ではクローズ出来ません。<br>現在の出力ストリームには影響しません(切換わりません)。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-tell('abc.txt',S),write(S,abcdefgh),told(S).<br>S       = fp_628c9a0<br><br>| ?-open('abc.txt',write,S),write(S,abcdefgh),nl(S),close(S).<br><br><span style='color:#FFFF00'>abc.txt というファイルに abcdefgh というアトムを書込みます。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="told/1<br>close/1<br>tella/1<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="160"; hash["name"]="tella/1"; hash["common"]=""; hash["format"]="tella(+A)"; hash["argument"]="A:ファイル名"; hash["text"]="アペンドモードでオープンされる以外は tell/1 と同じ機能を持ちます。<br>アペンドモードとは同名ファイルが既に存在する場合、その内容はそのままにしておき、以降に書込むデータをそのファイルの最後に追加するモードです。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="?-tell('abc.txt'),write(abc),told.<br>yes<br>?-tella('abc.txt'),write(def),told.<br>yes<br>?-<br><br><span style='color:#FFFF00'>この結果、abc.txt というファイルの内容は abcdef となります。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/1"; azlist.push(hash);
var hash={}; hash["id"]="161"; hash["name"]="tella/2"; hash["common"]=""; hash["format"]="tella(+A,-S), open(+A,append,-S)"; hash["argument"]="A:ファイル名<br>S:出力ストリーム値"; hash["text"]="アペンドモードでオープンされる以外は tell/2, open/3(write) と同じ機能を持ちます。<br>アペンドモードとは同名ファイルが既に存在する場合、その内容はそのままにしておき、以降に書込むデータをそのファイルの最後に追加するモードです。<br>ISOのopen/3と同じです。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-tell('abc.txt',S),write(S,abc),told(S).<br>S       = fp_66dc9a0<br><br>| ?-tella('abc.txt',S),write(S,def),told(S).<br>S       = fp_66dc9a0<br><br>| ?-open('abc.txt',append,S),write(S,gh),close(S).<br><br><span style='color:#FFFF00'>この結果、abc.txt というファイルの内容は abcdefgh となります。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/2<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="162"; hash["name"]="telling/1"; hash["common"]=""; hash["format"]="telling(-A)"; hash["argument"]="A:現在の出力ストリーム(出力対象となっているファイル名)がユニファイされる。<br>"; hash["text"]="現在の出力ストリーム(現在、出力対象となっているファイル名)がAにユニファイされる。<br>立上げ直後のデフォルト値は user(ディスプレイ)です。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-telling(F).<br>F = user<br>yes<br><br>| ?-tell(&#39;test.pl&#39;),write((a:-b)),put(46),telling(F),told.<br>F = test.pl<br>yes"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/1"; azlist.push(hash);
var hash={}; hash["id"]="163"; hash["name"]="told/0"; hash["common"]=""; hash["format"]="told"; hash["argument"]="なし"; hash["text"]="現在の出力ストリームであるファイル(最も最近に tell/1 によってオープン、又は切換えられたファイル)をクローズし、出力ストリームを tell/1 が実行される前の出力ストリームに戻します。<br><br>【注意】<br>tell/2 によってオープンされたファイルはこの told/0 ではクローズ出来ません。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="?-tell('abc.txt'),write(abcdefgh),told.<br>yes<br><br><span style='color:#FFFF00'>abc.txt というファイルに abcdefgh というアトムを書込みます。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/1"; azlist.push(hash);
var hash={}; hash["id"]="164"; hash["name"]="told/1"; hash["common"]=""; hash["format"]="told(+S), close(+S)"; hash["argument"]="S:出力ファイルをtell/2, open/3 によってオープンしたときに返されたストリーム値"; hash["text"]="tell/2, open/3 によってオープンされた出力ファイルをクローズします。<br>なお、現在の出力ストリームには影響を与えません。<br>ISOのclose/1と同じです。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-tell('abc.txt',S),write(S,abcdefgh),told(S).<br>S       = fp_66dc9a0                  <span style=&quot;color: #FFFF00&quot;><== abc.txt というファイルに abcdefgh というアトムを書込みます</span><br>| ?-open('abc.txt',write,S),write(S,abc),close(S).<br>S = fp_123                            <span style=&quot;color: #FFFF00&quot;><== abc.txtというファイルに abcというアトムを書き込みます。</span><br>yes"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/2<br>open/3<br>close/1"; azlist.push(hash);
var hash={}; hash["id"]="165"; hash["name"]="listing/0"; hash["common"]=""; hash["format"]="listing"; hash["argument"]="なし"; hash["text"]="ヒープ領域に登録(consult 又は assert)されたプログラムを現在の出力ストリームに出力します。<br>通常は出力ストリームがコンソール画面になっていますから、画面に出力(表示)します。<br>tell/1 などで出力ストリームを切換えると、任意のファイルに出力出来ます。<br>このファイルは標準テキストファイルになります。<br><br>ユーザーモードの場合はユーザ述語のみ、システムモードの場合はシステム述語のみを出力します。<br><br>また、既にコンパイルされて「コンパイル組込み述語」になった述語はは出力できません。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-listing.<br>・<br>・ <span style='color:#FFFF00'>プログラム出力</span><br>・<br>yes"; hash["genre"]="3"; hash["used"]="true"; hash["incident"]="tell/1"; azlist.push(hash);
var hash={}; hash["id"]="166"; hash["name"]="listing/1"; hash["common"]=""; hash["format"]="listing(+A・A/I・L)"; hash["argument"]="<table width='0' border='0' cellpadding='5' class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A</td>      <td>:出力したい述語名</td>    </tr>    <tr>      <td align='left' valign='top'>A/I</td>      <td>:出力したい述語名/アリティ</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td nowrap>:複数の A 又は A/I を要素とするリスト</td>    </tr>  </tbody></table>"; hash["text"]="listing/0 と同様にヒープ領域に登録(consult 又は assert)されたプログラムを現在の出力ストリームに出力します。<br>listing/0 との違いは引数によって出力する述語を限定できる事です。<br>述語名とアリティを指定した場合はその述語のみを出力します。<br>述語名のみを指定した場合は、アリティに関係無くその述語名の述語をすべて出力します。<br>述語指定の並びをリスト形式にすると複数の述語を出力することが出来ます。<br><br>指定された述語がヒープ領域に無かった場合は、何もせずに成功します。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-listing.<br>a.<br>a(X,Y,Z) :- Z is X+Y.<br>b :- a.<br>b(X) :- write(X).<br>yes<br>| ?-listing(a).<br>a.<br>a(X,Y,Z) :- Z is X+Y.<br>yes<br>| ?-listing(b/1).<br>b(X) :- write(X).<br>yes"; hash["genre"]="3"; hash["used"]="true"; hash["incident"]="listing/0<br>tell/1"; azlist.push(hash);
var hash={}; hash["id"]="167"; hash["name"]="listing/2"; hash["common"]=""; hash["format"]="listing(+S,+A・A/I・L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td nowrap style='border-bottom:#BBBBBB dotted 1px;'>S</td>      <td nowrap style='border-bottom:#BBBBBB dotted 1px;'>:tell/2,tella/2の第2引数に返されたストリーム値<br> :tell/2,tella/2の第2引数に返されたストリーム値</td>    </tr>    <tr>      <td width='24' >A</td>      <td>:出力したい述語名</td>    </tr>    <tr>      <td>A/I</td>      <td>:出力したい述語名/アリティ</td>    </tr>    <tr>      <td>L</td>      <td>:複数の A 又は A/I を要素とするリスト</td>    </tr>  </tbody></table>"; hash["text"]="現在のストリームに関わり無くSで識別されるストリームにヒープ領域に存在するプログラムを出力します。<br>それ以外の機能はlisting/1と同じです。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>listing/1  tell/2"; hash["sample"]="| ?-listing.<br>a.<br>a(X,Y,Z) :- Z is X+Y.<br>b :- a.<br>b(X) :- write(X).<br>yes<br>| ?-tell('test.pl',S),listing(S,a),told(S).<br>S       = fp_66dc9a0<br>| ?-<br><br>----------------------------------------<br><test.pl の内容><br>a.<br>a(X,Y,Z) :- Z is X+Y."; hash["genre"]="3"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="168"; hash["name"]="read/1"; hash["common"]="ISO"; hash["format"]="read(-T)"; hash["argument"]="T:読み込まれた項がユニファイされる"; hash["text"]="現在の入力ストリームから項を一つ読み込みます。<br>現在の入力ストリームが「user」 か「con」の場合は画面に現在のプロンプトが現れてキー入力待ちの状態になります。ここで項を入力し最後に 「.」(ピリオド)を入力してリターンキーを押すと、その項がTとユニファイされます。<br><br>現在の入力ストリームがディスク上の「項1<終止符>項2<終止符>・・・項n<終止符>」という書式のファイルならば現在のファイルポインタが指す項を読み込んでTにユニファイします。そして、ファイルポインタを次の項に移します。<br>ファイルの最後まで来ると「end_of_file」というアトムをTにユニファイします。<br>「end_of_file」が返されたにもかかわらず同じファイルで続けて読み込もうとするとエラー(End of file encountered)になります。<br><br>・なお、この述語は決定性述語なのでバックトラックしてきても失敗します。<br>繰返して実行する場合は repeat/0,repeat/1 を前に書きます。<br>・空白など項として許されない文字が含まれている場合はエラー(syntax error)<br>となります。<br>ただし、この場合でもシングルクォートで囲ってアトムすれば入力できます。<br>・未代入の変数を入力した場合はTも未代入のままになります。<br>・ストリングを入力した場合はその実態であるキャラクタコードのリストに変換さ<br>れます。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-see(test),repeat,read(X),write(X),nl,X==end_of_file,seen.<br>abc<br>def<br>ghi<br>end_of_file<br>yes<br>| ?-read(X).<br>|:abcdefg.<br>X = abcdefg<br>yes<br><br>| ?-read(X).<br>|:'abc defg'.<br>X = abc defg<br>yes<br><br>| ?-read(X).<br>|:Y.<br>X = X<br>yes<br><br>| ?-read(X).<br>|:&quot;abc&quot;.<br>X = [97,98,99]<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="write/1<br>writeq/1"; azlist.push(hash);
var hash={}; hash["id"]="169"; hash["name"]="read/2"; hash["common"]="ISO"; hash["format"]="read(+S,-T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>:指定ファイルのストリーム値<br>        (see/2 open/3でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign='top'>T</td>      <td>:読み込まれた項がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="read/1 が現在の入力ストリームから読み込むのに対して、現在の入力ストリームに関係無く see/2 open/3 でオープンされた任意の入力ストリームから項を読み込む事が出来ます。<br>入力ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数の入力ストリームがある(複数のファイルがオープンされている)場合にいちいち現在の入力ストリームを切換えなくてもよいので便利です。<br>これ以外は read/1 と同じです。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-see(test,S),repeat,read(S,X),write(X),nl,X==end_of_file,seen(S).<br>abc<br>def<br>ghi<br>end_of_file<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="read/1<br>see/2<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="170"; hash["name"]="display/1"; hash["common"]=""; hash["format"]="display(+T), write_canonical(+T)"; hash["argument"]="T:出力する項"; hash["text"]="Tを正規の表現で現在の出力ストリームに出力します。<br>ISOの write_canonical/1にほぼ同じです。<br><br>・演算子形式の複合項は述語形式に直されて出力されます。<br>・ストリングはその実態であるキャラクタコードのリストととして出力されます。<br>・リスト形式の複合項は述語形式に直されず、そのまま出力されます。<br>・未代入の変数の場合は変数名がそのまま出力されます。"; hash["reference"]=""; hash["sample"]="| ?-write_canonical(1+2),nl.<br>+(1,2)<br>yes<br>| ?-display(&#39;abcdef&#39;),nl.<br>abcdef<br>yes<br>| ?-display(&#39;ABCDEF&#39;),nl.<br>&#39;ABCDEF&#39;<br>yes<br>| ?-display(&#39;abc def&#39;),nl.<br>&#39;abc def&#39;<br>yes<br>| ?-display(&#39;A&#39;(123)),nl.<br>&#39;A&#39;(123)<br>yes<br>| ?-display(1+2*3),nl.<br>+(1,*(2,3))<br>yes<br>| ?-display(\&quot;abc\&quot;),nl.<br>[97,98,99]<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="tell/1<br>tella/1<br>read/1<br>writeq/1<br>write_canonical/1"; azlist.push(hash);
var hash={}; hash["id"]="171"; hash["name"]="write/1"; hash["common"]="ISO"; hash["format"]="write(+T), put_char(+A)"; hash["argument"]="T:出力する項<br>A:出力する1文字"; hash["text"]="Tをほとんどそのままの表現で現在の出力ストリーム(デフォルトは user{ディスプレイ画面})に出力します。<br>put_char/1は1文字を出力します。<br><br>・Tがアトム、演算子形式やリスト形式の複合項の場合はそのまま出力されます。<br>・Tがn進数表現の数値は全て10進数表現になります。<br>　最上位桁からのゼロの並びは無視され出力されません。<br>　実数の場合は小数点以下6桁に丸められます。<br>・Tが未代入の変数の場合はその変数名が出力されます。<br>・Tに空白などの項として許されない記号が含まれる場合はエラー(syntax error)となります。<br>　この場合シングルクォートで囲ってアトムにしてしまえば差し支えありません。<br>　ただし、囲ったシングルクォートは出力されません。<br>　よって、ファイルに出力しても read/1 で読めません。<br>　(read/1 で読みたい場合は writeq/1 を使います)"; hash["reference"]=""; hash["sample"]="| ?-put_char(a),nl.<br>a<br>yes<br>| ?-write(abcdef),nl.<br>abcdef<br>yes<br>| ?-write(&#39;abcdef&#39;),nl.<br>abcdef<br>yes<br>| ?-write(&#39;ABCD&#39;),nl.<br>ABCD<br>yes<br>| ?-write(X),nl.<br>X_7<br>X       = X<br>yes<br>| ?-write(000123),nl.<br>123<br>yes<br>| ?-write(0.12345678),nl.<br>0.123456780000000<br>yes<br>| ?-write(0.123),nl.<br>0.123000000000000<br>yes<br>| ?-write(0&#39;123),nl.<br>291<br>yes<br>| ?-write(a:-b),nl.<br>Syntax error<br>| ?-write((a :- b)),nl.<br>a:-b<br>yes<br>| ?-write(abc def),nl.<br>Syntax error<br>| ?-write(&#39;abc def&#39;),nl.<br>abc def<br>yes<br>| ?-tell(test),write(abcd),nl,told.<br>yes<br>| ?-"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="writeq/1<br>display/1<br>tell/1<br>put_char/1"; azlist.push(hash);
var hash={}; hash["id"]="172"; hash["name"]="write/2"; hash["common"]="ISO"; hash["format"]="write(+S,+T), put_char(+S,+A)"; hash["argument"]="S:指定ストリームのストリーム値(tell/2,tella/2,open/3 でファイルオープンしたとき第2引数 or 第3引数に返された値)<br>T:出力する項<br>A:出力する1文字"; hash["text"]="write/1 が現在の出力ストリームへ出力するのに対して、現在の出力ストリームに関係無く tell/2,tella/2, open/3 でオープンされた任意の出力ストリームへ項を出力する事が出来ます。put_char/2は1文字を出力します。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は write/1, put_char/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),write(S,a(123)),told(S).<br>yes<br><br>| ?-open('test',write,S),put_char(S,a),close(S).<br>yes  <span style=&quot;color: #FFFF00&quot;><== testというファイルに a を書き込みます。</span>"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="write/1<br>tell/2<br>tella/2<br>told/1<br>put_char/2"; azlist.push(hash);
var hash={}; hash["id"]="173"; hash["name"]="writeq/1"; hash["common"]="ISO"; hash["format"]="writeq(+T)"; hash["argument"]="T:出力する項"; hash["text"]="Tをほとんどそのままの表現で現在の出力ストリーム(デフォルトは user{ディスプレイ画面})に出力します。<br>write/1 との違いは空白などが混じったアトムとして許されない文字列をシングルクォートで囲ってアトムとしてTに与えた場合にシングルクォートで囲ったまま出力し、それを read/1 か read/2 で入力できる所です。<br>それ以外は write/1 とまったく同じです。<br>ただし、 read/1 か read/2 で入力するには、Tに続けて<終止符(ピリオド「.」+キャラクタコード32以下の文字)> を出力しておく必要があります。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),writeq(&#39;A B C&#39;),write(.),nl,told.<br>yes<br>| ?-see(test),read(X),seen.<br>X = A B C<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="write/1<br>read/1<br>tell/1<br>told/0"; azlist.push(hash);
var hash={}; hash["id"]="174"; hash["name"]="writeq/2"; hash["common"]="ISO"; hash["format"]="writeq(+S,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S</td>      <td nowrap>:指定ストリームのストリーム値<br>(tell/2,tella/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left' nowrap>T</td>      <td nowrap>:出力する項</td>    </tr>  </tbody></table>"; hash["text"]="writeq/1 が現在の出力ストリームへ出力するのに対して、現在の出力ストリームに関係無く tell/2,tella/2 でオープンされた任意の出力ストリームへ項を出力する事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は writeq/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),writeq(S,'A B C'),write(S,.),nl,told(S).<br><br>S       = fp_668e090<br>yes<br>| ?-see(test),read(X),seen.<br>X       = A B C<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="write/1<br>writeq/1<br>tell/2<br>tella/2<br>told/1"; azlist.push(hash);
var hash={}; hash["id"]="175"; hash["name"]="get/1"; hash["common"]=""; hash["format"]="get(-I)"; hash["argument"]="I:入力したキャラクタ(ASCII)又は漢字コードがユニファイされる"; hash["text"]="現在の入力ストリームの現在のファイルポインタの指し示す位置から一文字読み込みます。<br>そしてファイルポインタを一文字分(1バイトか多バイト文字の場合、そのバイト数)ファイルの最後尾に向って移動させます。<br>ただし、<end_of_file>以外のキャラクタ(ASCII)コード32以下の文字は読み飛ばします。<br>漢字モードがonの状態で読み込もうとする文字が漢字などの多バイト(全角)文字であると判断された場合はそのバイト数(漢字コード分)を読み込んでその整数をIにユニファイします。<br>漢字モードがoffの場合は多バイト文字でも1バイトだけ読み込みます。"; hash["reference"]="「(操)5.8日本語処理と漢字モード」<br>"; hash["sample"]="[A:\\]TYPE TEST1.DAT<br>a    b<br><br>[A:\\]PROLOG<br><br>| ?-see(&#39;test1.dat&#39;),get(X1),get(X2),seen,name(A,[X1,X2]).<br>X1 = 97,<br>X2 = 98,<br>A = ab<br>yes<br>[A:\\]TYPE TEST2.DAT<br>漢字<br><br>[A:\\]PROLOG<br><br>| ?-see(&#39;test2.dat&#39;),get(X1),get(X2),seen,name(A,[X1,X2]).<br>X1 = 35519,<br>X2 = 36519,<br>A = 漢字<br>yes<br>| ?-kanji_mode(_,off).<br>_ = on<br>yes<br>| ?-see(&#39;test2.dat&#39;),get(X1),get(X2),seen,name(A,[X1,X2]).<br>X1 = 138,<br>X2 = 111,<br>A = 漢<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="see/1<br>kanji_mode/2<br>put/1"; azlist.push(hash);
var hash={}; hash["id"]="176"; hash["name"]="get/2"; hash["common"]=""; hash["format"]="get(+S,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td nowrap>S</td>      <td nowrap>:指定ストリームのストリーム値(see/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td>I</td>      <td>:入力したキャラクタ(ASCII)コードがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="get/1 が現在のストリームから読み込むのに対して、現在のストリームに関係無く<br>see/2 でオープンされた任意のストリームから読み込む事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数の入力ストリームがある(複数のファイルがオープンされている)場合にいち<br>いち現在の入力ストリームを切換えなくてもよいので便利です。<br>これ以外は get/1 と同じです。"; hash["reference"]="「(操)5.8日本語処理と漢字モード」<br>get/1  see/2kanji_mode/2  put/1  put/2"; hash["sample"]="[A:]TYPE TEST1.DAT<br>a   b<br><br>[A:]PROLOG<br><br>| ?-see('test1.dat',S),get(S,X1),get(S,X2),seen,name(A,[X1,X2]).<br>X1 = 97,<br>X2 = 98,<br>A = ab<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="177"; hash["name"]="get0/1"; hash["common"]=""; hash["format"]="get0(-I)"; hash["argument"]="I:入力したキャラクタ(ASCII)コードがユニファイされる"; hash["text"]="現在の入力ストリームから一文字読み込んでそのキャラクタ・コードとX とを単一化します。get/1 のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。<br>その際、改行文字コードはキャラクタ・コード31キャラクタ・コード31の一文字に変換されます。<br>これは、改行文字コードがほとんどの場合、1組にして使われるので1バイトにまとめた方がプログラムを組む上で都合が良いと考えられるためです。<br>(内蔵エディタのバッファ内でも改行文字の代わりにキャラクタ・コード31の一文字が使われています)<br>漢字モードがonの場合の処理は get/1 を参照して下さい。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told.   <span style=&quot;color: #FFFF00&quot;><== 改行文字コードだけのファイルを作ります。</span><br>yes<br>| ?-see(test),get0(X),seen.<br>X = 31                                 <span style=&quot;color: #FFFF00&quot;><== 改行を入力すると31を返します。</span><br>yes  "; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get/1<br>get1/2<br>see/1<br>put/1"; azlist.push(hash);
var hash={}; hash["id"]="178"; hash["name"]="get0/2"; hash["common"]=""; hash["format"]="get0(+S,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>S</td>      <td>:指定ファイルのストリーム値<br>        (see/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left'>I</td>      <td>:入力したキャラクタ(ASCII)コードがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="get0/1 が現在の入力ストリームから読み込むのに対して、現在のストリームに関係無くsee/2 でオープンされた任意のストリームから読み込む事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数の入力ストリームがある(複数のファイルがオープンされている)場合にいちいち現在の入力ストリームを切換えなくてもよいので便利です。<br>これ以外は get0/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told.<br>yes        <span style=&quot;color: #FFFF00&quot;><== 改行文字だけのファイルを作ります。</span><br>| ?-see(test,S),get0(S,X),seen(S).<br>S = fp_6812<br>X = 31     <span style=&quot;color: #FFFF00&quot;><== 改行を入力すると31を返します。</span><br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get0/1<br>get/2<br>see/2<br>put/1<br>put/2"; azlist.push(hash);
var hash={}; hash["id"]="179"; hash["name"]="get1/1"; hash["common"]=""; hash["format"]="get1(-I), get_code(-I)"; hash["argument"]="I:入力したキャラクタ(ASCII)コードがユニファイされる"; hash["text"]="現在の入力ストリームから一文字読み込んでそのキャラクタ・コードとX とを単一化します。<br>get/1 のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。<br>また、get0/1 と違い改行文字も変換せずそのまま返します。<br>漢字モードがonの場合の処理は get/1 get0/1 と同じです。<br>ISOのget_code/1と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told.   <span style='color: #FFFF00'><== 改行文字だけのファイルを作ります。</span><br>yes<br>| ?-see(test),get1(X1),get1(X2),seen.<br>X1 = 13                                <span style='color: #FFFF00'><== 改行文字コードもそのまま返します。</span><br>X2 = 10<br>yes<br><br> <span style='color: #FFFF00'>abc.txtというファイルの中身が ab のとき</span><br><br>| ?-see('abc.txt'),get_code(X1),get_code(X2),seen.<br>X1 = 97,<br>X2 = 98<br>yes<br>"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get0/1<br>get/2<br>see/2<br>put/1<br>put/2"; azlist.push(hash);
var hash={}; hash["id"]="180"; hash["name"]="get1/2"; hash["common"]=""; hash["format"]="get1(+S,-I), get_code(+S,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td nowrap>S</td>      <td nowrap>:指定ファイルのストリーム値(see/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td>I</td>      <td>:入力したキャラクタ(ASCII)コードがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="get1/1 が現在の入力ストリームから読み込むのに対して、現在のストリームに関係無くsee/2, open/3 でオープンされた任意のストリームから読み込む事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数の入力ストリームがある(複数のファイルがオープンされている)場合にいちいち現在の入力ストリームを切換えなくてもよいので便利です。<br>これ以外は get1/1 と同じです。<br>ISOのget_code/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told.   <span style='color: #FFFF00'><== 改行文字だけのファイルを作ります。</span><br>yes<br>| ?-see(test,S),get1(S,X1),get1(S,X2),seen(S).<br>S = fp_6812<br>X1 = 13                                <span style='color: #FFFF00'><== 改行文字コードもそのまま返します。</span><br>X2 = 10<br>yes<br><br>| ?-open('test',read,S),get_code(S,X1),get_code(S,X2),close(S).<br>S = fp_6812,<br>X1 = 13,<br>X2 = 10<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get1/1<br>get0/2<br>see/2<br>seen/1<br>open/3<br>close/1<br>put/1<br>put_code/2<br>get_char/2"; azlist.push(hash);
var hash={}; hash["id"]="181"; hash["name"]="put/1"; hash["common"]=""; hash["format"]="put(+N), put_code(+N)"; hash["argument"]="N:出力する文字のキャラクタ(ASCII)又は漢字コード"; hash["text"]="現在の出力ストリームにNをキャラクタ(ASCII)又は漢字コードとする文字を出力します。<br>ISOのput_code/1と同じです。<br><br>ただし、次の場合は動作が多少異なります。<br>・Nの値が31の場合<br>対象の出力ストリームが「edit」(エディタバッファ)の場合は(31を改行コードとして使っているので)そのまま31が出力されます。<br>それ以外のファイルの場合は改行文字コードに変換して出力されます。<br>つまり、get0/1 と併せるとPrologプログラム上ではをキャラクタコードの31の1バイト(1文字)を改行文字コードの代りとして扱う事が出来ます。<br><br>・まず、Nを2進数表現したとき、漢字コードと見なして、該当の文字があればその多バイト(全角)文字を出力します。<br>もし、該当の文字がなければ下位8桁(1バイト)のみをキャラクターコードと見なして、該当の文字を出力します。<br><br>・漢字モードはロギング(「(操)5.9ロギング」参照)にのみ関係します。<br>漢字モード「on」の場合はこの put/1 でコンソールに出力された1バイト文字・多バイト(全角)文字共にログファイルにも出力されます。<br>これに対して漢字モード「off」の場合はこの put/1 でコンソールに出力された1バイト文字はログファイルにも出力されますが、多バイト(全角)文字がコンソールに出力された場合にはログファイルには出力されません。(Prolog-KABAと同じ)"; hash["reference"]="「(操)5.8日本語処理と漢字モード」"; hash["sample"]="| ?-tell(test),put(31),told.        <span style='color: #FFFF00'><== 31 が改行文字コードに変換して、出力される<</span><br>yes                                 <br>| ?-see(test),get1(X1),get1(X2),seen.<br>X1 = 13                             <span style='color: #FFFF00'><== 確かに改行文字コードに変換されている</span><br>X2 = 10                             <br>yes<br><br>| ?-put_code(97),nl.<br>a<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="tell/1<br>kanji_mode/2<br>get1/1<br>put/2<br>put_code/2<br>get_code/1"; azlist.push(hash);
var hash={}; hash["id"]="182"; hash["name"]="put/2"; hash["common"]=""; hash["format"]="put(+S,+N), put_code(+S,+N)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>:指定ストリームのストリーム値<br>        (tell/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign='top'>N</td>      <td>:出力する文字のキャラクタ(ASCII)又は漢字コード</td>    </tr>  </tbody></table>"; hash["text"]="put/1 が現在の出力ストリームへ出力するのに対して、現在の出力ストリームに関係無く tell/2 でオープンされた任意の出力ストリームへ出力する事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は put/1 と同じです。<br>ISOのput_code/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),put(S,31),told(S).    <span style='color: #FFFF00'><== 31 が改行文字に変換して、出力されます。</span><br>S = fp_6812<br>yes<br>| ?-open('test.dat',write,S),put_code(S,97),put_code(S,98),put_code(S,31),close(S).<br>S = fp_689bfe0                         <span style='color: #FFFF00'><== test.datに abと改行が書き込まれます。</span><br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="put/1<br>put_code/1<br>tell/2<br>tella/2<br>told/1<br>open/3<br>close/1"; azlist.push(hash);
var hash={}; hash["id"]="183"; hash["name"]="tab/1"; hash["common"]=""; hash["format"]="tab(+N)"; hash["argument"]="N:出力したい空白の数"; hash["text"]="現在の出力スリームにNの個数だけ、空白(キャラクタコードの32)を出力します。<br>つまり、put(32) をN回繰返したのと同じです。"; hash["reference"]=""; hash["sample"]="| ?-write(abc),tab(3),write(def),nl.<br>abc   def<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="put/1<br>tell/1"; azlist.push(hash);
var hash={}; hash["id"]="184"; hash["name"]="tab/2"; hash["common"]=""; hash["format"]="tab(+S,+N)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S:</td>      <td width=&quot;454&quot; nowrap>指定ファイルのストリーム値<br>        (tell/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>N:</td>      <td nowrap>出力したい空白の数</td>    </tr>  </tbody></table>"; hash["text"]="tab/0 が現在の出力ストリームへ空白(キャラクタコードの32)を出力するのに対して、現在の出力ストリームに関係無く tell/2 でオープンされた任意の出力ストリームへ空白(キャラクタコードの32)を出力する事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は tab/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(con,S),write(S,abc),tab(S,3),write(S,def),nl(S),told(S).<br>abc   def<br>S = fp_6812<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="tab/1<br>tell/2"; azlist.push(hash);
var hash={}; hash["id"]="185"; hash["name"]="nl/0"; hash["common"]="ISO"; hash["format"]="nl"; hash["argument"]="なし"; hash["text"]="現在の出力スリームに改行文字コードを出力します。<br>対象の出力ストリームが「edit」(エディタバッファ)の場合は(31を改行コードとして使っているので)そのまま31が出力されます。<br>それ以外のファイルの場合は改行文字コードが出力されます。<br>つまり、put(31) と同じです。"; hash["reference"]="put/1<br>tell/1"; hash["sample"]="| ?-write(abc),nl,write(def),nl.<br>abc<br>def<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="186"; hash["name"]="nl/1"; hash["common"]="ISO"; hash["format"]="nl(+S)"; hash["argument"]="S:指定ファイルのストリーム値<br>(tell/2 open/3 でファイルオープンしたとき第2引数に返された値)"; hash["text"]="nl/0 が現在の出力ストリームへ改行文字コードを出力するのに対して、現在の出力ストリームに関係無く tell/2 でオープンされた任意の出力ストリームへ改行文字コードを出力する事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は nl/0 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(con,S),write(S,abc),nl(S),write(S,def),nl(S).<br>abc<br>def<br>S = fp_6812<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="nl/0<br>tell/2<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="187"; hash["name"]="skip/1"; hash["common"]=""; hash["format"]="skip(+N)"; hash["argument"]="N:検索したい文字のキャラクタ(ASCII)又は漢字コード"; hash["text"]="現在の入力ストリームの現在のファイルポインタの指し示す位置からファイルの最後尾に向ってキャラクタ(ASCII)又は漢字コードがNの文字を検索します。<br>そして該当の文字が見つかった場合はファイルポインタをその文字の次の文字まで移動させます。<br>そして、<end_of_file>を越えると(該当の文字が見つかった場合)はエラー(End of file encountered)になります。<br>次のPrologプログラムと等価です。<br>skip(N) :- nonver(N),repeat,get0(N).<br><br>次の点に注意が必要です。<br>・Nの値が31の場合<br>対象の出力ストリームが「edit」(エディタバッファ)の場合は(31を改行コードとして使っているので)そのまま31を検索します。<br>それ以外のファイルの場合は改行文字コードの文字列を検索します。<br><br>・漢字モードがoffの場合(エディタを除く)<br>Nを2進数表現したときの下位8桁(1バイト)のみをキャラクターコードと見なして、該当の文字を検索します。(Prolog-KABAの get0/1 と同じになります)<br><br>・漢字モードがonの場合(エディタを除く)<br>まず、検索を始める前に次のようにNを調べてどの文字を検索するかを判断します。<br><br>Nを2進数表現したときに文字コードと見なした時、該当の漢字コードがあればその多バイト(全角)文字の検索を開始します。<br>漢字コードとして該当の文字がなければ下位8桁(1バイト)のみを文字コードと見なして、そのキャラクターコードの文字の検索を開始します。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),write(abc),nl,write(def),nl,told.<br>yes<br>| ?-see(test),skip(31),get(X),seen,name(A,[X]).<br>X = 100,<br>A = d<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="see/1<br>kanji_mode/2"; azlist.push(hash);
var hash={}; hash["id"]="188"; hash["name"]="seek/2"; hash["common"]=""; hash["format"]="seek(+S,+N)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>S:</td>      <td nowrap>指定ストリームのストリーム値<br>        (see/2,tell/2,tella/2でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>N:</td>      <td nowrap>移動先の位置(ファイルの先頭からのバイト数)</td>    </tr>  </tbody></table>"; hash["text"]="Sで指定された入出力ストリームのファイルポインタを任意の位置に移動します。<br>位置はファイルの先頭からのバイト数をNで指定します。<br>なお、Nが負の場合は失敗します。<br><br>次の点に注意が必要です。<br>・Sで指定したストリームがファイルポィンタの移動できないデバイス(コンソールやプリンタなど)の場合の実行結果(真偽)は不定です。<br>・漢字モードが「on」の状態で、移動先が運悪く多バイト(全角)文字の１バイト目以外だった場合はその文字は勿論、以降の文字を get/2 などで正しく読み込めない事があります。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),write(バグ追放),nl,told.<br>yes<br>| ?-see(test,S),seek(S,4),get(S,X),seen(S),name(A,[X]).<br>S = fp_6612,<br>X = 37575,<br>A = 追<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="see/2"; azlist.push(hash);
var hash={}; hash["id"]="189"; hash["name"]="current_fp/2"; hash["common"]=""; hash["format"]="current_fp(+S,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>S</td>      <td>:指定ストリームのストリーム値<br>        (see/2,tell/2,tella/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left'>I</td>      <td>:現在のファイルポインタの位置(ファイルの先頭からのバイト数)</td>    </tr>  </tbody></table>"; hash["text"]="Sで指定したストリームの現在のファイルポインタの位置をIにユニファイします。<br>ファイルポインタがファイルの先頭にある場合は0をユニファイします。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),write(バグ追放),nl,told.<br>yes<br>| ?-see(test,S),current_fp(S,N1),seek(S,4),current_fp(S,N2),get(S,X),<br>current_fp(S,N3),seen(S),name(A,[X]).<br>S = fp_6612,<br>N1 = 0,<br>N2 = 4,<br>X = 37575,<br>N3 = 6,<br>A = 追<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="see/2<br>seek/2<br>get/2"; azlist.push(hash);
var hash={}; hash["id"]="190"; hash["name"]="d_keyback/1"; hash["common"]=""; hash["format"]="d_keyback(+N・L)"; hash["argument"]="N・L:挿入したい文字のキャラクタ(ASCII)又は漢字コード、又はそれらを要素とするリスト(ストリング)"; hash["text"]="AZ-Prolog内部に持っているキーバッファに文字又は文字列を挿入します。<br>その結果、キーボードから入力したのと同じ状態になります。<br>この値は ttyget/1  d_keyin/1 又は現在のストリームが「user」「con」の時のread/1  get/1 などの入力述語で取り出すことが出来ます。<br>N又はLの要素は16ビットの整数値を越えない範囲ならば(例え該当の文字コードがなくても特に制限なく挿入されます)、これらの入力述語で取り出す場合に文字コードとして調べられます。<br><br>例えばエンドユーザ(Prologプログラムの使用者)にキーボード入力を要請する場合に既定値をあらかじめ表示する時などに使用します。"; hash["reference"]=""; hash["sample"]="nengo(X) :- write(&#39;あなたの生れた年号は何ですか&#39;),nl,<br>                  write(&#39;M:明治T:大正S:昭和H:平成  &#39;),nl,<br>                  d_keyback(\&quot;S\&quot;),ttyget(X).<br><br>この節を実行すると。<br>?-nengo(X).<br>あなたの生れた年号は何ですか<br>M:明治T:大正S:昭和H:平成<br>|:S              ･･･ と表示されるので昭和生れならば<br>                   リターンキーだけ押せばよいし、<br>X = 83         そうでなければ<Back Space>を押して<br>                   S を消してから改めて<br>                   他の文字を入力してリターンキーだけ押す<br>yes <br><br><br>この例の様に明らかに殆どの人が答えるであろう値を予め入力しておく事ができます。"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="ttyget/1<br>d_keyin/1<br>read/1"; azlist.push(hash);
var hash={}; hash["id"]="191"; hash["name"]="d_keyin/1"; hash["common"]=""; hash["format"]="d_keyin(-I)"; hash["argument"]="I:キーボード入力された文字のキャラクタ(ASCII)又は漢字コードがユニファイされる"; hash["text"]="キーバッファが空の場合にこの述語を実行するとキー入力待ちの状態(プロンプトは表示されない)になります。<br>そしてどれかのキーが押された時点(漢字の場合は確定した時点)ですぐさまその文字のキャラクタ(ASCII)又は漢字コードをIにユニファイします。<br>漢字などの多バイト文字の場合はその漢字コードを整数でIにユニファイします。(漢字モードとは無関係)<br>(Prolog-KABA では多バイト（全角）文字の場合でも初めの1バイトのみユニファイする)<br><br>日本語FEPを使用することによって複数の文字を入力できますが入力対象は先頭の一文字だけで、残りは無視されます。"; hash["reference"]=""; hash["sample"]="| ?-d_keyin(X).     <span style='color: #FFFF00'><== これを入力するとキー入力待ちの状態になる。</span><br>X = 97                  <span style='color:#FFFF00'>「a」のキーを押しただけでコードが返される。</span><br>yes"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="ttyget/1<br>d_keylength/1"; azlist.push(hash);
var hash={}; hash["id"]="192"; hash["name"]="d_keylength/1"; hash["common"]=""; hash["format"]="d_keylengh(-I)"; hash["argument"]="I:現在キーバッファにある文字数がユニファイされる"; hash["text"]="現在、キーバッファにある文字の数を取得します。<br>漢字などの多バイト文字も1文字として数えます。(漢字モードとは無関係)<br><br>主にキーが押されたか否かを判定するのに用います。<br>つまり、d_keylength(0) が失敗すればキーが押されたと判断し、成功すれば押されていないと判断します。"; hash["reference"]=""; hash["sample"]="input(K) :- repeat,input_sub(K).<br>input_sub(K) :- \+ d_keylength(0),d_keyin(K).<br>input_sub(_).<br><span style='color:#FFFF00'>キーが押されるまでrepeat/0、input_sub間でループします。<br>もし、キーが押されたらそのキャラクタコードをinput_subの第1引数にユニファイします。</span>"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="d_keyin/1<br>\+  /fy"; azlist.push(hash);
var hash={}; hash["id"]="193"; hash["name"]="d_keypeek/1"; hash["common"]=""; hash["format"]="d_keypeek(-I)"; hash["argument"]="I:現在、キーバッファにある先頭文字のキャラクタ(ASCII)又は漢字コードがユニファイされる"; hash["text"]="現在、キーバッファにある先頭(最初に入力した)文字のキャラクタ(ASCII)又は漢字コードがIにユニファイされます。<br>d_keyin/1 との違いはキーバッファから取り出すのではなく参照するだけで、実行後もキーバッファの内容は変化しません。<br>その他は d_keyin/1 と同じです。"; hash["reference"]=""; hash["sample"]="?-d_keyback(97),d_keypeek(X),d_keypeek(Y),d_keyin(Z).<br>X = 97,<br>Y = 97,<br>Z = 97<br>yes<br><span style='color:#FFFF00'>キーバッファの文字をd_keypeek/1で何度参照しても変わりません。</span>"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="d_keyin/1"; azlist.push(hash);
var hash={}; hash["id"]="194"; hash["name"]="ttyget/1"; hash["common"]=""; hash["format"]="ttyget(-I)"; hash["argument"]="I:キーボード入力された文字のキャラクタ(ASCII)又は漢字コードがユニファイされる"; hash["text"]="現在のストリームが「user」か「con」の時の get/1 と同じです。<br>また、ほぼ、d_keyin/1 と同じですが次の点が異なります。<br><br>・画面に現在のプロンプトが出る。入力した文字もエコーバックされる。<br>・文字を入力後リターンキーを押す必要がある。<br>・キーバッファに予め文字が貯まっていた場合は、まずその文字を画面にエコーバックし、リターンキーを押すまで受け付けない。<br>・キーバッファに予め複数の文字が貯まっていた場合は、先頭の一文字だけを取り出して残りの文字は放棄する<br>（キーバッファをクリアする）<br>・キャラクタコードが32以下の文字を入力しても受け付けない。"; hash["reference"]=""; hash["sample"]="?-d_keyback(&quot;abc&quot;),ttyget(X),d_keylength(N).<br>|:abc<br>X = 97,<br>N = 0<br><br><span style='color:#FFFF00'>キーバッファに予め文字(&quot;abc&quot;)が挿入されていたので、<br>現在のプロンプトに続けてその文字がエコーバックされ、<br>リターンキーを押すと先頭の文字のコードが<br>X にユニファイされたあとキーバッファがクリアされたので<br>N には0が返される。</span>"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="get/1<br>d_keyin/1"; azlist.push(hash);
var hash={}; hash["id"]="195"; hash["name"]="ttyget0/1"; hash["common"]=""; hash["format"]="ttyget0(-I)"; hash["argument"]="I:キーボード入力された文字のキャラクタ(ASCII)又は漢字コードがユニファイされる"; hash["text"]="現在のストリームが「user」か「con」の時の get0/1 と同じです。<br><br>また、ほぼ ttyget/1 と同じですが、空白・<carriage return>・<end_of_file>の入力が許されます(それぞれのコードがIにユニファイされます。)。<br>これにより空入力(リターンキーだけを押す)も受け付けられます。<br>この場合、<carriage return>が31に変換されてIにユニファイされます。<br>これ以外の32未満のコードも読み込まれます。"; hash["reference"]=""; hash["sample"]="| ?-ttyget0(X).<br>|:<br>X       = 31<br>yes<br>| ?-"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="ttyget/1<br>get0/1"; azlist.push(hash);
var hash={}; hash["id"]="196"; hash["name"]="ttyput/1"; hash["common"]=""; hash["format"]="ttyput(+N)"; hash["argument"]="N:コンソール画面への出力したい文字のキャラクタ(ASCII)又は漢字コード"; hash["text"]="現在の出力ストリームが「user」か「con」の時の put/1 と同じです。<br><br>まず、Nを2進数表現したとき漢字コードと見なし、該当の文字があればその多バイト(全角)文字を出力します。<br>もし、該当の多バイト(全角)文字がなければ下位8桁(1バイト)のみをキャラクターコードと見なし、該当の文字を出力します。<br><br>Nが31のときは画面に<carriage retrun>コードを出力します(ttynl/0 と同じ)<br><br>・漢字モードはロギングにのみ関係します。<br>漢字モード「on」の場合はこの ttyput/1 でコンソールに出力された1バイト文字・多バイト(全角)文字共にログファイルにも出力されます。<br>これに対して漢字モード「off」の場合はこの ttyput/1 でコンソールに出力された1バイト文字はログファイルにも出力されますが、多バイト(全角)文字がコンソールに出力された場合にはログファイルには出力されません。(Prolog-KABAと同じ)"; hash["reference"]=""; hash["sample"]="| ?-ttyput(35519),ttyput(36506),ttynl.<br>漢字<br>yes"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="put/1<br>ttynl/0"; azlist.push(hash);
var hash={}; hash["id"]="197"; hash["name"]="ttynl/0"; hash["common"]=""; hash["format"]="ttynl"; hash["argument"]="なし"; hash["text"]="コンソール画面に対して改行・復帰コードを送ります。<br>その結果、キャラクタカーソルが現在の位置のすぐ下の行の先頭に移動します。"; hash["reference"]=""; hash["sample"]="| ?-ttynl,ttynl.<br><br><br>yes<br><br><span style='color:#FFFF00'> 2回改行されて yes が表示されます。</span>"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="nl/0<br>d_cursor/2"; azlist.push(hash);
var hash={}; hash["id"]="198"; hash["name"]="ttyskip/1"; hash["common"]=""; hash["format"]="ttyskip(+N)"; hash["argument"]="N:指定文字のキャラクタ(ASCII)又は漢字コード<br>"; hash["text"]="Nをキャラクタ(ASCII)又は漢字コードとする文字列が入力されるまで読み飛ばします。<br>次のPrologプログラムと等価です。<br>skip(N) :- nonver(N),repeat,ttyget0(N)."; hash["reference"]=""; hash["sample"]="| ?-ttyskip(99). <span style='color:#FFFF00'><== 小文字の「c」を入力するまで読み飛ばします。(無視する)</span><br>|:a<br>|:b<br>|:c<br>yes"; hash["genre"]="6"; hash["used"]="true"; hash["incident"]="ttyget0/1"; azlist.push(hash);
var hash={}; hash["id"]="199"; hash["name"]="d_screen/2"; hash["common"]=""; hash["format"]="d_screen(-I1,-I2)"; hash["argument"]="I1:コンソール画面の桁(カラム)数がユニファイされる<br>I2:コンソール画面の行数がユニファイされる"; hash["text"]="使用しているコンソール画面の行桁数を取得します。<br>(d_scroll/2 でスクロール行数を制限したとしても無関係です)<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]="| ?-d_screen(X,Y).<br>X = 80,<br>Y = 24<br>yes<br>"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="200"; hash["name"]="d_clear/0"; hash["common"]=""; hash["format"]="d_clear"; hash["argument"]="なし"; hash["text"]="テキスト画面を全て消去し、キャラクタカーソルを左上のホームポジション(第1桁、第1行)に戻します。<br>システムによってはグラフィクス画面も同時に消去される物もあります。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="201"; hash["name"]="d_cleol/0"; hash["common"]=""; hash["format"]="d_cleol"; hash["argument"]="なし"; hash["text"]="現在のカーソル位置から、その行の終端までを消去します。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、<br>コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="202"; hash["name"]="d_cleos/0"; hash["common"]=""; hash["format"]="d_cleos"; hash["argument"]="なし"; hash["text"]="現在のカーソル位置から、画面の終端(右下)までを消去します。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、<br>コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="203"; hash["name"]="d_cursor/1"; hash["common"]=""; hash["format"]="d_cursor(+A)"; hash["argument"]="A:on か off のどちらかを指定<br>"; hash["text"]="キャラクタカーソルの表示・非表示を切換えます。<br>on を指定すると表示され、off を指定すると表示されなくなります。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、<br>コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="204"; hash["name"]="d_cursor/2"; hash["common"]=""; hash["format"]="d_cursor(+N1,+N2)"; hash["argument"]="N1:移動先の桁(カラム)位置<br>N2:移動先の行位置"; hash["text"]="キャラクタカーソルを任意の位置に移動します。<br>この後のコンソール画面への文字出力はこの位置から開始されます。<br>左上のホームポジションの座標は(1,1)とします。<br><br>もし、N1かN2のどちらかが0以下の場合は1と、N1かN2のどちらかが画面の大きさを越えた場合はその最大値が指定されたものと見なされます。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]="d_pos/2"; hash["sample"]="<span style='color:#FFFF00'>コンソール画面が80×24であるとすると</span><br>| ?-d_cursor(0,26).   ･･･<span style='color:#FFFF00'>(1,24)に移動します。</span><br>| ?-d_cursor(-1,24).  ･･･<span style='color:#FFFF00'>(1,24)に移動します。</span><br>| ?-d_cursor(91,26).  ･･･<span style='color:#FFFF00'>(80,24)に移動します。</span><br>"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="205"; hash["name"]="d_scroll/2"; hash["common"]=""; hash["format"]="d_scroll(-I1,+I2)"; hash["argument"]="I1:変更前のスクロール最上行がユニファイされる<br>I2:変更後のスクロール最上行を指定する"; hash["text"]="画面スクロールする行数を変更します。<br>ただし、指定方法は行数ではなく、スクロールする最上行を指定します。<br>つまり、1を指定すると画面全体がスクロールの対象となります。<br>システム立上げ後の既定値は1です。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]="d_pos/2"; hash["sample"]="<span style='color:#FFFF00'>コンソール画面の大きさが80×24であるとすると</span><br>| ?-d_scroll(_,24).   ･･･<span style='color:#FFFF00'>最下行だけがスクロールします。</span><br>_ = 1<br>yes<br>| ?-d_scroll(_,1).    ･･･<span style='color:#FFFF00'>画面全体がスクロールします。</span><br>_ = 24<br>yes<br>"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="206"; hash["name"]="d_pos/2"; hash["common"]=""; hash["format"]="d_pos(-I1,-I2)"; hash["argument"]="I1:現在、カーソルのある桁がユニファイされる<br>I2:現在、カーソルのある行がユニファイされる"; hash["text"]="現在のカーソル位置を取得します。<br>I1に横方向左端からの桁数がI2に縦方向上橋からの行数をユニファイします。<br>左上角のホームポジションの座標は(1,1)とします。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]="| ?-d_cursor(3,5),write(abc),d_pos(X,Y).<br><br>  abc<br>X       = 6,<br>Y       = 5<br>yes<br><br><br><span style='color:#FFFF00'>まず、d_cursor/2でカーソルを5行目の3桁目に持っていき、<br>そこから3文字書いたのでカーソルが5行目の6桁目に行ったことを示しています。<br>漢字などの2バイト文字を書いた場合は文字数の倍の桁数だけカーソルが移動することになります。<br></span>"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="207"; hash["name"]="d_redisp/0"; hash["common"]=""; hash["format"]="d_redisp"; hash["argument"]="なし"; hash["text"]="コンソール画面をシステム内部に記憶している内容で再猫画します。<br><br>※スタンドアロン実行プログラムからこの述語を使用する場合、コンパイルオプション/curses を指定してコンパイルする必要があります。"; hash["reference"]=""; hash["sample"]="| call_cmd(cmd):- system(cmd),write('type any key fo return'),<br>　　　　　　　　　d_keyin(_),d_redisp.<br><br><span style='color:#FFFF00'>OSコマンドの実行による出力で乱れた画面を元に戻します。</span>"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="208"; hash["name"]="prompt/2"; hash["common"]=""; hash["format"]="prompt(-A1,+A2)"; hash["argument"]="A1:変更前の旧プロンプトがユニファイされる<br>A2:変更後の新プロンプトを指定する"; hash["text"]="現在の入力ストリームが「user」か「con」の場合の read/1,get/1,get0/1,get1/1<br>又は「user」か「con」を指定したときの read/2,get/2,get0/2,get1/2 又は<br>ttyget/1,ttyget0/1 などでキーボードから入力する場合の現在のプロンプト(入力促進記号)の文字列(アトム)を変更します。<br><br>アトムとして許されない文字列の場合はシングルクォートで囲って下さい。<br>この囲ったシングルクォートは表示されません。<br><br>デフォルトは「|:」です。"; hash["reference"]=""; hash["sample"]="| ?-prompt(_,&#39;Please input >&#39;).<br>_ = |:<br>yes<br>| ?-ttyget(X).<br>Please input >a<br>X = 97<br>yes"; hash["genre"]="7"; hash["used"]="true"; hash["incident"]="read/1<br>read/2<br>get/1<br>get0/1<br>get1/1<br><br><br><br>get/2<br>get0/2<br>get1/2<br><br><br><br>ttyget/1<br>ttyget0/1"; azlist.push(hash);
var hash={}; hash["id"]="209"; hash["name"]="copy0/0"; hash["common"]=""; hash["format"]="copy0"; hash["argument"]="なし"; hash["text"]="現在の入力ストリームの内容を、現在の出力ストリームにコピーします。<br>ただし、キャラクタコード31の文字は改行文字に変換されます。<br>コピー終了後も入出力どちらのファイルもクローズされませんので、seen/0,told/0 を実行してそれぞれのファイルをクローズする必要があります。<br>エディタバッファの内容及びコンソール入力をディスク上のファイル又はプリンタにコピーする場合に使います。<br>その他の場合は次の copy1/0 を使います。<br><br>次の点に注意が必要です。<br>・エディタバッファはディスク上のファイルと異なり、このcopy0/0 でエディタバッファに書込むとその時点の漢字モードによって以降の文字の扱いが決定されます。<br>つまり、漢字モード「on」で copy0/0でエディタバッファに書込んだ文字列は以降漢字モードに関係なく多バイト(全角)文字は1バイトずつ分けて扱います。<br>逆に漢字モード「off」で copy0/0 でエディタバッファに書込んだ文字列は以降漢字モードに関係なく多バイト(全角)文字は1バイトずつ分けて扱います。<br><br>これは、エディタバッファから get系の述語で読み込む場合、又はドットの移動時などの文字の扱いがその時の漢字モードとは無関係に、書込む時点の漢字モードによって決定される事を意味しています。<br><br>・漢字モードはロギングにも関係します。<br>漢字モード「on」かつ現在の出力ストリームが「con」「user」の場合は1バイト文字・多バイト(全角)文字共にログファイルにも出力されます。<br>これに対して漢字モード「off」かつ現在の出力ストリームが「con」「user」の場合は1バイト文字はログファイルにも出力されますが、多バイト(全角)文字がコンソールに出力された場合にはログファイルには出力されません。<br>(Prolog-KABAと同じ)"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]="<span style='color: #FFFF00'>abcdというファイルの中身が次の場合</span><br>abcd<br>efgh<br>ijkl<br><br>| ?-see(abcd),tell(test),copy0,seen,told.<br>yes<br>| ?-<br><br><span style='color: #FFFF00'>testのファイルの内容は次のようになります。</span><br>abcd<br>efgh<br>ijkl"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="see/1<br>tell/1<br>seen/0<br>told/0<br>copy1/0"; azlist.push(hash);
var hash={}; hash["id"]="210"; hash["name"]="copy1/0"; hash["common"]=""; hash["format"]="copy1"; hash["argument"]="なし"; hash["text"]="現在の入力ストリームの内容を、現在の出力ストリームにそのままコピーします。<br>copy0/0 との違いはキャラクタコード31の文字を改行文字に変換しないことです。<br>従って、エディタバッファの内容及びコンソール入力をディスク上のファイル又はプリンタにコピーする場合には使えません。<br>その場合は copy0/0 を使って下さい。<br><br>これ以外は copy0/0 と同じです。"; hash["reference"]="「(操)第8章スクリーンエディタ(AzEdit)」<br>"; hash["sample"]="<span style='color:#FFFF00'>エディタバッファの内容が次の通りで、現在のドットが先頭、マークが最後にあるとすると</span><br>abcd<br>efgh<br>ijkl<br>--------------------<br>| ?-see(edit),tell(test),copy1,seen,told.<br>yes<br>| ?-halt.<br>Exit from Prolog<br><br>[A:\]type test<br>abcd<br>　　efgh　　　　　　　　<span style='color:#FFFF00'>キャラクタコード31の文字を改行文字コード</span><br>　　　　ijkl　　　　　　<span style='color:#FFFF00'>に変換しないためこういう結果になります。</span><br><br>[A:\]"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="see/1<br>tell/1<br>seen/0<br>told/0<br>copy0/0"; azlist.push(hash);
var hash={}; hash["id"]="211"; hash["name"]="echo/2"; hash["common"]=""; hash["format"]="echo(-A1,+A2)"; hash["argument"]="A1:実行前の状態が「on」か「off」でユニファイされる<br>A2:実行後の状態を「on」か「off」で指定する"; hash["text"]="実行後の状態を「on」を指定すると、ファイルからコンサルト又はリコンサルトするときのプログラム、又は read,get,copy 系の述語で入力ストリームから入力した内容をコンソール画面にエコーバック(表示)します。<br>実行後の状態を「off」を指定すると、エコーバックされません。<br><br>初期値は「off」です。"; hash["reference"]=""; hash["sample"]="| ?-echo(_,on).<br>_ = off<br>yes<br>| ?-[-'proedit.pl'].<br>・<br>・ <span style='color: #FFFF00'>プログラムが表示されます。</span><br>・<br>yes"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="212"; hash["name"]="log/0"; hash["common"]=""; hash["format"]="log"; hash["argument"]="なし"; hash["text"]="コンソール出力をそのまま同時に&#39;prolog.log&#39;というファイルに出力します。<br>デバッグ中のトレース情報を遡って見るときなどに有効です。<br>nolog/0 を実行するとこのファイル出力を中止し、ファイルをクローズします。<br>従って、このファイルを参照するには nolog/0 を実行する必要があります。<br><br>追加モードでオープンしますから既に&#39;prolog.log&#39;というファイルが存在する場合にはその内容の最後に追加されます。<br><br>任意のファイルに出力するには log/1 を使います。"; hash["reference"]="「(操)6.3デバッグモード」<br>"; hash["sample"]="| ?-log.<br>yes<br>| ?-trace.<br>yes<br>debug mode on<br>||?-member(c,[a,b,c,d]).<br> [1] 0 Try   : member(c,[a,b,c,d]) ?<br> << BUILTIN CALL >><br> [1] 0 Succ  : member(c,[a,b,c,d])<br>yes<br>LOOP = 1<br>||?-nodebug.<br> [1] 0 Try   : nodebug ?<br> << BUILTIN CALL >><br>yes<br>debug mode off<br>| ?-nolog.<br>yes<br>| ?-<br><br><br>prolog.logファイルの内容 <br><br>yes<br>| ?-trace.<br>yes<br>debug mode on<br>||?-member(c,[a,b,c,d]).<br> [1] 0 Try   : member(c,[a,b,c,d]) ? <br> << BUILTIN CALL >><br> [1] 0 Succ  : member(c,[a,b,c,d])<br>yes<br>LOOP = 1<br>||?-nodebug.<br> [1] 0 Try   : nodebug ? <br> << BUILTIN CALL >><br>yes<br>debug mode off<br>| ?-nolog."; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="log/1  (1)<br>nolog/0"; azlist.push(hash);
var hash={}; hash["id"]="213"; hash["name"]="log/1  (1)"; hash["common"]=""; hash["format"]="log(+A)"; hash["argument"]="A:出力ファイル名を指定する"; hash["text"]="Aでファイル名を指定出来る事の他は log/0 と同じです。<br>つまり、log/0 は log(&#39;prolog.log&#39;) とまったく同じです。"; hash["reference"]=""; hash["sample"]="| ?-log(&#39;test.log&#39;).<br>yes<br>| ?-trace.<br>yes<br>debug mode on<br>||?-member(c,[a,b,c,d]).<br> [1] 0 Try   : member(c,[a,b,c,d]) ?<br> << BUILTIN CALL >><br> [1] 0 Succ  : member(c,[a,b,c,d])<br>yes<br>LOOP = 2<br>||?-nodebug.<br> [1] 0 Try   : nodebug ?<br> << BUILTIN CALL >><br>yes<br>debug mode off<br>| ?-nolog.<br>yes<br><br><br>test.logファイルの内容<br><br>yes<br>| ?-trace.<br>yes<br>debug mode on<br>||?-member(c,[a,b,c,d]).<br> [1] 0 Try   : member(c,[a,b,c,d]) ? <br> << BUILTIN CALL >><br> [1] 0 Succ  : member(c,[a,b,c,d])<br>yes<br>LOOP = 2<br>||?-nodebug.<br> [1] 0 Try   : nodebug ? <br> << BUILTIN CALL >><br>yes<br>debug mode off<br>| ?-nolog."; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="log/0<br>nolog/0"; azlist.push(hash);
var hash={}; hash["id"]="214"; hash["name"]="nolog/0"; hash["common"]=""; hash["format"]="nolog"; hash["argument"]="なし"; hash["text"]="log/0,log/1 で開始されたログ・ファイルへの出力を中止し、ファイルをクローズします。<br><br>halt/0 halt/1 でPrologを終了する前にログ・ファイルを参照する場合は必ずこの nolog/0 を実行して下さい。"; hash["reference"]=""; hash["sample"]="省略(log/0,log/1 の実行例を参照して下さい)"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="log/0<br>log/1  (1)"; azlist.push(hash);
var hash={}; hash["id"]="215"; hash["name"]="logging/1"; hash["common"]=""; hash["format"]="logging(-A)"; hash["argument"]="A1:ファイル名"; hash["text"]="現在のログファイル名をユニファイします。<br>ロギングしていないときは nul が返ります。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="9"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="216"; hash["name"]="rename/2"; hash["common"]=""; hash["format"]="rename(+A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A1</td>      <td>:ファイル名の変更又は削除したいファイルのファイル名(旧ファイル名)を指定する</td>    </tr>    <tr>      <td align='left'>A2</td>      <td>:変更後のファイル名(新ファイル名)を指定する<br>        A1のファイルを削除する場合は空リスト「[]」とする</td>    </tr>  </tbody></table>"; hash["text"]="ディスク上にあるファイルのファイル名を変更、又は削除します。<br>A1で指定するファイル名をA2で指定するファイル名に変更します。<br>A2を空リスト「[]」にするとA1で指定するファイルが削除されます。"; hash["reference"]=""; hash["sample"]="| ?-rename('昭和.DAT','平成.DAT').<br>yes<br><span style='color:#FFFF00'>'昭和.DAT'というファイルを'平成.DAT'という名前に変更します。</span><br><br>| ?-rename('昭和.PL',[]).<br>yes<br><span style='color:#FFFF00'>'昭和.PL'というファイルを削除します。</span>"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="217"; hash["name"]="fileerrors/2"; hash["common"]=""; hash["format"]="fileerrors(-A1,+A2)"; hash["argument"]="A1:変更前の旧状態、「error」か「fail」がユニファイされる<br>A2:変更後の新状態、「error」か「fail」を指定する"; hash["text"]="入出力関係の述語が何等かのエラーを起こした場合、エラーを発生させて全体の実行を中断するか、あるいはその述語の実行のみを失敗させるかのどちらの処理をさせるかを変更します。<br>全体の実行を中断させる場合は「error」、<br>その述語の実行のみを失敗させる場合は「fail」を指定します。<br>現在の状態がA1にユニファイされた後、A2で指定した新状態に変わります。<br><br>初期値は error です。"; hash["reference"]="「(操)5.10.2実行時のエラー」<br>"; hash["sample"]="<span style='color:#FFFF00'>'test.dat'というファイルが存在しなかった場合</span><br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  | ?-<br>| ?-fileerrors(_,fail).<br>_ = error<br>yes<br>| ?-see('test.dat').<br>no<br>| ?-fileerrors(_,error).<br>_ = fail<br>yes<br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  | ?-"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="fileerrors/0<br>nofileerrors/0"; azlist.push(hash);
var hash={}; hash["id"]="218"; hash["name"]="fileerrors/0"; hash["common"]=""; hash["format"]="fileerrors"; hash["argument"]="なし"; hash["text"]="入出力関係の述語が何等かのエラーを起こした場合、エラーを発生させて全体の実行を中断するようにします。<br>fileerrors(_,error) とまったく同等です。"; hash["reference"]="「(操)5.10.2実行時のエラー」<br>"; hash["sample"]="<span style='color:#FFFF00'>'test.dat'というファイルが存在しなかった場合</span><br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  ?-<br>| ?-fileerrors(_,fail).<br>_ = error<br>yes<br>| ?-see('test.dat').<br>no<br>| ?-fileerrors.<br>yes<br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  ?-   "; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="fileerrors/2"; azlist.push(hash);
var hash={}; hash["id"]="219"; hash["name"]="nofileerrors/0"; hash["common"]=""; hash["format"]="nofileerrors"; hash["argument"]="なし"; hash["text"]="入出力関係の述語が何等かのエラーを起こした場合、その述語の実行のみを失敗させるようにします。<br>fileerrors(_,fail) とまったく同等です。"; hash["reference"]="「(操)5.10.2実行時のエラー」<br>"; hash["sample"]="<span style='color:#FFFF00'>'test.dat'というファイルが存在しなかった場合</span><br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  ?-<br>| ?-nofileerrors.<br>yes<br>| ?-see('test.dat').<br>no<br>| ?-fileerrors(_,error).<br>_ = fail<br>yes<br>| ?-see('test.dat').<br>Can't see the file     ---- Backtrace<br>see('test.dat')  ?-"; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="fileerrors/2"; azlist.push(hash);
var hash={}; hash["id"]="220"; hash["name"]="d_create/2"; hash["common"]=""; hash["format"]="d_create(+A,+L)"; hash["argument"]="A:ランダムファイル名<br>L:ランダムファイル構造<br>構造は [フィールド名,フィールド長]なるリストか又はフィールドが複数ある場合はこのリストの並びのリストを作る<br><br>★フィールド名は32バイト以内のアトムの並びリスト(要素は50個まで)<br>★フィールド長はバイト単位で指定<br>ただし、フィールド長の合計(レコード長)は8KBまで<br><br>以上の条件に合わない場合はエラー(Illegal argument supplied)となります。"; hash["text"]="Aで指定するファイル名、Lで指定する構造を持つランダムファイルを新た作成して入出力オープンします。したがって、改めて d_open/1 でオープンする必要はありません。<br><br>このランダムファイルはAZ-Prolog独自のフォーマットになっていますので他のデータベースファイルとは互換性はありません。<br>(従って、Prolog-KABA・<br>またはWINGで作成したランダムファイル（dBASEⅡ互換）とも互換性はありません)<br><br>d_write/3 や d_writeq/3 でデータを書込んだ後は d_close/1でファイルクローズをして下さい。<br><br>ここで作成したランダムファイルにデータを追加・修正する場合は d_open/1 でファイルオープンして下さい。<br>再び同じファイル名で d_create を実行するとデータが全て消されてしまいます。<br><br>本システムのランダムファイル名は拡張子などに特に制約はありません。<br>本マニュアルでは分りやすくするため、ランダムファイル名の拡張子は「.db」とします。"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>ファイル名:address.DB<br>構造:フィールド名フィールド長<br>氏名    12<br>〒番号   6<br>住所1   20<br>住所2   20<br>ＴＥＬ  20<br><br>のランダムファイルを作ります。</span><br><br>| ?-d_create('address.db',<br>[[氏名,12],[〒番号,6],[住所1,20],[住所2,20],[ＴＥＬ,20]]).<br>yes"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_open/1<br>d_close/1<br>d_write/3<br>d_writeq/3"; azlist.push(hash);
var hash={}; hash["id"]="221"; hash["name"]="d_open/1"; hash["common"]=""; hash["format"]="d_open(+A)"; hash["argument"]="A:オープンするファイル名を指定する"; hash["text"]="Aで指定されるランダムファイルをファイル(読み出し・書込み両用)として入出力オープンします。<br><br>Aで指定されるファイルは既に d_create/2 で作られていなければなりません。<br>従って、この d_open/1 は既存のランダムファイルにデータを追加したり、修正する場合に使います。<br>オープンしたランダムファイルは d_close/1 でクローズします。"; hash["reference"]=""; hash["sample"]="| ?-d_open('address.db'),d_write('address.db',1,[[氏名,長野一太郎]]),<br>d_close('address.db').<br>yes<br><span style='color:#FFFF00'>'address.db'というランダムファイルの、一番目のレコードの、<br>氏名フィールドに「長野一太郎」なる値を書込みます。</span><br><br>| ?-d_open('address.db'),d_seek('address.db',_,0),<br>d_read('address.db',[氏名],X),d_close('address.db').<br>_0=0,<br>X = [[氏名,長野一太郎]]<br>yes<br><span style='color:#FFFF00'>'address.db'というランダムファイルの、一番目のレコードの、<br>氏名フィールドから「長野一太郎」なる値を読み込みます。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_create/2<br>d_close/1"; azlist.push(hash);
var hash={}; hash["id"]="222"; hash["name"]="d_opening/1"; hash["common"]=""; hash["format"]="d_opening(-L)"; hash["argument"]="L:現在、オープンされているランダムファイル名の並びのリストがユニファイされる"; hash["text"]="現在、オープンされているランダムファイル名を取得します。"; hash["reference"]=""; hash["sample"]="| ?-d_open(&#39;test1.db&#39;).<br>yes<br>| ?-d_open(&#39;test2.db&#39;).<br>yes<br>| ?-d_opening(X).<br>X = [test1.db,test2.db]<br>yes"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_create/2<br>d_open/1"; azlist.push(hash);
var hash={}; hash["id"]="223"; hash["name"]="d_close/1"; hash["common"]=""; hash["format"]="d_close(+A)"; hash["argument"]="A:クローズするファイル名を指定する"; hash["text"]="d_create/2,d_open/1 でオープンされたランダムファイルをクローズします。"; hash["reference"]=""; hash["sample"]="| ?-d_open('address.db'),d_write('address.db',1,[[氏名,長野一太郎]]),<br>d_close('address.db').<br>yes<br><br><span style='color:#FFFF00'>'address.db'というランダムファイルの、一番目のレコードの、氏名フィールドに「長野一太郎」なる値を書込みます。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_create/2<br>d_open/1"; azlist.push(hash);
var hash={}; hash["id"]="224"; hash["name"]="d_write/3"; hash["common"]=""; hash["format"]="d_write(+A,+I,+L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:書込むファイル名<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>I</td>      <td>:書込むレコード番号</td>    </tr>    <tr>      <td align='left'>L</td>      <td>:[フィールド名,書込む項]なるリストか又はそのリスト</td>    </tr>  </tbody></table>"; hash["text"]="d_create/2,d_open/1 でオープンされているランダムファイルにデータ(項)を書込みます。<br>ただし、Tがシングルクォートで囲ったアトムの場合、またはTがシングルクォートで囲ったアトムが含まれる複合項の場合、そのシングルクォートがばすされて書込まれてしまいます。<br>従って、シングルクォートがはずされると項として許されない(括弧の対応がとれてないなど)場合は書込まれますが、d_read/2で読込む時点でエラー(Syntax error)となり読込む事は出来ませんので注意が必要です。<br>この場合は次の d_writeq/3 を使うとシングルクォートがはずされずにアトムのまま書込まれる為にd_read/2 でエラー(Syntax error)にならずに読込む事が出来ます。<br>また、書込もうとするフィールドに既にデータがある場合は上書されます。"; hash["reference"]=""; hash["sample"]="| ?-d_open('address.db'),<br>d_write('address.db',1,<br>[[氏名,長野一太郎],<br>[〒番号,612],<br>[住所1,京都市伏見区下鳥羽平塚町],<br>[住所2,20],<br>[ＴＥＬ,075-602-7878]]),<br>d_close('address.db').<br>yes<br><span style='color:#FFFF00'>‹address.db›ファイルの第1レコードのそれぞれのフィールドにデータを書込みます。</span><br><br>| ?-d_open('address.db'),d_write('address.db',2,[[氏名,長野一太郎]]),<br>d_close('address.db').<br>yes<br><span style='color:#FFFF00'>‹address.db›ファイルの第2レコードの氏名フィールドにデータを書込みます。(シングルクォート付)</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_create/2<br>d_open/1"; azlist.push(hash);
var hash={}; hash["id"]="225"; hash["name"]="d_writeq/3"; hash["common"]=""; hash["format"]="d_writeq(+A,+I,+L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:書込むファイル名<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>I</td>      <td>:書込むレコード番号</td>    </tr>    <tr>      <td align='left'>L</td>      <td>:[フィールド名,書込む項]なるリストか又はそのリスト</td>    </tr>  </tbody></table>"; hash["text"]="d_create/2,d_open/1 でオープンされているランダムファイルにデータ(項)を書込みます。<br>d_write/3 との違いは、d_write/3 が「Tがシングルクォートで囲ったアトムの場合、またはTがシングルクォートで囲ったアトムが含まれる複合項の場合そのにシングルクォートがはずされる」のに対して d_writeq/3 ではそのまま書込まれる点です。<br>従って、シングルクォートがはずされると項として許されない(括弧の対応がとれてないなど)場合でもアトムのまま書込まれますから、d_read/2 で読む事が出来ます。"; hash["reference"]=""; hash["sample"]="| ?-d_create('test.db',[[a,10]]),d_write('test.db',1,[[a,'a)(b']]),<br>d_close('test.db').<br>yes<br>| ?-d_open('test.db'),d_read('test.db',[a],X),d_close('test.db').<br>Syntax error      ---------<br>d_read('test.db',1,[a],X) d_open('test.db') ?-<br><span style='color:#FFFF00'>「a)(b」が項として許されない文字列なので、エラー(Syntax error)となります。</span><br><br>| ?-d_open('test.db'),d_writeq('test.db',1,[[a,'a)(b']]),d_close('test.db').<br>yes<br>| ?-d_open('test.db'),d_read('test.db',[a],X),d_close('test.db').<br>X = [[a,a)(b]]<br>yes<br><span style='color:#FFFF00'>d_writeq/2 で書込むと「a)(b」がアトムのまま書込まれるため、d_read/2で読み込む事が出来ます。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_write/3<br>d_create/2<br>d_open/1"; azlist.push(hash);
var hash={}; hash["id"]="226"; hash["name"]="d_read/2"; hash["common"]=""; hash["format"]="d_read(+A,-L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:入力したいファイル名<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>L</td>      <td>:現在のレコードポインタを一つ進めた番号のレコードの全フィールドのデータがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="先ず現在のレコードポインタを進めて、その位置のレコード(つまり、現在のレコードポインタの指すレコードの次のレコード)の全フィールドのデータを入力(読み込み)します。<br>レコードポインタが既に最終レコードを指している場合は失敗します。<br><br>レコードポインタとは最後に入力したレコードを指すものです。<br>従ってレコードポインタの値は最後に入力した(読み込んだ)レコードのレコード番号ということになります。<br>なお、d_open/1 でオープンした直後はレコードポインタ0レコードを指しています。<br>つまりレコードポインタの値が0という事です。<br>これは「最後に0レコードを読み込んだ」事になりますが実際には0レコードはありませんから、「ファイルをオープンしてから未だレコードを一つも読み込んでいない」という事を表します。<br><br>また、レコードポインタの現在の値(位置)は d_seek/3 で参照・変更できます。<br>d_seek/3 を使って、レコードポインタの現在の値(位置)を読み込みたいレコードの番号より一つ若い値に設定することによって目的のレコードをダイレクトに入力する事が出来ます。<br><br>この述語は決定性述語ですからバックトラックしてきたとしても、この述語自信は次のレコードを読み込む事はしません。<br>バックトラックによって動作を繰返したい場合にはこの述語より前に repeat系述語を書いておきます。<br><br>指定レコード以降のレコードを次々と入力するPrologプログラムを書くと...<br><br>db_read(F,R,D) :- d_seek(F,_,R-1),repeat,db_read(F,D).<br>db_read(F,D) :- d_read(F,D),!.<br>db_read(_,_) :- though,!,fail.<br><br>のようになります。"; hash["reference"]=""; hash["sample"]="| ?-d_open('address.db'),d_seek('address.db',_,0),d_read('address.db',X),d_close('address.db').<br><br>X = [[氏名,長野一太郎],[〒番号,612],[住所1,長野県佐久市大字中込],<br>[住所2,13-3],[ＴＥＬ,0422-21-2304]<br>yes<br><br><span style='color:#FFFF00'> 'address.db'というランダムファイルの、一番目のレコードの、全フィールドから値を読み込みます。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_create/2<br>d_seek/3"; azlist.push(hash);
var hash={}; hash["id"]="227"; hash["name"]="d_read/3"; hash["common"]=""; hash["format"]="d_read(+A,+L1,-L2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:入力したいファイル名を指定する</td>    </tr>    <tr>      <td align='left'>L1</td>      <td>:入力したいフィールド名の並びリストを指定する</td>    </tr>    <tr>      <td align='left'>L2</td>      <td>:該当のデータがユニファイされる<br>        フィールド名を複数指定した場合はその並びの順番に対応したデータのリストがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="Aによって指定されたファイルの現在のレコードポンタを一つ前に進めた後、そのレコードのL1で指定されたフィールドのデータを入力(読み込み)します。<br><br>フィールド名を指定出来る以外は d_read/2 と同じです。<br><br>なお、指定されたフィールド名のどれかが存在しないときは失敗します。"; hash["reference"]=""; hash["sample"]="db_read(F,L,D) :- repeat,db_read(F,L,D).<br>db_read(F,L,D) :- d_read(F,L,D),!.<br>db_read(_,_,_) :- though,!,fail.<br><span style='color:#FFFF00'> というプログラムが定義されている時</span><br><br>| ?-d_open('address.db').<br>yes<br>| ?-db_read('address.db',[氏名],X).<br>yes<br>X = [[氏名,長野一太郎]];<br>X = [[氏名,長野二太郎]];<br>X = [[氏名,長野三太郎]]<br>yes<br>| ?-d_close('address.db').<br>yes<br><br><span style='color:#FFFF00'>'address.db'というランダムファイルの、一番目のレコードの、氏名フィールドから「長野一太郎」「長野二太郎」「長野三太郎」なる値を読み込みました。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_read/2<br>d_create/2<br>d_seek/3"; azlist.push(hash);
var hash={}; hash["id"]="228"; hash["name"]="d_seek/3"; hash["common"]=""; hash["format"]="d_seek(+A,-I1,+I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:ファイル名を指定する<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>I1</td>      <td>:変更前のレコードポインタの位置がユニファイされる</td>    </tr>    <tr>      <td align='left'>I2</td>      <td>:変更後のレコードポインタの位置を指定する<br>        (実数の場合は小数点以下が切捨てられる。また、数式も許される)</td>    </tr>  </tbody></table>"; hash["text"]="現在のレコードポインタの位置を取得・変更します。<br>主に任意のレコードから以降を逐次読み込む場合に先頭のレコードを指定するために使います。<br>レコードポインタとは最後に入力したレコードを指すものです。<br>従ってレコードポインタの値は最後に入力した(読み込んだ)レコードのレコード番号ということになります。<br>なお、d_open/1 でオープンした直後はレコードポインタ0レコードを指しています。<br>つまりレコードポインタの値が0という事です。これは「最後に0レコードを読み込んだ」事になりますが実際には0レコードはありませんから、「ファイルをオープンしてから未だレコードを一つも読み込んでいない」という事を表します。"; hash["reference"]=""; hash["sample"]="db_read(F,R,L,D) :- d_seek(F,_,R-1),repeat,db_read(F,L,D).<br>db_read(F,L,D) :- d_read(F,L,D),!.<br>db_read(_,_,_) :- though,!,fail.<br><span style='color:#FFFF00'>というプログラムが定義されている時</span><br>| ?-d_open('address.db'),db_read('address.db',3,[氏名],X).<br>X = [[氏名,長野三太郎]];<br>X = [[氏名,長野四太郎]];<br>X = [[氏名,長野五太郎]]<br>yes<br>| ?-d_close('address.db').<br>yes<br><span style='color:#FFFF00'>d_read/2 d_read/3 はレコード指定をしない場合は現在のレコードポインタの次のレコードを読み込む為、<br>d_seek/3 の指定は読み込みたいレコードより一つ前を指定しなければなりません。<br>先頭のレコードから読み込む場合は0を指定します。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_read/2<br>d_read/3"; azlist.push(hash);
var hash={}; hash["id"]="229"; hash["name"]="d_record/4"; hash["common"]=""; hash["format"]="d_record(+A,-I1,-I2,-I3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:ファイル名を指定<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>I1</td>      <td>:指定ファイルの最後に読み込まれたレコード番号(現在のレコードポインタの位置)がユニファイされる</td>    </tr>    <tr>      <td align='left'>I2</td>      <td>:指定ファイルの最終レコード番号(全レコード数)がユニファイされる</td>    </tr>    <tr>      <td align='left'>I3</td>      <td>:指定ファイルのレコード長(フィールド長の合計)がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="指定ファイルの最後に読み込まれたレコード番号(現在のレコードポインタの位置)<br>最終レコード番号(全レコード数)、レコード長(フィールド長の合計)を取得できます。"; hash["reference"]=""; hash["sample"]="db_read(F,R,L,D) :- d_seek(F,_,R-1),repeat,db_read(F,L,D).<br>db_read(F,L,D) :- d_read(F,L,D),!.<br>db_read(_,_,_) :- though,!,fail.<br><span style='color:#FFFF00'>というプログラムが定義されていて、かつ、'address.db'というファイルが<br>d_create('address.db',<br>[[氏名,12],[〒番号,6],[住所1,20],[住所2,20],[TEL,20]]).<br>で作成・入出力オープンされているものとすると</span><br><br>| ?-d_open('address.db'),db_read('address.db',3,氏名,X).<br>X = [[氏名,長野三太郎]];<br>X = [[氏名,長野四太郎]];<br>X = [[氏名,長野五太郎]]<br>yes<br>| ?-d_record('address.db',Rp,Rn,Rl),d_close('address.db').<br>Rp = 5, <span style='color: #FFFF00'><== ファイルポインタは5である(最後に第5レコードを読み出したので)</span><br>Rn = 5, <span style='color: #FFFF00'><== 5個のレコードがある(最終レコード番号)</span><br>Rl = 78 <span style='color: #FFFF00'><== レコード長は78である(各フィールド長の合計 12+6+20+20+20= 70)</span><br>yes"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_open/1<br>d_read/2<br>d_read/3<br>d_seek/3"; azlist.push(hash);
var hash={}; hash["id"]="230"; hash["name"]="d_struct/2"; hash["common"]=""; hash["format"]="d_struct(+A,-L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:ファイル名を指定<br>        必ず、予め d_open/1 で入出力オープンしているファイルであること</td>    </tr>    <tr>      <td align='left'>I1</td>      <td>:指定ファイルの最後に読み込まれたレコード番号(現在のレコードポインタの位置)がユニファイされる</td>    </tr>    <tr>      <td align='left'>L</td>      <td>:指定ファイルの構造([フィールド名,フィールド長]なるのリストのリスト)がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="指定ファイルの構造を[フィールド名,フィールド長]なるリストのリストで取得できます。"; hash["reference"]=""; hash["sample"]="d_create('address.db',<br>[[氏名,12],[〒番号,6],[住所1,20],[住所2,20],[TEL,20]]).<br><span style='color:#FFFF00'>で作成・入出力オープンされているものとすると</span><br>| ?-d_open('address.db'),d_struct('address.db',X),d_close('address.db').<br>X = [[氏名,12],[〒番号,6],[住所1,20],[住所2,20],[TEL,20]]<br>yes<br><br><span style='color:#FFFF00'>つまり、指定ファイルを作った時の d_create/2 の第2引数に指定したリストと同じリストが返されます。</span>"; hash["genre"]="8"; hash["used"]="true"; hash["incident"]="d_open/1<br>d_read/2<br>d_read/3<br>d_seek/3"; azlist.push(hash);
var hash={}; hash["id"]="231"; hash["name"]="is  /xfx"; hash["common"]="ISO"; hash["format"]="-N1 is +N2"; hash["argument"]="N1:N2を評価した結果(演算の解、実数値又は整数値)がユニファイされる<br>N2:評価される数式を指定する(それ以外の場合はエラー{Illegal argument supplied}となる)<br>数式とは数値(整数値又は実数値)、算術演算子、ビット演算子、算術関数<br>内部状態参照関数のどれか、又はこれらの要素を組合せたものとする"; hash["text"]="N2の数式(算術演算子・算術関数又は内部状態参照関数を含む項)を評価(演算)し、その結果をN1にユニファイします。<br><br>整数演算の場合にその結果が、整数の範囲を越える(オーバーフローする)とその値は保証されません。64bit OSの場合、-2^63 ~ 2^63-1までの範囲(19桁)です。<br><br>実数演算の場合はその結果が15桁を越えると仮数と指数に分けて表現されます。<br>64bit OSの場合、e-324 ~ e+308までの範囲です。<br>また、この例の様に数式の中に関数を書く事も出来ます。<br>数式に使える算術演算子・算術関数・内部状態参照関数には次のものがあります。<br><br>《算術演算子》<br>「+(符号)」「-(符号)」「+」「-」「*」「/」「^」「/\\」<br>「and」「\\/」「or」「\\」「<<」「>>」「mod」「rem」<br>「**」「//」<br><br>《算術関数》<br>「exp」「log」「log10」「sqrt」「floor」「sin」<br>「cos」「tan」「asin」「acos」「atan」「float」<br>「integer」「abs」「sign」「gcd」「min」「max」<br>「ceiling」「round」「truncate」「float_integer_part」<br>「float_fractional_part」「pi」「random」<br><br>《内部状態参照関数》<br>「cputime」「breaklevel」<br>「heapused」「heapmax」<br>「globalused」「globalmax」<br>「localused」「localmax」<br>「trailused」「trailmax」<br>「atomused」「atommax」<br><br>内部状態参照関数とは処理系内部の数値情報(ブレークレベルや各スタックの使用量など)を取得する関数です。<br><br>なお、演算の優先順位は数学規則に従います。<br>また、括弧「( )」内は優先されますから、数式中で優先させたい部分を括弧で囲っておけば間違いありません。<br>ただし、数式中で括弧として認められるのは「( )」だけで、数学で使われる「{ }」や「[ ]」は使えません。"; hash["reference"]="「(述)3.5.2算術演算子」「(述)3.5.3ビット演算子」<br>「(述)3.5.4算術関数」の各演算子・関数。"; hash["sample"]=""; hash["genre"]="10"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="232"; hash["name"]="s_child/5"; hash["common"]=""; hash["format"]="s_child(+A,+L,?S1,?S2,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A</td>      <td width='454' nowrap>:子プロセスで実行させるプログラム名を指定する</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>L</td>      <td nowrap>:上のプログラムの起動時の引数ならびリスト</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>S1</td>      <td nowrap>:子プロセスの stdin ストリーム</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>S2</td>      <td nowrap>:子プロセスの stdout ストリーム</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>I</td>      <td nowrap>:子プロセスのプロセスID</td>    </tr>  </tbody></table>"; hash["text"]="S1(S2)として see/2(tell/2)等でオープンしたストリームを指定するとそれが子プロセスの標準入出力として与えられる。<br>未代入変数が与えられた場合にはパイプをオープンしてその書き込み側 (読み出し側) のストリームをユニファイする。"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'> ●Linuxでの実行例</span><br> <br>| ?-s_child(pwd,[],I,O,PID),repeat,get0(O,C),name(A,[C]),　　 　<br>　 write(A),C =:=4,told(I),seen(O),s_kill(PID,15),<br>    s_wait(PID,X,Y).<br> /home/sofnec/prolog<br><br> I = fp_294ef10,<br> O = fp_294f1b0,<br> PID = 20322,<br> C = 4,<br> A = ,<br> X = 0,<br> Y = 15<br> yes<br><br><br><span style='color:#FFFF00'>●Windowsでの実行例<br>　（s_childで実行するプログラムにより結果が異なります）</span><br><br>| ?-s_child(cmd,['/K','cd'],I,O,PID),s_sleep(1000),s_kill(PID,9),<br>s_wait(PID,_,_),repeat,get0(O,C),name(A,[C]),write(A),C=:=26,<br>told(I),seen(O).<br>C:AZ-Prologin<br><br>C:AZ-Prologin><br>I       = fp_668ef70,<br>O       = fp_668efd0,<br>PID     = 172,<br>_3      = 9,<br>_4      = _4,<br>C       = 26,<br>A       =<br>yes"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="s_kill/2<br>s_wait/3"; azlist.push(hash);
var hash={}; hash["id"]="233"; hash["name"]="s_wait/3"; hash["common"]=""; hash["format"]="s_wait(+I1,-I2,-I3)"; hash["argument"]="I1:終了したプロセスのプロセスID<br>I2:終了ステータスの上位8bit<br>I3:終了ステータスの下位8bit"; hash["text"]=""; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>●Linuxでの実行例</span><br> <br>| ?-s_child(pwd,[],I,O,PID),repeat,get0(O,C),name(A,[C]),　　 　<br>　 write(A),C =:=4,told(I),seen(O),s_kill(PID,15),<br>    s_wait(PID,X,Y).<br> /home/sofnec/prolog<br><br> I = fp_294ef10,<br> O = fp_294f1b0,<br> PID = 20322,<br> C = 4,<br> A = ,<br> X = 0,<br> Y = 15<br> yes<br><br><br><span style='color:#FFFF00'>●Windowsでの実行例<br>　（s_childで実行するプログラムにより結果が異なります）</span><br><br>| ?-s_child(cmd,['/K','cd'],I,O,PID),s_sleep(1000),s_kill(PID,9),<br>s_wait(PID,_,_),repeat,get0(O,C),name(A,[C]),write(A),C=:=26,<br>told(I),seen(O).<br>C:AZ-Prologin<br><br>C:AZ-Prologin><br>I       = fp_668ef70,<br>O       = fp_668efd0,<br>PID     = 172,<br>_3      = 9,<br>_4      = _4,<br>C       = 26,<br>A       =<br>yes"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="s_child/5<br>s_kill/2"; azlist.push(hash);
var hash={}; hash["id"]="234"; hash["name"]="s_sleep/1"; hash["common"]=""; hash["format"]="s_sleep(+I)"; hash["argument"]="I:sleepする時間の長さ(ミリ秒単位)"; hash["text"]="指定ミリ秒スリープする"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="s_usleep/1"; azlist.push(hash);
var hash={}; hash["id"]="235"; hash["name"]="s_pid/1"; hash["common"]=""; hash["format"]="s_pid(-I)"; hash["argument"]="I:自プロセスのプロセスID"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="236"; hash["name"]="s_kill/2"; hash["common"]=""; hash["format"]="s_kill(+I1,+I2)"; hash["argument"]="I1:シグナルを送るプロセスのプロセスID<br>I2:送信するシグナル番号"; hash["text"]="子プロセスを削除する。"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>●Linuxでの実行例</span><br> <br>| ?-s_child(pwd,[],I,O,PID),repeat,get0(O,C),name(A,[C]),　　 　<br>　 write(A),C =:=4,told(I),seen(O),s_kill(PID,15),<br>    s_wait(PID,X,Y).<br> /home/sofnec/prolog<br><br> I = fp_294ef10,<br> O = fp_294f1b0,<br> PID = 20322,<br> C = 4,<br> A = ,<br> X = 0,<br> Y = 15<br> yes<br><br><br><span style='color:#FFFF00'>●Windowsでの実行例<br>　（s_childで実行するプログラムにより結果が異なります）</span><br><br>| ?-s_child(cmd,['/K','cd'],I,O,PID),s_sleep(1000),s_kill(PID,9),<br>s_wait(PID,_,_),repeat,get0(O,C),name(A,[C]),write(A),C=:=26,<br>told(I),seen(O).<br>C:AZ-Prologin<br><br>C:AZ-Prologin><br>I       = fp_668ef70,<br>O       = fp_668efd0,<br>PID     = 172,<br>_3      = 9,<br>_4      = _4,<br>C       = 26,<br>A       =<br>yes<br>"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="s_child/5<br>s_wait/3"; azlist.push(hash);
var hash={}; hash["id"]="237"; hash["name"]="s_kill/1"; hash["common"]=""; hash["format"]="20140203削除"; hash["argument"]="I:シグナルを送るプロセスのプロセスID"; hash["text"]=""; hash["reference"]=""; hash["sample"]="●Linuxでの実行例<br> <br>| ?-s_child(pwd,[],I,O,PID),repeat,get0(O,C),name(A,[C]),　　 　<br>　 write(A),C =:=4,told(I),seen(O),s_kill(PID,15),<br>    s_wait(PID,X,Y).<br> /home/sofnec/prolog<br><br> I = fp_294ef10,<br> O = fp_294f1b0,<br> PID = 20322,<br> C = 4,<br> A = ,<br> X = 0,<br> Y = 15<br> yes<br><br><br>●Windowsでの実行例<br>　（s_childで実行するプログラムにより結果が異なります）<br><br>| ?-s_child(cmd,[&#39;/K&#39;,&#39;cd&#39;],I,O,PID),s_sleep(1000),s_kill(PID,9),<br>s_wait(PID,_,_),repeat,get0(O,C),name(A,[C]),write(A),C=:=26,<br>told(I),seen(O).<br>C:\\AZ-Prolog\\bin<br><br>C:\\AZ-Prolog\\bin><br>I       = fp_668ef70,<br>O       = fp_668efd0,<br>PID     = 172,<br>_3      = 9,<br>_4      = _4,<br>C       = 26,<br>A       =<br>yes"; hash["genre"]="25"; hash["used"]="false"; hash["incident"]="s_child/5<br>s_kill/2<br>s_wait/3"; azlist.push(hash);
var hash={}; hash["id"]="238"; hash["name"]="pm_session/4(OS/2)"; hash["common"]=""; hash["format"]="pm_session(+A1,+A2,-I1,-I2)"; hash["argument"]="A1:新セッションで実行させるプログラム名を指定する(絶対パス名)<br>A2:上のプログラムの起動時の引数<br>I1:新セッションのセッションID<br>I2:新セッションで起動したプロセスのプロセスID"; hash["text"]=""; hash["reference"]="削除20131203"; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="239"; hash["name"]="pm_open/3"; hash["common"]=""; hash["format"]="pm_open(+A,+S1,+S2)"; hash["argument"]="A:オープンするもののパス名<br>S1:入力用ストリーム<br>S2:出力用ストリーム"; hash["text"]="DosOpen システムコールが ERROR_PIPE_BUSY を返したら DosWaitNmPipe システム<br>コールを実行する。従って名前つきパイプのオープンに適しているが、通常のファ<br>イルに対して実行しても特に問題はない。"; hash["reference"]="削除20131203"; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="240"; hash["name"]="create_neuron/4"; hash["common"]=""; hash["format"]="create_neuron(+I1,+I2,+I3,-AR)"; hash["argument"]="I1:入力層ニューロンの数<br>I2:中間層ニューロンの数<br>I3:出力層ニューロンの数<br>AR:ニューロンオブジェクト"; hash["text"]="引数で指定されたサイズのバックプロバケーション方式(逆伝播)のニューラルネットワークを構築し、ARにユニファイします。"; hash["reference"]=""; hash["sample"]="| ?-create_neuron(5,9,5,Neuron).<br>Neuron = array_5708/856<br>yes"; hash["genre"]="29"; hash["used"]="true"; hash["incident"]="learn_neuron/6<br>save_neuron/2<br>load_neuron/2<br>inference_neuron/3"; azlist.push(hash);
var hash={}; hash["id"]="241"; hash["name"]="learn_neuron/6"; hash["common"]=""; hash["format"]="learn_neuron(+AR,+A,+I1,+I2,+I3,?I4)"; hash["argument"]="AR:ニューロンオブジェクト (create_neuron/4で第4引数に返された値)<br>A:学習する述語名<br>I1:学習する述語のアリティ<br>I2:学習する述語の入力信号の引数<br>I3:学習する述語の教師信号の引数<br>I4:学習した回数がユニファイされる。<br>又、数値指定の場合は学習回数の上限となる"; hash["text"]="「入力信号」、「教師信号」を含んだ述語からバックプロバケーション方式(逆伝播)の学習を行う。<br>「入力信号」は floot 型のリストで表され、要素の数が入力層の数と一致しなければならない。<br>「教師信号」は integer 型のリストで表され要素の数が出力層の数と一致しなければならない。<br><br>※教師信号のリストで指定できる数値は 0 か 1 であり、1 は 1 つしか指定できません。<br>   収束条件は正解率が 95% を超えたときです。<br>   尚、バックプロバケーション等の説明は他の参考書等を参照してください。"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>kanpou([0.1,0.5,0.3,0.9],[0,0,0,1]).<br>kanpou([0.3,0.2,0.8,0.5],[0,0,1,0]).<br>kanpou([0.5,0.9,0.3,6.1],[0,1,0,0]).<br>kanpou([0.9,0.1,0.2,0.3],[1,0,0,0]).<br>yes<br>| ?-create_neuron(4,5,4,Neuron),learn_neuron(Neuron,kanpou,2,1,2,Loop).<br>Neuron = array_58624,<br>Loop = 384<br>yes"; hash["genre"]="29"; hash["used"]="true"; hash["incident"]="create_neuron/4<br>save_neuron/2<br>load_neuron/2<br>inference_neuron/3"; azlist.push(hash);
var hash={}; hash["id"]="242"; hash["name"]="save_neuron/2"; hash["common"]=""; hash["format"]="save_neuron(+AR,+A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>AR:</td>      <td nowrap>ニューロンオブジェクト(create_neuron/4 で第4引数に返された値)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A:</td>      <td nowrap>ファイル名</td>    </tr>  </tbody></table>"; hash["text"]="learn_neuron/6 で学習した知識をファイルにセーブする。"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>kanpou([0.1,0.5,0.3,0.9],[0,0,0,1]).<br>kanpou([0.3,0.2,0.8,0.5],[0,0,1,0]).<br>kanpou([0.5,0.9,0.3,6.1],[0,1,0,0]).<br>kanpou([0.9,0.1,0.2,0.3],[1,0,0,0]).<br>yes<br>| ?-create_neuron(4,5,4,Neuron),learn_neuron(Neuron,kanpou,2,1,2,Loop),<br>save_neuron(Neuron,'kanpou.w').<br>Neuron = array_58624,<br>Loop = 384<br>yes"; hash["genre"]="29"; hash["used"]="true"; hash["incident"]="create_neuron/4<br>learn_neuron/6<br>load_neuron/2<br>inference_neuron/3"; azlist.push(hash);
var hash={}; hash["id"]="243"; hash["name"]="load_neuron/2"; hash["common"]=""; hash["format"]="load_neuron(+AR,+A)"; hash["argument"]="AR:ニューロンオブジェクト(create_neuron/4 で第4引数に返された値)<br>A:ファイル名"; hash["text"]="save_neuron/2 でセーブした知識をロードする。<br>但し、セーブしたときのニューロンオブジェクトの入力層の数、中間層の数、出力層の数とロード時に指定するニューロンオブジェクトの入力層の数、中間層の数、出力層の数と一致しなければなりません。"; hash["reference"]=""; hash["sample"]="| ?-create_neuron(4,5,4,Neuron),load_neuron(Neuron,&#39;kanpou.w&#39;).<br>Neuron = array_58624,<br>yes"; hash["genre"]="29"; hash["used"]="true"; hash["incident"]="create_neuron/4<br>learn_neuron/6<br>save_neuron/2<br>inference_neuron/3"; azlist.push(hash);
var hash={}; hash["id"]="244"; hash["name"]="inference_neuron/3"; hash["common"]=""; hash["format"]="inference_neuron(+AR,+L1,+L2)"; hash["argument"]="AR:ニューロンオブジェクト(create_neuron/4 で第4引数に返された値)<br>L1:推論させる入力リスト<br>L2:推論後の出力リスト"; hash["text"]="learn_neuron/6 で学習した知識をもとに推論を行う。<br>L1,L2 ともに floot 型のリストであり L2 の要素が 0.9 以上であれば 1 それ未満のものが 0 と見なされる。"; hash["reference"]=""; hash["sample"]="| ?-create_neuron(4,5,4,Neuron),load_neuron(Neuron,&#39;kanpou.w&#39;),<br>inference_neuron(Neuron,[0.1,0.5,0.3,0.9],L).<br>Neuron = array_57081856,<br>L = [0.00342921267458552,0.0681535219617237,<br>0.0914518719506123,0.91807457307280]<br>yes"; hash["genre"]="29"; hash["used"]="true"; hash["incident"]="create_neuron/4<br>save_neuron/2<br>load_neuron/2<br>learn_neuron/6"; azlist.push(hash);
var hash={}; hash["id"]="245"; hash["name"]="create_array/2"; hash["common"]=""; hash["format"]="create_array(+I,-AR)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>I</td>      <td nowrap>:array</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>AR</td>      <td nowrap>:array オブジェクト</td>    </tr>  </tbody></table>"; hash["text"]="I で指定されたサイズ分の arrayエリアを確保し ARにユニファイします。<br>確保したエリアの初期値は全て 0となる。"; hash["reference"]=""; hash["sample"]="| ?- create_array(100,Array).<br>Array = array_57081856<br>yes"; hash["genre"]="28"; hash["used"]="true"; hash["incident"]="set_array/3<br>get_array/3"; azlist.push(hash);
var hash={}; hash["id"]="246"; hash["name"]="set_array/3"; hash["common"]=""; hash["format"]="set_array(+AR,+I,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>AR</td>      <td nowrap>:array オブジェクト(create_array/2 で第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>I</td>      <td nowrap>:位置を指定 (0≦I< array サイズ)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>T</td>      <td nowrap>:任意の term</td>    </tr>  </tbody></table>"; hash["text"]="create_array/2 で作成した array に項を入れます。<br><br>※arrayオブジェクト自身も set_array する事は可能だが再帰するような代入はしてはいけません。"; hash["reference"]=""; hash["sample"]="| ?- create_array(100,Array),set_array(Array,0,a(1)).<br>Array = array_57081856<br>yes"; hash["genre"]="28"; hash["used"]="true"; hash["incident"]="create_array/2<br>get_array/3"; azlist.push(hash);
var hash={}; hash["id"]="247"; hash["name"]="get_array/3"; hash["common"]=""; hash["format"]="get_array(+AR,+I,-T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>AR</td>      <td nowrap>:array オブジェクト(create_array/2 で第2引数に返された値)</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>I</td>      <td nowrap>:位置を指定 (0≦I< array サイズ)</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>T</td>      <td nowrap>:取り込まれた項がユニファイする</td>    </tr>  </tbody></table>"; hash["text"]="set_array/3 により代入された項を取り出す。"; hash["reference"]=""; hash["sample"]="| ?- create_array(100,Array),set_array(Array,0,a(1)),<br>get_array(Array,0,V).<br>Array = array_57081856<br>V = a(1)<br>yes"; hash["genre"]="28"; hash["used"]="true"; hash["incident"]="create_array/2<br>set_array/3"; azlist.push(hash);
var hash={}; hash["id"]="248"; hash["name"]="-  /fy"; hash["common"]="ISO"; hash["format"]="-N"; hash["argument"]="N:数値か数式。"; hash["text"]="Nの値の符号を反転する(2の補数をつくる)単項演算子です。<br>もし、「- -1」というように2つ以上書く場合は、「-」と「-」の間には必ず「空白」を入れる必要があります。<br>もし「-」と「-」を続けて書くと、エラー(syntax error)となります。"; hash["reference"]=""; hash["sample"]="| ?-X is -1.<br>X = -1<br>yes<br>| ?-X is - -1.<br>X = 1<br>yes<br>| ?-X is --1.<br>Syntax error"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>-  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="249"; hash["name"]="+  /yfx"; hash["common"]="ISO"; hash["format"]="N1 + N2"; hash["argument"]="N1・N2:数値か数式。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で加算演算を行います。<br>N1からN2を足した値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is 1 + 2.<br>X = 3<br>yes<br>| ?-X is 1 + (-1).<br>X = 0<br>yes<br>| ?- X is 1.0 + (-1).<br>X = 0.000000000000000<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="250"; hash["name"]="-  /yfx"; hash["common"]="ISO"; hash["format"]="N1 - N2"; hash["argument"]="N1・N2:数値か数式。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で減算演算を行います。<br>N1からN2を引いた値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is 1 - 2.<br>X = -1<br>yes<br>| ?-X is 1 - 1.<br>X = 0<br>yes<br>| ?- X is 1.0 - 1.<br>X = 0.000000000000000<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>-  /fy"; azlist.push(hash);
var hash={}; hash["id"]="251"; hash["name"]="*  /yfx"; hash["common"]="ISO"; hash["format"]="N1 * N2"; hash["argument"]="N1・N2:共に数式。"; hash["text"]="is  /xfyなどの数式を評価する述語の引数の中で乗算演算を行います。<br>N1とN2を掛けた値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is 3 * 2.<br>X = 6<br>yes<br>| ?-X is 1 * (-1).<br>X = -1<br>yes<br>| ?-X is 1 * 0.0.<br>X = 0.000000000000000<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="252"; hash["name"]="/  /yfx"; hash["common"]="ISO"; hash["format"]="N1 / N2"; hash["argument"]="N1:被除数。数値か数式。<br>N2:除数。0以外の数値か数式。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で除算演算を行います。<br>N1とN2を割った値を求めます。<br>整数同士でも実数を返します。<br>整数の除算は//  /yfxを使ってください。"; hash["reference"]=""; hash["sample"]="| ?-X is 20 / 3.<br>X       = 6.66666666666667<br>yes<br>| ?-X is 1 / (-1).<br>X       = -1.00000000000000<br>yes<br>| ?-X is 1 / 0.0.<br>Division by 0     ---- Backtrace<br>is(X_10,/(1,0.000000000000000)) ?-<br>| ?-"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>//  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="253"; hash["name"]="mod/2"; hash["common"]="ISO"; hash["format"]="I1 mod I2"; hash["argument"]="整数値か整数値を持つ数式"; hash["text"]="I1をI2で割った余りを求めます。<br>定義式は、I1 - I2*floor(I1/I2)。<br>I1, I2が共に正の整数値の場合、rem/2と同じ値となりますが、それ以外の場合には異なる値となることがあります。<br>なお、ver.7.xx以前のAZ-Prologではmodの計算はver. 7.xxのremの計算値に一致します。<br>0で割るとEvaluation error: zero_divisor<br>整数以外の値のとき、Type error: integer expected"; hash["reference"]=""; hash["sample"]="| ?-X is 13 mod 11.<br>X       = 2<br>yes<br>| ?-X is -13 mod 11.<br>X       = -2<br>yes<br>| ?-"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>rem/2"; azlist.push(hash);
var hash={}; hash["id"]="254"; hash["name"]="^  /xfy"; hash["common"]=""; hash["format"]="N1 ^ N2"; hash["argument"]="N1:基数。数値か数式。<br>N2:指数。数値か数式。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で指数演算を行います。<br>N1のN2 乗を計算します。<br>AZ-Prolog ver.7.xx以前のversionでは、指数として整数のみに対応していたので注意が必要です。"; hash["reference"]=""; hash["sample"]="| ?-X is 2.0 ^ 3.0.<br>X       = 8.00000000000000<br>yes<br>| ?-X is 2.0 ^ 2.0 ^ 2.0.<br>X       = 16.0000000000000"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>**  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="255"; hash["name"]="/\  /yfx"; hash["common"]="ISO"; hash["format"]="I1 /\ I2、I1 and I2"; hash["argument"]="I1・I2:共に整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で整数値のビット毎(2進数表現したときの各桁毎)に論理積演算を行います。<br>なを、AZ-Prologの整数は補数表現の符号付きですから、最上位の桁が0になるか1になるかで符号が変わりますので、注意が必要です。<br>演算子の表現は /\ でも and でも全く同じ意味を持ちます。"; hash["reference"]=""; hash["sample"]="| ?-X is 5 /\ 3.<br>X = 1<br>yes<br>| ?-X is 5 and 3.<br>X = 1<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>\/  /yfx<br>or  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="256"; hash["name"]="\/  /yfx"; hash["common"]="ISO"; hash["format"]="I1 \/ I2、I1 or I2"; hash["argument"]="I1・I2:共に整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で整数値のビット毎(2進数表現したときの各桁毎)に論理和演算を行います。<br>なを、AZ-Prologの整数は補数表現の符号付きですから、最上位の桁が0になるか1になるかで符号が変わりますので、注意が必要です。<br>演算子の表現は \/ でも or でも全く同じ意味を持ちます。"; hash["reference"]=""; hash["sample"]="| ?-X is 5 \/ 3.<br>X = 7<br>yes<br>| ?-X is 5 or 3.<br>X = 7<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>\/  /yfx<br>or  /yfx<br>"; azlist.push(hash);
var hash={}; hash["id"]="257"; hash["name"]="<<  /yfx"; hash["common"]="ISO"; hash["format"]="I1 <<I2"; hash["argument"]="I1:被演算数。整数値、または整数値の数式に限る。<br>I2:シフト桁数。整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で、I1をI2で指定されたビット(2進数表現したときの各桁)数だけ左シフト演算を行います。<br>但し、符号ビットはシフトしません。<br>シフトによって空いた右ビットは0で埋められます。"; hash["reference"]=""; hash["sample"]="| ?-X is 1 << 3.<br>X = 8<br>yes<br>| ?-X is -1 << 3.<br>X = -8<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>>>  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="258"; hash["name"]=">>  /yfx"; hash["common"]="ISO"; hash["format"]="I1 >> I2"; hash["argument"]="I1:被演算数。整数値、または整数値の数式に限る。<br>I2:シフト桁数。整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で、I1をI2で指定されたビット(2進数表現したときの各桁)数だけ右シフト演算を行います。<br>但し、符号ビットはシフトしません。<br>シフトによって空いた左ビットは、符号ビットの値がコピーされて埋められます。"; hash["reference"]=""; hash["sample"]="| ?-X is 8 >> 3.<br>X = 1<br>yes<br>| ?-X is -8 >> 3.<br>X = -1<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br><<  /yfx<br>"; azlist.push(hash);
var hash={}; hash["id"]="259"; hash["name"]="\\  /fy"; hash["common"]="ISO"; hash["format"]="\\(I)または\\I"; hash["argument"]="I:被演算数。整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で、Iで指定されたビット(2進数表現したときの各桁)を反転させます。<br>その結果としてIの符号を反転した値から1を引いた値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is \\(3).<br>X = -4<br>yes<br>| ?-X is \\(0).<br>X = -1<br>yes<br>| ?-X is \\(-3).<br>X = 2<br>yes<br>| ?-X is \\1.<br>X = -2<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="260"; hash["name"]="sin/1"; hash["common"]="ISO"; hash["format"]="sin(N)"; hash["argument"]="N:角度(単位はラジアン)を表す数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの値に対する正弦を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is sin(0).<br>X = 0.000000000000000<br>yes<br>| ?-X is sin(3.1415926/2).<br>X = 1.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="261"; hash["name"]="cos/1"; hash["common"]="ISO"; hash["format"]="cos(N)"; hash["argument"]="N:角度(単位はラジアン)を表す数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの値に対する余弦を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is cos(0).<br>X = 1.00000000000000<br>yes<br>| ?-X is cos(3.1415926/2).<br>X = 2.67948965850286e-008<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="262"; hash["name"]="tan/1"; hash["common"]=""; hash["format"]="tan(N)"; hash["argument"]="N:角度(単位はラジアン)を表す 数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの値に対する正接を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is tan(0).<br>X = 0.000000000000000<br>yes<br>| ?-X is tan(3.1415926/4).<br>X = 0.999999973205104<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="263"; hash["name"]="asin/1"; hash["common"]=""; hash["format"]="asin(N)"; hash["argument"]="N:正弦値を表す数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの正弦値に対する角度(単位はラジアン)を求めます。<br>定義域の絶対値が1より大きいとEvaluation error:Undefinedとなります。"; hash["reference"]=""; hash["sample"]="| ?-X is asin(0).<br>X = 0.000000000000000<br>yes<br>| ?-X is asin(1).<br>X = 1.57079632679490<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="264"; hash["name"]="acos/1"; hash["common"]="ISO"; hash["format"]="acos(N)"; hash["argument"]="N:余弦値を表す数値か数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの余弦値に対する角度(単位はラジアン)を求めます。<br>定義域の絶対値が1より大きいとEvaluation error:Undefinedとなります。"; hash["reference"]=""; hash["sample"]="| ?-X is acos(0).<br>X = 1.57079632679490<br>yes<br>| ?-X is acos(1).<br>X       = 0.000000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="265"; hash["name"]="atan/1"; hash["common"]="ISO"; hash["format"]="atan(N)"; hash["argument"]="N:正接値を表す数値か数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの正接値に対する角度(単位はラジアン)を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is atan(0).<br>X       = 0.000000000000000<br>yes<br>| ?-X is atan(1).<br>X       = 0.785398163397448<br>yes<br>| ?-"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="266"; hash["name"]="exp/1"; hash["common"]="ISO"; hash["format"]="exp(N)"; hash["argument"]="N:指数となる数値か数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中で自然数eに対する指数関数の値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is exp(1).<br>X       = 2.71828182845905<br>yes<br>| ?-X is exp(2).<br>X       = 7.38905609893065<br>yes<br>| ?-"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="267"; hash["name"]="log10/1"; hash["common"]=""; hash["format"]="log10(N)"; hash["argument"]="N:数値か数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの10を底とする対数関数の値を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is log10(100).<br>X = 2.00000000000000<br>yes<br>| ?-X is log10(0.01).<br>X = -2.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>^  /xfy<br>log/1  (2)"; azlist.push(hash);
var hash={}; hash["id"]="268"; hash["name"]="sqrt/1"; hash["common"]="ISO"; hash["format"]="sqrt(N)"; hash["argument"]="N:数値か数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの平方根を求めます。"; hash["reference"]=""; hash["sample"]="| ?-X is sqrt(1).<br>X = 1.00000000000000<br>yes<br>| ?-X is sqrt(2.0).<br>X = 1.41421356237310<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="269"; hash["name"]="floor/1"; hash["common"]="ISO"; hash["format"]="floor(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中で<br>Nを越えない最大の整数値に丸められた整数値を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is floor(1.234).<br>X = 1<br>yes<br>| ?-X is floor(-1.23).<br>X = -2<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>integer/1 (1)<br>integer/1 (2)<br>float/1  (2)<br>ceiling/1<br>round/1<br>truncate/1"; azlist.push(hash);
var hash={}; hash["id"]="270"; hash["name"]="[N]/0 (1要素の数値リスト)"; hash["common"]=""; hash["format"]="[N]"; hash["argument"]="N:数値(数式は許されない)"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中で、Nをそのまま返します。<br>この関数は主に一文字のストリングの文字コードを操作するときに使います。"; hash["reference"]=""; hash["sample"]="| ?-X is \&quot;a\&quot;.<br>X = 97<br>yes<br>| ?-X is \&quot;a\&quot;+2,name(A,[X]).<br>X = 99,<br>A = c<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="271"; hash["name"]="cputime/0"; hash["common"]=""; hash["format"]="cputime"; hash["argument"]="なし"; hash["text"]="UNIX時間を返します。協定世界時 (UTC) での1970年1月1日午前0時0分0秒の時刻からの閏秒の追加や削除を考慮しない経過秒数です。"; hash["reference"]=""; hash["sample"]="<span style='color: #FFFF00'>8クィーンの全解の時間を求めます。</span><br>| ?-[-'queen.pl'].<br>yes<br>| ?-S is cputime,q(8),T is cputime-S.<br>・<br>S       = 1374824918.94200,<br>T       = 0.473000049591064<br><br><span style='color: #FFFF00'>この例では8クィーンの全解が約0.47秒かかった事が分かります。</span>"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="272"; hash["name"]="breaklevel/0"; hash["common"]=""; hash["format"]="breaklevel"; hash["argument"]="なし"; hash["text"]="現在のブレークレベルを返します。<br>トップレベルの場合は0を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is breaklevel.<br>X = 0<br>yes<br>| ?-break.<br>yes<br>[1]<br>| ?-X is breaklevel.<br>X = 1<br>yes<br>| ?-break.<br>yes<br>[2]<br>| ?-X is breaklevel.<br>X = 2<br>yes<br>| ?-unbreak.<br>yes<br>[1]<br>| ?-unbreak.<br>yes<br>| ?-X is breaklevel.<br>X = 0<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>break/0<br>unbreak/0<br>unbreak/1"; azlist.push(hash);
var hash={}; hash["id"]="273"; hash["name"]="heapmax/0"; hash["common"]=""; hash["format"]="heapmax"; hash["argument"]="なし"; hash["text"]="メモリ内に確保されたheap領域の容量を参照します。<br>値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is heapmax.<br>X       = 2097152<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="274"; hash["name"]="heapused/0"; hash["common"]=""; hash["format"]="heapused"; hash["argument"]="なし"; hash["text"]="AZ-Prolog起動後、heap領域の使用実績量の最大値を参照します。値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is heapused.<br>X       = 1745<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="275"; hash["name"]="globalmax/0"; hash["common"]=""; hash["format"]="globalmax"; hash["argument"]="なし"; hash["text"]="メモリ内に確保されたglobal領域の容量(最大許容量)を参照します。<br>値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is globalmax.<br>X       = 2097152<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="276"; hash["name"]="globalused/0"; hash["common"]=""; hash["format"]="globalused"; hash["argument"]="なし"; hash["text"]="AZ-Prolog起動後、global領域の使用実績量の最大値を参照します。値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is globalused.<br>X       = 7<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="277"; hash["name"]="localmax/0"; hash["common"]=""; hash["format"]="localmax"; hash["argument"]="なし"; hash["text"]="メモリ内に確保されたlocal領域の容量(最大許容量)を参照します。値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is localmax.<br>X       = 1048576<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="278"; hash["name"]="localused/0"; hash["common"]=""; hash["format"]="localused"; hash["argument"]="なし"; hash["text"]="AZ-Prolog起動後、local領域の使用実績量の最大値を参照します。値は整数値で単位はセル数です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 995<br> ARITY (cell)   2048000 USED: 864<br>HEAP   (cell)   2097152 USED: 1745<br>LSTACK (cell)   1048276  MAX: 287<br>GSTACK (cell)   2097152  MAX: 3982<br>yes<br>| ?-X is localused.<br>X       = 6<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="279"; hash["name"]="trailmax/0"; hash["common"]=""; hash["format"]="削除20131211"; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="280"; hash["name"]="trailused/0"; hash["common"]=""; hash["format"]="削除20131211"; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="281"; hash["name"]="atommax/0"; hash["common"]=""; hash["format"]="atommax"; hash["argument"]="なし"; hash["text"]="メモリ内に確保されたatomの個数(許容個数)を参照します。値は整数値です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 852<br> ARITY (cell)   2048000 USED: 826<br>HEAP   (cell)   2097152 USED: 0<br>LSTACK (cell)   1048276  MAX: 5<br>GSTACK (cell)   2097152  MAX: 2<br>yes<br>| ?-X is atommax.<br>X       = 2048000<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="282"; hash["name"]="atomused/0"; hash["common"]=""; hash["format"]="atomused"; hash["argument"]="なし"; hash["text"]="AZ-Prolog起動後、atomの使用実績量の最大個数を参照します。<br>値は整数値です。<br>この値は内部状態表示述語の statistics/0 を実行したときに表示される同領域の量と同じ値です。"; hash["reference"]=""; hash["sample"]="| ?-statistics.<br><br>ATOM   (cell)   2048000 USED: 853<br> ARITY (cell)   2048000 USED: 826<br>HEAP   (cell)   2097152 USED: 0<br>LSTACK (cell)   1048276  MAX: 6<br>GSTACK (cell)   2097152  MAX: 7<br>yes<br>| ?-X is atomused.<br>X       = 853<br>yes"; hash["genre"]="13"; hash["used"]="true"; hash["incident"]="is  /xfx<br>statistics/0<br>statistics/2<br>reset_statistics/0"; azlist.push(hash);
var hash={}; hash["id"]="283"; hash["name"]="sh/0"; hash["common"]=""; hash["format"]="sh"; hash["argument"]="なし"; hash["text"]="OSコマンドプロセッサ(コマンドインタープリタ又はコマンドシェルとも呼ばれる)を子プロセスとして起動し、OSコマンドが実行できます。処理系のすべての情報は保存されていてコマンドプロセッサを終了後、処理系の処理はそのまま継続されます。<br>なお起動されるコマンドプロセッサは環境変数「COMSPEC」で指定されているものです。<br>主記憶に子プロセスを確保できるだけの余裕が無かった場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-sh.     <span style='color: #FFFF00'><== コマンドプロセッサを起動します。</span><br>C:>         <span style='color: #FFFF00'><==プロンプトが表示されます。</span><br>C:>DIR<br>・          <span style='color: #FFFF00'><== ディレクトリが出力されます。</span><br>・<br>C:>EXIT     <span style='color: #FFFF00'><== コマンドプロセッサを終了します。</span><br>| ?-        <span style='color: #FFFF00'><== Prologのプロンプトが表示されます。"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="system/1<br>getenv/2"; azlist.push(hash);
var hash={}; hash["id"]="284"; hash["name"]="system/1"; hash["common"]=""; hash["format"]="system(+A・L)"; hash["argument"]="A・L:OSコマンドをシングルクォート「'」で囲ってアトムにしたものか、又はダブルクォート「&quot;」で囲ってストリングにした項を指定する"; hash["text"]="引数で指定されたOSコマンドを実行します。<br>sh/0 を実行した時の様にOSのコマンド待ちにはならず、引数で指定されたOSコマンドを実行した後は自動的にPrologに戻ります。"; hash["reference"]=""; hash["sample"]="| ?-system(&quot;dir /w&quot;).<br>・<br>・ <span style='color: #FFFF00'>ディレクトリを表示します。</span><br>・<br>| ?-"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="sh/0"; azlist.push(hash);
var hash={}; hash["id"]="285"; hash["name"]="getenv/2"; hash["common"]=""; hash["format"]="getenv(+A1,-A2)"; hash["argument"]="A1:環境変数名を指定する<br>A2:環境変数の値がユニファイされる"; hash["text"]="環境変数名を指定して、その値を取得します。"; hash["reference"]=""; hash["sample"]="| ?-getenv(&#39;COMSPEC&#39;,X).<br>X       = C:\\Windows\\system32\\cmd.exe<br>yes"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="286"; hash["name"]="winLoadLibrary/2"; hash["common"]="Win"; hash["format"]="winLoadLibrary(+A,-S)"; hash["argument"]="A:ロードするDLL名<br>S:ロードしたDLLのハンドル"; hash["text"]="「A」で指定されるDLLをロードして、「S」にハンドルを返します。<br>得られたハンドルはwinGetProcAddress/3で使用します。<br>指定したDLLのロードに失敗した場合はfailします。"; hash["reference"]=""; hash["sample"]="Windows API Call述語の実行例を参照して下さい。"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="287"; hash["name"]="winGetProcAddress/3"; hash["common"]="Win"; hash["format"]="winGetProcAddress(+S,+A1,-A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S</td>      <td nowrap>:winLoadLibrary/2で取得したロードされているDLLのハンドル</td>    </tr>    <tr>      <td align='left' nowrap>A1</td>      <td nowrap>:DLL 内の関数名</td>    </tr>    <tr>      <td align='left' nowrap>A2</td>      <td nowrap>:A1で指定した関数のアドレス</td>    </tr>  </tbody></table>"; hash["text"]="「S」(winLoadLibrary/2で取得した物)に対応するDLLから「A1」で指定する関数を探し、そのアドレスを返します。<br>得られたアドレスは winCallApi/7 で使用します。<br>指定した関数がライブラリ内に存在しない場合はfailします。<br><br>※win32のAPIの多くはWindows NTでのunicode対応のため、<br>ascii版API(関数名の末尾に'A'を追加)とunicode版API<br>(同じく'W'を追加)が対になって存在する(e.g. MoveFileA(ファイル名をascii文字列で指定)とMoveFileW(ファイル名をunicode文字列で指定)など。)<br>この種の関数のアドレスを取得するには末尾に'A'または'W'を追加した関数名を指定しなければなりません。<br>また、Windows95で実行するときにはascii版の関数のみが存在しますが、この場合でも関数名の末尾に'A'を追加した<br>名前を指定しなければなりません。<br>Windows NTとWindows95の両方に存在するAPIのみを使用するアプリケーションは両方のOSで実行することができます。"; hash["reference"]="Windows API Call述語の実行例を参照して下さい。"; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadLibrary/2<br>winCallApi/7"; azlist.push(hash);
var hash={}; hash["id"]="288"; hash["name"]="winAllocApiArg/2"; hash["common"]="Win"; hash["format"]="winAllocApiArg(+I1,-I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>+I1:</td>      <td nowrap>確保するメモリ領域のバイト数</td>    </tr>    <tr>      <td align='left' nowrap>-I2:</td>      <td nowrap>割り当てられたメモリ領域のアドレス</td>    </tr>  </tbody></table>"; hash["text"]="「I1」(バイト数)で指定されたメモリ領域を割り当ててそのアドレスを返します。<br>構造体へのポインタを引数とする関数を呼び出すときなどに使用します。"; hash["reference"]="Windows API Call述語の実行例を参照して下さい。"; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winFreeApiArg/1"; azlist.push(hash);
var hash={}; hash["id"]="289"; hash["name"]="winFreeApiArg/1"; hash["common"]="Win"; hash["format"]="winFreeApiArg(+I)"; hash["argument"]="I:winAllocApiArg/2で取得したメモリアドレス"; hash["text"]="winAllocApiArg/2で取得したメモリを開放します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winAllocApiArg/2"; azlist.push(hash);
var hash={}; hash["id"]="290"; hash["name"]="winStoreApiArgDWORD/3"; hash["common"]="Win"; hash["format"]="winStoreApiArgDWORD(+I1,+I2,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>I1:</td>      <td nowrap>配列の先頭アドレス</td>    </tr>    <tr>      <td align='left' nowrap>I2:</td>      <td nowrap>「T」を格納する配列要素の番号</td>    </tr>    <tr>      <td align='left' nowrap>T:</td>      <td nowrap>格納する値</td>    </tr>  </tbody></table>"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素に「T」を格納します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="291"; hash["name"]="winStoreApiArgWORD/3"; hash["common"]="Win"; hash["format"]="winStoreApiArgDWORD(+I1,+I2,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>I1:</td>      <td nowrap>配列の先頭アドレス</td>    </tr>    <tr>      <td align='left' nowrap>I2:</td>      <td nowrap>「T」を格納する配列要素の番号</td>    </tr>    <tr>      <td align='left' nowrap>T:</td>      <td nowrap>格納する値</td>    </tr>  </tbody></table>"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素に「T」を格納します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="292"; hash["name"]="winStoreApiArgBYTE/3"; hash["common"]="Win"; hash["format"]="winStoreApiArgDWORDBYTE(+I1,+I2,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>I1:</td>      <td nowrap>配列の先頭アドレス</td>    </tr>    <tr>      <td align='left' nowrap>I2:</td>      <td nowrap>「T」を格納する配列要素の番号</td>    </tr>    <tr>      <td align='left' nowrap>T:</td>      <td nowrap>格納する値</td>    </tr>  </tbody></table>"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素に「T」を格納します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="293"; hash["name"]="winStoreApiArgFLOAT/3"; hash["common"]="Win"; hash["format"]="winStoreApiArgDWORDFLOAT(+I1,+I2,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>I1:</td>      <td nowrap>配列の先頭アドレス</td>    </tr>    <tr>      <td align='left' nowrap>I2:</td>      <td nowrap>「T」を格納する配列要素の番号</td>    </tr>    <tr>      <td align='left' nowrap>T:</td>      <td nowrap>格納する値</td>    </tr>  </tbody></table>"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、<br>その「I2」番目の要素に「T」を格納します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="294"; hash["name"]="winLoadApiArgDWORD/3"; hash["common"]="Win"; hash["format"]="winLoadApiArgDWORD(+I1,+I2,-T)"; hash["argument"]="I1:配列の先頭アドレス<br>I2:「T」に返す配列要素の番号<br>T  :取り出すする値"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、<br>その「I2」番目の要素を「T」に取得します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="295"; hash["name"]="winLoadApiArgWORD/3"; hash["common"]="Win"; hash["format"]="winLoadApiArgDWORDWORD(+I1,+I2,-T)"; hash["argument"]="I1:配列の先頭アドレス<br>I2:「T」に返す配列要素の番号<br>T  :取り出しする値"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素を「T」に取得します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="296"; hash["name"]="winLoadApiArgBYTE/3"; hash["common"]="Win"; hash["format"]="winLoadApiArgDWORDBYTE(+I1,+I2,-T)"; hash["argument"]="I1:配列の先頭アドレス<br>I2:「T」に返す配列要素の番号<br>T  :取り出すする値"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素を「T」に取得します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="297"; hash["name"]="winLoadApiArgFLOAT/3"; hash["common"]="Win"; hash["format"]="winLoadApiArgDWORDFLOAT(+I1,+I2,-T)"; hash["argument"]="I1:配列の先頭アドレス<br>I2:「T」に返す配列要素の番号<br>T  :取り出すする値"; hash["text"]="I1(主にwinAllocApiArg/2で取得したもの)を、{DWORD|WORD|BYTE|FLOAT}(FLOATは8バイトの浮動小数点数)の配列と見立て、その「I2」番目の要素を「T」に取得します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winLoadApiArg/3"; azlist.push(hash);
var hash={}; hash["id"]="298"; hash["name"]="winCallApi/7"; hash["common"]="Win"; hash["format"]="winCallApi(+I1,+L,-I2,-I3,Dummy1,Dummy2,Dummy3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>I1</td>      <td nowrap>:winGetProcAddress/3で取得したDLL関数のアドレス</td>    </tr>    <tr>      <td align='left' nowrap>L</td>      <td nowrap>:呼び出したDLL関数へ渡す引数のリスト</td>    </tr>    <tr>      <td align='left' nowrap>I2</td>      <td nowrap>:呼び出したDLL関数の実行状態</td>    </tr>    <tr>      <td align='left' nowrap>I3</td>      <td nowrap>:呼び出したDLL関数の戻り値</td>    </tr>    <tr>      <td align='left' nowrap>Dummy1~3</td>      <td nowrap>:メッセージ処理のための出力引数 </td>    </tr>  </tbody></table>"; hash["text"]="winGetProcAddress/3で取得した関数アドレス「I1」が指す関数を呼び出します。<br>「L」には、関数への引数をリスト形式にして渡します。<br>リストの要素は整数値(winAllocApiArg/2で取得したポインタも含む)、またはアトム(アトムの名前(asciz文字列)を指すポインタとして扱われる)とします。<br>「I2」の値は、呼び出した関数が普通にリターンした場合は 0 となります。<br>Windowsに制御を渡す関数(GetMessage等)を呼び出した場合は、「I2」は 0 でない値となる場合がありますが、AZ-PrologのOLEオートメーションサポートシステムが行っているメッセージ処理との整合がとれなくなるため、そのような関数はユーザーアプリケーションからは使用できません。<br>関数の戻り値は「I3」に得られます。<br>「I3」は、「I2」が 0 の場合に限り有効な値となりますので、必ず「I2」をチェックする必要があります。<br>Dummy1,Dummy2,Dummy3はメッセージ処理のための出力引数であるが、「I2」が0 となる場合は無視されます。<br><br>※AZ-PrologからのDLL関数の呼び出しでは、引数の型や個数のチェックは行われません。<br>不正な引数を与えたり引数の個数が間違っていたりした場合、AZ-Prolog自体が異常終了する等の症状が起こりうるので十分注意する必要があります。"; hash["reference"]=""; hash["sample"]="Windows API Call述語の実行例を参照して下さい。"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="winGetProcAddress/3"; azlist.push(hash);
var hash={}; hash["id"]="299"; hash["name"]="winGetWinMainArgs/2"; hash["common"]="Win"; hash["format"]="winGetWinMainArgs(I1-,I2-)"; hash["argument"]="I1:WinMain関数に与えられた引数のhInst<br>I2:WinMain関数に与えられた引数hPrevInst"; hash["text"]="WinMain関数に与えられた引数hInst,hPrevInstを、「I1」「I2」に取得する。<br>これらは、DLL内の関数にWinMain関数に与えられた引数hInst(第1引数)、hPrevInst(第2引数)を必要とする場合がある為、それらを使用します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="300"; hash["name"]="win*"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="301"; hash["name"]="automation/3"; hash["common"]="Win"; hash["format"]="automation(+A1,+A2,+A3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A1</td>      <td>:プログラム固有のインターフェースIDの文字列表現(AZ-Prologパッケージに付属の「NEWGUID.EXE」で生成される出力と同じ形式)</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td align='left' valign='top'>:トップレベルオブジェクトの公開名</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:実行ファイル名、及びサーバ起動時に「/Automation -Embedded」の前に必要なコマンドライン引数<br>        (実行ファイル名は、ドライブ名を含むフルパスでなければなりません)</td>    </tr>  </tbody></table>"; hash["text"]="OLEオートメーションサーバを実行します。<br>実際の動作は、コマンドライン引数によって以下のようになります。<br><br>(1)第一引数が「/Automation」の場合。<br>サーバとしての動作を行います。<br>通常はクライアントのオブジェクト生成要求に従ってOLEによってプログラムが起動された場合がこれにあたります。<br>クライアントがオブジェクトを破棄することによって述語は成功終了します。<br><br>(2)第一引数が「/Setup」またはここで述べる他のいずれにも該当しない場合。<br>プログラムの登録を行います。<br>クライアントが、登録名「A1」のオブジェクトの生成を要求すると次のコマンドラインでサーバが起動されるようになります。<br>&quot;<EXEname> /Automation -Embedded <Args>&quot;<br>ここで「<EXEname>」は述語の引数、「<Args>」は登録時のコマンドライン引数から第一引数の「/Setup」を除いたもの。<br>登録終了時、第一引数が「/Setup」でない場合、登録完了を知らせるメッセージが表示されます。<br><br>(3)第一引数が「/Uninstall」または「/SilentUninstall」の場合。<br>登録の削除を行います。<br>削除終了時、第一引数が「/Uninstall」の場合、削除完了を知らせるメッセージが表示されます。<br>引数は、すべてアトムで指定します。"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>下記のコードは、実際に「AZSERV.EXE」で使われているコードです。</span><br>getwdir(WDIR) :- get_parameter(Param),getwdir(Param,WDIR).<br>getwdir([Arg|L],WDIR) :- name(Arg,[0'2f|_]),!,getwdir(L,WDIR).<br>getwdir([WDIR|_],WDIR).<br>top_level :-<br>getwdir(WDIR),<br>atom_append(WDIR,'azserv.exe -p',Shell),<br>automation(<br>'{040235B0-D16C-11CE-894C-0000C0C0DFDF}',<br>'Prolog.Toplevel',<br>Shell)."; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="302"; hash["name"]="ole_initialize/0"; hash["common"]="Win"; hash["format"]="ole_initizlize"; hash["argument"]="なし"; hash["text"]="OLEオートメーションシステムの初期化を行います。<br>OLEオートメーションサーバとして動作しているアプリケーション以外ではOLEオートメーション関連の他の述語に先立ってこの述語をただ一度だけ実行しなければなりません。<br>OLEオートメーションサーバとして動作するアプリケーションではこの述語を実行してはなりませんが、その場合OLEオートメーション関連の他の述語はautomation/3から呼び出される形で、即ちクライアントからの述語呼出し内で実行するようになっていなければなりません。"; hash["reference"]="OLE・オートメーション関連述語の実行例"; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="303"; hash["name"]="ole_uninitialize/0"; hash["common"]="Win"; hash["format"]="ole_uninitialize"; hash["argument"]="なし"; hash["text"]="ole_initialize/0を実行したアプリケーションは終了前にこの述語を実行しなければなりません。<br>また、この述語を実行した後はOLEオートメーション関連の他の述語を実行してはなりません。"; hash["reference"]="OLE・オートメーション関連述語の実行例"; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="304"; hash["name"]="ole_create_object/2"; hash["common"]="Win"; hash["format"]="ole_create_object(+A,-S)"; hash["argument"]="A:オートメーションオブジェクトの名前<br>S:取得するオブジェクト"; hash["text"]="引数「A」で指定された名前を持つオートメーションオブジェクトを「S」に取得します。<br>ここで取得したオブジェクトは、引数でオブジェクトを指定する必要のあるOLE・オートメーション関連の述語で使用します。"; hash["reference"]="OLE・オートメーション関連述語の実行例"; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="305"; hash["name"]="ole_release_object/1"; hash["common"]="Win"; hash["format"]="ole_release_object(+S)"; hash["argument"]="S:使用終了するオブジェクト"; hash["text"]="オブジェクト「S」の使用を終了させます。"; hash["reference"]="OLE・オートメーション関連述語の実行例"; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="306"; hash["name"]="ole_call_method/5"; hash["common"]="Win"; hash["format"]="ole_call_method(+S,+A1,+L,+A2,-T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>「ole_create_object/2」で取得済みのオブジェクト</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:呼び出すメソッドの名前</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>:呼び出すメソッドに渡す引数のリスト</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:「T」に取得する戻り値の型</td>    </tr>    <tr>      <td align='left' valign='top'>T</td>      <td> :呼び出したメソッドの戻り値</td>    </tr>  </tbody></table>"; hash["text"]="オブジェクト「S」のメソッド「A1」を呼び出します。<br>引数は「L」にリストで指定します。「L」の要素は整数値、浮動小数点数、アトム、文字列(文字コード(整数)からなるリスト)、オブジェクト(ole_create_object/2で取得したもの、あるいはメソッドの戻り値やプロパティとして得られたもの)のいずれかとします。<br>「A2」で戻り値の型を指定します。これは'void'(戻り値なし)、'integer'(整数値)、'float'(浮動小数点数)、'atom'(文字列をatomに変換)、'string'(文字列(リスト))、'object'(IDispatchオブジェクト(ole_create_object/2で得られるものと同様のオブジェクト))のいずれかを指定します。戻り値は「T」に得られます。"; hash["reference"]="OLE・オートメーション関連述語の実行例"; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="307"; hash["name"]="ole_get_property/5"; hash["common"]="Win"; hash["format"]="ole_get_property(+S,+A1,+L,+A2,-T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>「ole_create_object/2」で取得済みのオブジェクト</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:取得するプロパティ</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>:取得するプロパティのインデックス値</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:「T」に取得する戻り値の型</td>    </tr>    <tr>      <td align='left' valign='top'>T</td>      <td>:取得したプロパティの値</td>    </tr>  </tbody></table>"; hash["text"]="オブジェクト「S」のプロパティ「A1」の値を取得します。<br>「L」はプロパティのインデックス値で「ole_call_method/5」の第3引数「L」と同様に指定します(対象となるプロパティが配列データでなければ空リストを指定すればよい)。<br>「A2」はプロパティの型を「ole_call_method/5」の第4引数「A2」と同様に指定します。<br>値は「T」に得られます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="308"; hash["name"]="ole_put_property/4"; hash["common"]="Win"; hash["format"]="ole_put_property(Object+,Property+,Index+,Val+)　、ole_put_property(+S,+A,+L,+T)"; hash["argument"]="S  :「ole_create_object/2」で取得済みのオブジェクト<br>A  :値を設定するプロパティ<br>L  :設定するプロパティのインデックス値<br>T  :プロパティに設定する値"; hash["text"]="オブジェクト「S」のプロパティ「A」に値を設定します。<br>「L」はプロパティのインデックス値で「ole_call_method/5」の第3引数「L」と同様に指定します(対象となるプロパティが配列データでなければ空リストを指定すればよい)。<br>書き込む値は「T」に指定します(形式は「ole_call_method/5」の第3引数「L」の要素と同じ)。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="26"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="309"; hash["name"]="ole_*"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="310"; hash["name"]="(Editor)"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="311"; hash["name"]="e_create/1"; hash["common"]=""; hash["format"]="e_create(+N)"; hash["argument"]="N:確保したい文字数を指定する(ただし、1文字は2バイトとする)"; hash["text"]="Nで指定された大きさのバッファの領域をメモリ上に確保し､現在のバッファ番号を割り付けます｡<br>したがって、任意のバッファ番号のバッファを確保したい場合はあらかじめ e_edit/2で現在のバッファ番号を変更してからこの述語で確保します。<br>なお、現在のバッファ番号のバッファが既に確保されてる場合、又は、メモリ容量が不足した場合には何もせずに失敗します。<br>Nが「バイト数」ではなく「文字数｣であることに注意して下さい。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="312"; hash["name"]="e_edit/0"; hash["common"]=""; hash["format"]="e_edit"; hash["argument"]="なし"; hash["text"]="現在のバッファ番号のバッファの領域が確保されている場合に成功し、確保されていない場合に失敗します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]="edit/1<br>editall/0"; azlist.push(hash);
var hash={}; hash["id"]="313"; hash["name"]="e_init/0"; hash["common"]=""; hash["format"]="e_init"; hash["argument"]="なし"; hash["text"]="キーボードからの[中断キー(CTRL-S と CTRL-Q)]による割込みが禁止され、CTRL-Gによる割込みが許可されます｡<br>AzEditに入った時には先ずこの述語(又はe_init/1 又は e_init/2)を呼出す(実行する)必要があります｡"; hash["reference"]="e_init/1,e_init/2"; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="314"; hash["name"]="e_init/1"; hash["common"]=""; hash["format"]="e_init(+N)"; hash["argument"]="N:AzEdit の使用する行数を指定する範囲は 1~画面の行数-2 とする<br>(画面の行数とは d_screen/2 の第2引数にユニファイされる値)"; hash["text"]="e_init/0 の機能に加えてNで指定された行数を内蔵エディタで使用できるように、使用する画面の部分をクリアし、その終端行に｢AZ Prolog Editer (Version 1.0) -*｣と表示します｡(* は現在のバッファ番号が表示されます)"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="315"; hash["name"]="e_init/2"; hash["common"]=""; hash["format"]="e_init(+N,+A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>N</td>      <td nowrap>:AzEdit の使用する行数を指定する。範囲は 1~画面の行数-2 とする(画面の行数とは d_screen/2 の第2引数にユニファイされる値)。</td>    </tr>    <tr>      <td align='left' nowrap>A</td>      <td nowrap>:終端行に表示する文字列を指定する</td>    </tr>  </tbody></table>"; hash["text"]="e_init/1 の機能に加えて､その終端行に｢AZ Prolog Editer (Version 1.0)｣の代りにAで指定された文字列(アトム)を表示します(Aの文字列に続いて現在のバッファ番号も表示されます)。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="316"; hash["name"]="e_bell/2"; hash["common"]=""; hash["format"]="e_bell(-A1,+A2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td nowrap>:変更前の状態が「on」「off」のいずれかでユニファイされる</td>    </tr>    <tr>      <td align='left' nowrap>A2</td>      <td nowrap>:変更後の状態を「on」「off」のいずれかで指定する<br>「on」「off」以外を指定するとエラー(Illegal argument supplied)となる</td>    </tr>  </tbody></table>"; hash["text"]="キーボードからの[CTRL-G]割込みをかけた場合に「{^G}」マークのある述語がエラーを発生するどうかを変更・設定する述語です。<br>まず、A1に[CTRL-G]を受け付けるか、受け付けないかによって「on」と「off」でユニファイし、次に、A2の「on」か「off」かによってそれぞれ[CTRL-G]を受け付けるか、受け付けないかを設定します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="27"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="317"; hash["name"]="s_randomize/2"; hash["common"]=""; hash["format"]="s_randomize(?I1,?I2)"; hash["argument"]="I1、I2:<br>ともに新しい乱数の種(seed:初期値)を指定する(16ビット整数)<br>また、未代入の変数の場合は現在の値をユニファイする。"; hash["text"]="s_random/2が発生する擬似乱数の系列を変更します。<br>擬似乱数の系列を変更することにより、より真の乱数に近づけることができます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="318"; hash["name"]="system/2"; hash["common"]=""; hash["format"]="system(+A・L,?I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>+A・L</td>      <td>:OSコマンドをシングルクオート「'」で囲ってアトムにしたものか、ダブルクオート「&quot;」<br>で囲ってストリングにした項を指定する。</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:アトム番号を整数で指定、又はユニファイされるこれら以外を指定した場合はエラー(Illegal argument supplied)となる</td>    </tr>  </tbody></table>"; hash["text"]="system/1と同じ機能ですが、実行のReturn値を取得することができます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="system/1"; azlist.push(hash);
var hash={}; hash["id"]="319"; hash["name"]="char_conversion/2"; hash["common"]="ISO"; hash["format"]="char_conversion(+T,+T2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>T1</td>      <td>:変換対象キャラクタ。アトムか文字コードの整数。複数文字のアトムの場合は、先頭文字が対象となる。この文字が読み込まれたときにT2と置き換えられる。</td>    </tr>    <tr>      <td align='left' valign='top'>T2</td>      <td>:変換するキャラクタ。アトムか文字コードの整数。複数文字のアトムの場合は、先頭文字が対象となる。</td>    </tr>  </tbody></table>"; hash["text"]="トップレベル、read,consultなどで読み込まれた文字のなかでT1の文字が、T2に変換される。<br>ファイル、入力中でこの変換を生かしたくない場合は、[']で囲う。"; hash["reference"]=""; hash["sample"]="| ?-char_conversion('あ',a).<br>yes<br>| ?-read(X).<br>|: あ.<br>X       = a<br>yes<br>| ?-char_conversion(104,72).        % &quot;hH&quot;=[104,72]<br>yes<br>| ?-halt.<br>Illegal Goal     ---- Backtrace<br>Halt_2 ?-<br>| ?-'halt'.<br>C:\><br><br>%%%%%%%%%%<br><br>|char_data(&quot;！”＃＄％＆’（）＝～｜－＾\［「＋＊」］＜＞？，、．／＿；  &quot;,<br>          &quot;!&quot;&quot;#$%&'()=~|-^\[[+*]]<>?,,./_; &quot;,<br>          &quot;ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ&quot;,<br>          &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;).<br>|all_char_conv:- char_data(A,B,C,D),all_char_conv(A,B),all_char_conv(C,D).<br>|all_char_conv([],[]):-!.<br>|all_char_conv([A|L],[B|R]):- char_conversion(A,B),all_char_conv(L,R).<br><br>?-all_char_conv.<br>yes<br><br>% 全角文字での入力、問い合わせも可能となる。<br>?-current_pred(X,Y).<br>X = !<br>Y = 0；<br>  ・<br>  ・"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="current_char_conv/2"; azlist.push(hash);
var hash={}; hash["id"]="320"; hash["name"]="current_char_conv/2"; hash["common"]=""; hash["format"]="current_char_conv(?T,?T2), current_char_conversion(?T1,?T2)"; hash["argument"]="T1:現在設定されている変換対象キャラクタ。変数または、調べたいアトムか文字コードの整数。<br>T2:変換先のキャラクタ。変数または、調べたいアトムか文字コードの整数。"; hash["text"]="char_conversion/2で設定された内容を取得します。<br>ISOのcurrent_char_conversion/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-char_conversion(&#39;A&#39;,a).<br>yes<br>| ?-char_conversion(&#39;B&#39;,b).<br>yes<br>| ?-read(X).<br>|: ABC.<br>X = abC<br>yes<br>| ?-current_char_conv(X,Y).<br>X       = A,<br>Y       = a;<br>X       = B,<br>Y       = b;<br>no<br>%%%%%%%%文字コード変換を元に戻す%%%%%%%%%%<br>| reset_char_conv:- current_char_conv(X,_),char_conversion(X,X),fail.<br>reset_char_conv.<br>| ?-reset_char_conv.<br>yes<br>| ?-current_char_conv(X,Y).<br>no"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="char_conversion/2"; azlist.push(hash);
var hash={}; hash["id"]="321"; hash["name"]="compound/1"; hash["common"]="ISO"; hash["format"]="compound(+T)"; hash["argument"]="T:調べたい項"; hash["text"]="Tが複合項(リスト含む)の場合のみ成功します。それ以外は失敗します。<br>Tは入力引数ですが未代入の変数でもエラーにはなりません、勿論この場合複合項ではないので失敗します。"; hash["reference"]=""; hash["sample"]="| ?-compound(ab(e,c)).<br>yes<br>| ?-compound(123).<br>no<br>| ?-compound(1.23).<br>no<br>| ?-compound([a,b,c]).<br>yes<br>| ?-compound(X).<br>no"; hash["genre"]="18"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="322"; hash["name"]="get_builtin/3"; hash["common"]=""; hash["format"]="get_builtin(?A ,?I1,?I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A</td>      <td>:組込み述語名</td>    </tr>    <tr>      <td align='left' valign='top'>I1</td>      <td>:アリティ</td>    </tr>    <tr>      <td align='left' valign='top'>I2</td>      <td>:組込み述語番号</td>    </tr>  </tbody></table>"; hash["text"]="組込み述語の名前、アリティ、番号をとりだします。"; hash["reference"]=""; hash["sample"]="| ?- get_builtin(X,Y,Z).<br>X = halt,<br>Y = 0,<br>Z = 0<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="323"; hash["name"]="rm_builtin/2"; hash["common"]=""; hash["format"]="rm_builtin(+A ,+I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A</td>      <td>:組込み述語名</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:アリティ</td>    </tr>  </tbody></table>"; hash["text"]="インタプリタから該当組込み述語を削除します。"; hash["reference"]=""; hash["sample"]="| ?- rm_builtin(write,1).<br>yes<br>| ?- write(test).<br>no"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="324"; hash["name"]="set_write_list_length/2"; hash["common"]=""; hash["format"]="set_write_list_length(?I1 ,+I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>?I1:</td>      <td nowrap>writeでの現在のリスト表示長</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>+I:</td>      <td nowrap>writeでの新しいリスト表示長</td>    </tr>  </tbody></table>"; hash["text"]="write 系列の述語で、リストの出力長を変更します。リストそのものが変更されるわけではありません。<br>トレース時などで長大なリストが出力されるようなとき見やすくするときに利用します。"; hash["reference"]=""; hash["sample"]="| ?-write([1,2,3,4,5,6,7,8,9]).<br>[1,2,3,4,5,6,7,8,9]<br>yes<br>| ?-set_write_list_length(_,3).<br>_0      = 3000<br>yes<br>| ?-write([1,2,3,4,5,6,7,8,9]).<br>[1,2,3|~]<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="set_write_depth/2"; azlist.push(hash);
var hash={}; hash["id"]="325"; hash["name"]="set_exit_timer/1"; hash["common"]=""; hash["format"]="set_exit_timer(+I)"; hash["argument"]="+I   ：　ミリセコンド整数"; hash["text"]="指定ミリ秒が経過後、システムを強制的に終了させます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="24"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="326"; hash["name"]="array_register/3"; hash["common"]=""; hash["format"]="array_register(+N1,-AR,+AR)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>N1</td>      <td>:レジスタ番号を0~31の範囲内の値の数式で指定する</td>    </tr>    <tr>      <td align='left' valign='top'>-AR</td>      <td>:array オブジェクト:変更前の値がユニファイされる</td>    </tr>    <tr>      <td align='left' valign='top'>+AR</td>      <td>:array オブジェクト:変更後の値を指定する</td>    </tr>  </tbody></table>"; hash["text"]="N1で指定された番号のarrayレジスタの値を取得・変更します。"; hash["reference"]=""; hash["sample"]="| ?-array_register(1,X,X).<br>X       = 0<br>yes<br>| ?-create_array(10,L),array_register(1,_,L).<br>L       = array_d74608,<br>_1      = 0<br>yes<br>| ?-array_register(1,X,X).<br>X       = array_d74608<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="327"; hash["name"]="create_array/3"; hash["common"]=""; hash["format"]="create_array(+I1,+I2,-AR)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>I1</td>      <td nowrap>:整数array のバイト数</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>I2</td>      <td nowrap>:array のサイズ</td>    </tr>    <tr>      <td align='left' valign='top' nowrap>AR</td>      <td nowrap>:array オブジェクト</td>    </tr>  </tbody></table>"; hash["text"]="I1 で指定されたバイト数の整数arrayエリアをI 2のサイズ確保し ARにユニファイします。<br>確保したエリアの初期値は全て 0となる。<br>セットできる要素は整数のみとなり、指定バイト数を超える値は下位バイト数のみとなります。"; hash["reference"]=""; hash["sample"]="| ?- create_array(2,100,Array).<br>Array = array_57081856<br>yes"; hash["genre"]="28"; hash["used"]="true"; hash["incident"]="set_array/3<br>get_array/3"; azlist.push(hash);
var hash={}; hash["id"]="328"; hash["name"]="b_load/1"; hash["common"]=""; hash["format"]="b_load(+A・L)"; hash["argument"]="+A・L : バイトコードコンパイル結果ファイル名、またはその並びのリスト"; hash["text"]="コンパイル済みのファイルをインタプリタへロードします。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="1"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="329"; hash["name"]="compile_all/0"; hash["common"]=""; hash["format"]="compile_all"; hash["argument"]="なし"; hash["text"]="インタプリタヒープ上にあるすべてのプログラムをコンパイルし、インタプリタへロードします。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="1"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="330"; hash["name"]="compile/1"; hash["common"]=""; hash["format"]="compile(+A)"; hash["argument"]="A:コンパイルしてからロードするファイル名"; hash["text"]="指定プログラムをコンパイル後、インタプリタへロードします。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="1"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="400"; hash["name"]="integer/1 (2)"; hash["common"]=""; hash["format"]="integer(N)"; hash["argument"]="N:数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNが実数の場合は整数値に変換した値を求めます。<br>符号に関係なく小数点以下を切り捨て整数化した値を求めます。<br>型チェックのための組込述語の integer/1 と混同しないように注意して下さい。"; hash["reference"]="is  /xfx,float/1, floor/1"; hash["sample"]="?-X is integer(1.234).<br>X = 1<br>yes<br>?-X is integer(2.89).<br>X = 2<br>yes<br>?-X is integer(-1.23).<br>X = -1<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="integer/1 (1)"; azlist.push(hash);
var hash={}; hash["id"]="401"; hash["name"]="float/1  (2)"; hash["common"]=""; hash["format"]="float(N)"; hash["argument"]="N:数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNが整数の場合は実数値に変換した値を求めます。<br>Nが実数の場合はそのまま返します。<br>型チェックのための組込述語 float/1 と混同しないように注意して下さい。"; hash["reference"]=""; hash["sample"]="| ?-X is float(1).<br>X       = 1.00000000000000<br>yes<br>| ?-X is float(1.23).<br>X       = 1.23000000000000"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>integer/1 (1)<br>integer/1 (2)<br>floor/1<br>float/1  (1)"; azlist.push(hash);
var hash={}; hash["id"]="402"; hash["name"]="log/1  (2)"; hash["common"]="ISO"; hash["format"]="log(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの自然対数の底eを底とする対数の値を求めます。<br>Nが0以下の数値でもエラーを返しません。"; hash["reference"]=""; hash["sample"]="| ?-X is log(2.71828182845905).<br>X = 1.00000000000000.<br>yes<br>| ?-X is log(1.0).<br>X = 0.000000000000000<br>yes<br>| ?-X is log(-1.0).<br>X = -1.#IND0000000 (意味のない数値)<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>exp/1<br>log10/1"; azlist.push(hash);
var hash={}; hash["id"]="403"; hash["name"]="¥=  /xfx"; hash["common"]="ISO"; hash["format"]=""; hash["argument"]=""; hash["text"]="T1とT2とが異なる項のときに成功し、それ以外は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+2 \= 1+2.<br>no<br>| ?-1+2 \= 3.<br>yes<br>| ?-1+2 \= 2+1.<br>yes<br>| ?-&quot;a&quot; \= [97].<br>no"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="¥==  /xfx<br>"; azlist.push(hash);
var hash={}; hash["id"]="404"; hash["name"]="//  /yfx"; hash["common"]="ISO"; hash["format"]="I1 // I2"; hash["argument"]="I1:被除数。整数値か整数値を持つ数式。<br>I2:除数。0以外の整数値か整数値を持つ数式。"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中で除算演算を行います。<br>I1とI2を割った値を求めます。割り切れない場合、小数点以下を切り捨てた整数値を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is 20 // 3.<br>X = 6<br>yes<br>| ?-X is 6 // 2.<br>X = 3<br>yes<br>| ?-X is 5.0 // 2.5.<br>UNKNOWN ERROR     ---- Backtrace<br>is(X_12,//(5.00000000000000,2.50000000000000)) ?-<br>| ?-X is 1 // 0.<br>Division by 0     ---- Backtrace<br>is(X_8,//(1,0)) ?-"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>/  /yfx<br>"; azlist.push(hash);
var hash={}; hash["id"]="405"; hash["name"]="once/1"; hash["common"]="ISO"; hash["format"]="once(+T)"; hash["argument"]="T: 項"; hash["text"]="1回だけ成功する述語です。<br>つまり、ある述語に別の可能性があっても実行を試みません。"; hash["reference"]=""; hash["sample"]="| ?- listing.<br>ww :- write(a),nl.<br>ww :- write(b),nl.<br><br>| ?- once(ww),fail.<br>a<br>no<br><br>| ?- once(ww).<br>a<br>yes"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="fail/0<br>repeat/1"; azlist.push(hash);
var hash={}; hash["id"]="406"; hash["name"]="retractall/1"; hash["common"]=""; hash["format"]="retractall(+C)"; hash["argument"]="C:削除する節の頭部とユニファイ可能な項"; hash["text"]="ヒープ領域中の定義節の中からCとユニファイ可能な節をヒープ領域の先頭からから探し、あればユニファイが試みられ、ユニファイ可能な述語はすべて削除します。"; hash["reference"]="「(操)5.11.2定義述語(システム述語とユーザ述語)」<br>「(操)9.5コンパイルコードとインタープリタコードの動作上の違い」<br>"; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes<br>| ?-retractall(a(X)).<br>X = X<br>yes<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="abolish/2<br>retract/1<br>retract/3<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="407"; hash["name"]="pi/0"; hash["common"]=""; hash["format"]="pi"; hash["argument"]="なし"; hash["text"]="円周率を実数値で返します。"; hash["reference"]=""; hash["sample"]="| ?-X is pi.<br>X = 3.14159265358979<br>yes<br>| ?-X is pi, Y is sin(0.5*pi).<br>X = 3.14159265358979,<br>Y = 1.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="408"; hash["name"]="random/0"; hash["common"]=""; hash["format"]="random"; hash["argument"]="なし"; hash["text"]="0より大きく1未満の乱数を実数値で返します。<br>端点は含みません。<br>最初に random_seed/1 を実行し、初期化する必要があります。<br>Mersenne Twisterアルゴリズムに基づいています。"; hash["reference"]=""; hash["sample"]="| ?-random_seed(179).<br>yes<br>| ?-X is random.<br>X = 0.871352455663157<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>random_seed/1"; azlist.push(hash);
var hash={}; hash["id"]="409"; hash["name"]="random_seed/1"; hash["common"]=""; hash["format"]="random_seed(+I)"; hash["argument"]="I : 正の整数値(乱数のシード)"; hash["text"]="random/0 を使用するにあたり、乱数のシードを与え、初期化を行います。<br>異なるシードで異なる乱数列を発生します。"; hash["reference"]=""; hash["sample"]="| ?-random_seed(179).<br>yes<br>| ?-X is random.<br>X = 0.871352455663157<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>random/0"; azlist.push(hash);
var hash={}; hash["id"]="410"; hash["name"]="gcd/2"; hash["common"]=""; hash["format"]="gcd(+I1,+I2)"; hash["argument"]="I1, I2: 整数値か整数値を持つ数式"; hash["text"]="I1とI2との最大公約数(Greatest Common Divisor)を求めます。<br>整数以外の値のとき、Type error: integer expectedとなります。"; hash["reference"]=""; hash["sample"]="| ?-X is gcd(24,18).<br>X = 6<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="411"; hash["name"]="abs/1"; hash["common"]="ISO"; hash["format"]="abs(+N)"; hash["argument"]="N : 数値か数式"; hash["text"]="Nの絶対値を返します。<br>Nが整数の場合には整数値を、実数の場合は実数値を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is abs(-2).<br>X = 2<br>yes<br>| ?-X is abs(-2.0).<br>X = 2.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>sign/1"; azlist.push(hash);
var hash={}; hash["id"]="412"; hash["name"]="sign/1"; hash["common"]="ISO"; hash["format"]="sign(+N)"; hash["argument"]="N : 数値か数式"; hash["text"]="Nの符号を返します。<br>Nが整数の場合で、正ならば+1, 負ならば-1, 0ならば0を返します。<br>実数の場合は実数値で返します。"; hash["reference"]=""; hash["sample"]="| ?-X is sign(3).<br>X = 1<br>yes<br>| ?-X is sign(-2).<br>X = -1<br>yes<br>| ?-X is sign(0).<br>X = 0<br>yes<br>| ?-X is sign(-2.0).<br>X = -1.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>abs/1"; azlist.push(hash);
var hash={}; hash["id"]="413"; hash["name"]="min/2"; hash["common"]=""; hash["format"]="min(+N1, +N2)"; hash["argument"]="N1, N2 : 数値か数式"; hash["text"]="N1とN2を比較し、小さいほうの値を返します。<br>N1, N2が共に整数値のとき整数値を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is min(1,2).<br>X = 1<br>yes<br>| ?-X is min(1.23, 0.34).<br>X = 0.340000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>max/2"; azlist.push(hash);
var hash={}; hash["id"]="414"; hash["name"]="max/2"; hash["common"]=""; hash["format"]="max(+N1, +N2)"; hash["argument"]="N1, N2 : 数値か数式"; hash["text"]="N1とN2を比較し、大きいほうの値を返します。N1, N2が共に整数値のとき整数値を返します。"; hash["reference"]=""; hash["sample"]="| ?-X is max(1,2).<br>X = 2<br>yes<br>| ?-X is max(1.23, 0.34).<br>X = 1.23000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>min/2"; azlist.push(hash);
var hash={}; hash["id"]="415"; hash["name"]="float_integer_part/1"; hash["common"]="ISO"; hash["format"]="float_integer_part(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの整数部を実数値として返します。"; hash["reference"]=""; hash["sample"]="| ?-X is float_integer_part(1.2345).<br>X = 1.00000000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>float_fractional_part/1"; azlist.push(hash);
var hash={}; hash["id"]="416"; hash["name"]="float_fractional_part/1"; hash["common"]="ISO"; hash["format"]="float_fractional_part(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの小数点以下の部分を実数値として返します。"; hash["reference"]=""; hash["sample"]="| ?-X is float_fractional_part(1.2345).<br>X       = 0.234500000000000<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>float_integer_part/1"; azlist.push(hash);
var hash={}; hash["id"]="417"; hash["name"]="ceiling/1"; hash["common"]="ISO"; hash["format"]="ceiling(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNより大きい最小の整数値に丸められた整数値を返します。<br>正数の場合、いわゆる「切り上げ」計算となります。"; hash["reference"]=""; hash["sample"]="| ?-X is ceiling(1.23).<br>X       = 2<br>yes<br>| ?-X is ceiling(-1.23).<br>X       = -1<br>yes<br>| ?-X is ceiling(-1.99).<br>X       = -1"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>floor/1<br>truncate/1<br>ceiling/1<br>round/1"; azlist.push(hash);
var hash={}; hash["id"]="418"; hash["name"]="round/1"; hash["common"]="ISO"; hash["format"]="round(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNに最も近い整数値に丸められた整数値を返します。<br>Nがちょうど整数間の中間値の場合で、かつ、正数の場合にはより大きい整数値に丸められます。<br>負数の場合には、より小さい整数値に丸められます。"; hash["reference"]=""; hash["sample"]="| ?-X is round(1.23).<br>X = 1<br>yes<br><br>| ?-X is round(1.99).<br>X = 2<br>yes<br><br>| ?-X is round(1.5).<br>X = 2<br>yes<br><br>| ?-X is round(-1.23).<br>X = -1<br>yes<br><br>| ?-X is round(-1.99).<br>X = -2<br>yes<br><br>| ?-X is round(-1.5).<br>X = -2<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>floor/1<br>truncate/1<br>ceiling/1<br>round/1"; azlist.push(hash);
var hash={}; hash["id"]="419"; hash["name"]="truncate/1"; hash["common"]="ISO"; hash["format"]="truncate(N)"; hash["argument"]="N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でNの小数点を切り捨てて丸められた整数値を返します。<br>いわゆる「小数点以下切り捨て」計算となります。"; hash["reference"]=""; hash["sample"]="| ?-X is truncate(1.23). <br>X = 1 <br>yes<br><br>| ?-X is truncate(-1.23). <br>X = -1 <br>yes<br><br>| ?-X is truncate(-1.99). <br>X = -1 <br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>floor/1<br>truncate/1<br>ceiling/1<br>round/1"; azlist.push(hash);
var hash={}; hash["id"]="420"; hash["name"]="atom_concat/3"; hash["common"]="ISO"; hash["format"]="atom_concat(+A1,+A2,-A3) or atom_concat(?A1,?A2,+A3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A1,A2</td>      <td>:結合するアトム</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:A1とA2を結合したアトム</td>    </tr>  </tbody></table>"; hash["text"]="A1とA2のアトムを結合したアトムをA3にユニファイします。<br>A3にアトムを指定した場合、A1, A2にはそれを分解したアトムがユニファイされます。"; hash["reference"]=""; hash["sample"]="| ?-atom_concat(abc,def,X).<br>X = abcdef<br>yes<br><br>| ?-atom_concat(A,B,abc).<br>A = ,<br>B = abc;<br>A = a,<br>B = bc;<br>A = ab,<br>B = c;<br>A = abc,<br>B = ;<br>no"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>atom_append/3"; azlist.push(hash);
var hash={}; hash["id"]="421"; hash["name"]="atom_length/2"; hash["common"]="ISO"; hash["format"]="atom_length(+A, -I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td>:長さを調べたいアトム</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:Aの長さ(文字数)がユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="Aの長さ(文字数)をIにユニファイします。<br>kanji_modeがonのときには、漢字等でない1バイト文字は1文字として数えられ、kanji_modeがoffのときには、多バイト文字はバイト数として数えられます。<br>atom/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-atom_length(abc,X).<br>X       = 3<br>yes<br>| ?-atom_length(あいう,X).<br>X       = 3<br>yes<br>| ?-kanji_mode(_,off).<br>_0      = on<br>yes<br>| ?-atom_length(あいう,X).<br>X       = 6<br>yes<br>| ?-"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="atom/2<br>kanji_mode/2"; azlist.push(hash);
var hash={}; hash["id"]="422"; hash["name"]="s_flush/0"; hash["common"]=""; hash["format"]="s_flush, flush_output"; hash["argument"]="なし"; hash["text"]="標準出力バッファの強制フラッシュをします。<br>ISOのflush_output/0と同じです。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="nl/0<br>flush_output/0"; azlist.push(hash);
var hash={}; hash["id"]="423"; hash["name"]="**  /xfx"; hash["common"]="ISO"; hash["format"]="N1 ** N2"; hash["argument"]="N1:基数。数値か数式。<br>N2:指数。数値か数式。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で指数演算を行います。<br>N1のN2 乗を計算します。"; hash["reference"]=""; hash["sample"]="| ?-X is 2.0 ** 3.0.<br>X = 8.00000000000000<br>yes<br>| ?-X is 2.0 ** 2.0 ** 2.0.<br>Syntax error"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>^  /xfy<br>"; azlist.push(hash);
var hash={}; hash["id"]="424"; hash["name"]="rem/2"; hash["common"]="ISO"; hash["format"]="I1 rem I2"; hash["argument"]="整数値か整数値を持つ数式"; hash["text"]="I1をI2で割った余りを求めます。<br>定義式は、I1 - I2*(I1//I2)。<br>I1, I2が共に正の整数値の場合、mod/2と同じ値となりますが、それ以外の場合には異なる値となることがあります。<br>なお、ver.7.xx以前のAZ-Prologではmodの計算はver. 7.xxのremの計算値に一致します。<br>0で割るとEvaluation error: zero_divisor<br>整数以外の値のとき、Type error: integer expected"; hash["reference"]=""; hash["sample"]="| ?-X is 13 rem 11.<br>X = 2<br>yes<br>| ?-X is -13 rem 11.<br>X = -2<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>mod/2"; azlist.push(hash);
var hash={}; hash["id"]="425"; hash["name"]="atom_chars/2"; hash["common"]="ISO"; hash["format"]="atom_chars(?A,?L)"; hash["argument"]="A:リストに変換したいアトムを指定<br>L:アトムに変換したいリストを指定"; hash["text"]="アトムとアトムを要素に持つリストを相互に変換します。<br>"; hash["reference"]=""; hash["sample"]="| ?- atom_chars(abc,L).<br>L = [a,b,c]<br>yes<br>| ?- atom_chars(123,L).<br>L = [1,2,3]"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>term_atom/2<br>atom_codes/2"; azlist.push(hash);
var hash={}; hash["id"]="426"; hash["name"]="atom_codes/2"; hash["common"]="ISO"; hash["format"]="atom_codes(?A,?L)"; hash["argument"]="A:リストに変換したいアトムを指定    <br>L:アトムに変換したいリストを指定"; hash["text"]="アトムと文字コードを要素に持つリストを相互に変換します。<br>"; hash["reference"]=""; hash["sample"]="| ?- atom_codes(abc,L).<br>L = [97,98,99]<br>yes<br>| ?- atom_codes(123,L).<br>L = [49,50,51]<br><br>| ?-atom_codes(A,[33,34,35]).<br>A = !&quot;#"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>term_atom/2<br>atom_chars/2"; azlist.push(hash);
var hash={}; hash["id"]="427"; hash["name"]="number_chars/2"; hash["common"]="ISO"; hash["format"]="number_chars(?I,?L)"; hash["argument"]="I:リストに変換したい数値を指定<br>L:アトムに変換したいリストを指定"; hash["text"]="数値と数値を要素に持つリストを相互に変換します。<br>"; hash["reference"]=""; hash["sample"]="| ?- number_chars(123,L).<br>L = [1,2,3]<br>yes<br>| ?- number_chars(1.23,L).<br>L = [1,.,2,3]"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>term_atom/2<br>number_codes/2"; azlist.push(hash);
var hash={}; hash["id"]="428"; hash["name"]="number_codes/2"; hash["common"]="ISO"; hash["format"]="number_codes(?I,?L)"; hash["argument"]="I:リストに変換したい数値を指定<br>L:アトムに変換したいリストを指定"; hash["text"]="数値と文字コードを要素に持つリストを相互に変換します。<br>"; hash["reference"]=""; hash["sample"]="| ?- number_codes(123,L).<br>L = [49,50,51]<br>yes<br>| ?- number_codes(1.23,L).<br>L = [49,46,50,51]"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>term_atom/2<br>number_chars/2"; azlist.push(hash);
var hash={}; hash["id"]="429"; hash["name"]="char_code/2"; hash["common"]="ISO"; hash["format"]="char_code(?A,?C)"; hash["argument"]="A: 文字コードに変換したいアトムを指定<br>L: アトムに変換したい文字コードを指定"; hash["text"]="アトムと文字コードを相互に変換します。 char_code(A,C) :- name(A,[C]) と同じです。<br>"; hash["reference"]=""; hash["sample"]="| ?- char_code(a,C).<br>C = 97<br>yes<br>| ?- char_code(&#39;1&#39;,C).<br>C = 49"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>term_atom/2<br>atom_chars/2<br>atom_codes/2"; azlist.push(hash);
var hash={}; hash["id"]="430"; hash["name"]="copy_term/2"; hash["common"]="ISO"; hash["format"]="copy_term(+T1,-T2)"; hash["argument"]="T1: コピーするtermを指定<br>T2: コピー後のtermを指定"; hash["text"]="項をコピーします。その際、すべての変数は新たに割り当てられます。<br>"; hash["reference"]=""; hash["sample"]="| ?- copy_term(a(X),T).<br>X = X,<br>T = a(_34)  <span style='color: #FFFF00'><==新たにXが別の変数 _34に割り当てられる</span>"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="431"; hash["name"]="sub_atom/5"; hash["common"]="ISO"; hash["format"]="sub_atom(+A1,?N1,?N2,?N3,?A2)"; hash["argument"]="A1:アトム<br>A2:取り出したアトム<br>N1:スタート位置<br>N2:取り出すアトム長<br>N3:残りのアトム長"; hash["text"]="A1のアトムのN1番目からN2個の取り出し、A2にユニファイします。<br>アトムの長さをNとすると、N=N1+N2+N3の関係にあります。<br>"; hash["reference"]=""; hash["sample"]="| ?-sub_atom(abcde,1,2,N,A).<br>N       = 2,<br>A       = bc<br>yes<br><br>| ?-sub_atom(abcde,1,M,N,A).<br>M       = 0,<br>N       = 4,<br>A       = ;<br>M       = 1,<br>N       = 3,<br>A       = b;<br>M       = 2,<br>N       = 2,<br>A       = bc;<br>M       = 3,<br>N       = 1,<br>A       = bcd;<br>M       = 4,<br>N       = 0,<br>A       = bcde<br>yes<br><br>| ?-sub_atom(abc,0,3,N,A).<br>N       = 0,<br>A       = abc<br>yes"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]="name/2<br>atom_length/2"; azlist.push(hash);
var hash={}; hash["id"]="432"; hash["name"]="open/3"; hash["common"]="ISO"; hash["format"]="open(+A,+Mode,-S)"; hash["argument"]="<table width='0' class='none'>  <tbody>    <tr>      <td align='left'>A</td>      <td nowrap>:入出力ファイル名</td>    </tr>    <tr>      <td align='left'>Mode </td>      <td nowrap>:read, write, append</td>    </tr>    <tr>      <td align='left'>S</td>      <td nowrap>:入出力ストリーム値</td>    </tr>  </tbody></table>"; hash["text"]="Aを入出力ファイルとしてオープンし、そのストリーム値をSにユニファイします。<br>入力終了後は必ず seen/1, told/1 または close/1 でクローズします。<br>モードによって see/2, tell/2, tella/2 と同じです。<br>Modeが read のときはファイル入力、writeのときはファイル出力、appendのときは、ファイルに追加出力となります。<br>open(File,read,S) :- see(File,S).<br>open(File,write,S) :- tell(File,S).<br>open(File,append,S) :- tella(File,S).<br>とエイリアスされています。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-open('test.txt',read,S),get_code(S,X),close(S).<br>S       = fp_69ee090,<br>X       = 110<br>yes<br><br><span style='color: #FFFF00'>test というファイルの先頭の一文字のキャラクターコードを X にユニファイします。</span><br><br><br>| ?-open('abc.txt',write,S),write(S,abc),nl(S),close(S).<br>S       = fp_69ee090<br>yes<br><br><span style='color: #FFFF00'>abc.txtに abc を書き込みます。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="seen/1<br>close/1<br>see/2<br>tell/2<br>tella/2"; azlist.push(hash);
var hash={}; hash["id"]="433"; hash["name"]="get_char/1"; hash["common"]="ISO"; hash["format"]="get_char(-A), get_char(+S,-A)"; hash["argument"]="A:入力した文字がユニファイされる<br>S:入力ストリームがユニファイされる"; hash["text"]="get_char/1は現在の入力ストリームから一文字読み込んでユニファイします。<br>get_char/2は open/3でオープンされた任意のストリームから1文字読み込みます。<br>get/1 のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。"; hash["reference"]=""; hash["sample"]="<span style='color: #FFFF00'>testというファイルの中身が ab のとき</span><br><br>| ?-see(test),get_char(X1),get_char(X2),seen.<br>X1      = a,<br>X2      = b<br>yes<br><br><br><span style='color: #FFFF00'>abc.txtというファイルの中身が ab のとき</span><br><br>| ?-open('abc.txt',read,S),get_char(S,X1),get_char(S,X2),close(S).<br>S       = fp_4dbea60,<br>X1      = a,<br>X2      = b<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get/1<br>get0/1<br>get1/2<br>get_code/2<br>see/1<br>told/0<br>open/3<br>put/1<br>put_code/1<br>get_code/1"; azlist.push(hash);
var hash={}; hash["id"]="434"; hash["name"]="ensure_loaded/1"; hash["common"]="ISO"; hash["format"]="ensure_loaded(+A)"; hash["argument"]="A:ファイル名(パス指定も可)"; hash["text"]="指定されたソースファイルを読み込みます。<br>このとき、すでに同一のソースファイルが読み込まれていた場合、読み込みは無視されます。<br>すなわち、一度だけしか読み込まれません。"; hash["reference"]=""; hash["sample"]="| ?-ensure_loaded('queen.pl').<br>yes<br><span style='color:#FFFF00'>ソースファイルが読み込まれます。（queen.plファイルが読み込まれます。）</span>"; hash["genre"]="1"; hash["used"]="true"; hash["incident"]="consult/1<br>reconsult/1"; azlist.push(hash);
var hash={}; hash["id"]="435"; hash["name"]="sort/2"; hash["common"]=""; hash["format"]="sort(+L1,-L2)"; hash["argument"]="L1: ソートするリスト<br>L2: ソートされたリスト"; hash["text"]="リストをソートします。比較は未代入の変数 < 実数 < 整数 < アトム < 複合項の順番でソートします。<br>詳細は、項の比較 (@<)を参照のこと。"; hash["reference"]=""; hash["sample"]="| ?-sort([a(1,1),zz,V,3.1,1],L).<br>V       = V,<br>L       = [V_20,3.10000000000000,1,zz,a(1,1)]<br>yes<br>| ?-"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="compare/3<br>keysort/2<br>@<  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="436"; hash["name"]="keysort/2"; hash["common"]=""; hash["format"]="keysort(+L1,-L2)"; hash["argument"]="L1: ソートするリスト<br>L2: ソートされたリスト"; hash["text"]="リストをソートします。リストの要素は Key-Value の形になっている必要があり、Keyでソートします。"; hash["reference"]=""; hash["sample"]="| ?-keysort([3-a,2-c,1-b],L).<br>L = [1-b,2-c,3-a]<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="sort/2"; azlist.push(hash);
var hash={}; hash["id"]="437"; hash["name"]="uppercase_atom/2"; hash["common"]=""; hash["format"]="uppercase_atom(+A1,-A2)"; hash["argument"]="A1: 英文字の大文字にしたいアトム<br>A2: 大文字に変換されたアトム"; hash["text"]="英文字の小文字を大文字に変換します。大文字は、大文字のままに<br>なります。"; hash["reference"]=""; hash["sample"]="| ?-uppercase_atom(abc,X).<br>X = ABC<br>yes<br><br>| ?-uppercase_atom(&#39;AbC&#39;,X).<br>X = ABC<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="lowercase_atom/2<br>downcase_atom/2"; azlist.push(hash);
var hash={}; hash["id"]="438"; hash["name"]="lowercase_atom/2"; hash["common"]=""; hash["format"]="lowercase_atom(+A1,-A2)"; hash["argument"]="A1: 英文字の小文字にしたいアトム<br>A2: 小さい文字に変換されたアトム"; hash["text"]="英文字の大文字を小文字に変換します。<br>小文字は、小文字のままになります。<br>downcase_atom/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-lowercase_atom(&#39;ABC&#39;,X).<br>X = abc<br>yes<br><br>| ?-lowercase_atom(&#39;aBc&#39;,X).<br>X = abc<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="uppercase_atom/2<br>downcase_atom/2"; azlist.push(hash);
var hash={}; hash["id"]="439"; hash["name"]="log/2"; hash["common"]=""; hash["format"]="log(E,N)"; hash["argument"]="E:数値か数式<br>N:数値か数式"; hash["text"]="is  /xfx などの数式を評価する述語の引数の中でEを底とするNの対数の値を求めます。<br>Nが0以下の数値でもエラーを返しません。"; hash["reference"]=""; hash["sample"]="| ?-X is log(10.0,2.0).<br>X = 0.301029995663981<br>yes"; hash["genre"]="12"; hash["used"]="true"; hash["incident"]="is  /xfx<br>exp/1<br>log/1  (1)<br>log/1  (2)<br>log10/1"; azlist.push(hash);
var hash={}; hash["id"]="440"; hash["name"]="current_predicate/1"; hash["common"]="ISO"; hash["format"]="current_pred(?A,?I), current_predicate(?A/I)"; hash["argument"]="A:述語の述語名がユニファイされる<br>I:述語のアリティがユニファイされる"; hash["text"]="現在、登録されている述語のその述語名とアリティを一つずつ取ってきて、それぞれの引数にユニファイします。<br>この述語は非決定性ですから、バックトラックによって後戻りしてきたら次の述語をユニファイし、これを繰返すと全ての述語を取ってくることができます。<br>current_pred/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-current_pred(F,N).<br>F   = ;,<br>N   = 2;<br>F   = ->,<br>N   = 2;<br>F   = call,<br>N   = 1;<br>F   = log,<br>N   = 0;<br>F   = log,<br>N   = 1;<br>F   = edit,<br>N   = 0;<br>F   = edit,<br>N   = 1;<br>F   = error,<br>N   = 1;<br>F   = fail,<br>N   = 0;<br><br>| ?-current_predicate(F/N).<br>F = !,<br>N = 0<br>yes"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="441"; hash["name"]="open/3"; hash["common"]=""; hash["format"]="id432に統合"; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="442"; hash["name"]="close/1"; hash["common"]="ISO"; hash["format"]="told(+S), close(+S)"; hash["argument"]="S:出力ファイルをtell/2, open/3 によってオープンしたときに返されたストリーム値"; hash["text"]="tell/2, open/3 によってオープンされた出力ファイルをクローズします。<br>なお、現在の出力ストリームには影響を与えません。"; hash["reference"]="「(操)5.6ストリーム入出力」<br>"; hash["sample"]="| ?-tell('abc.txt',S),write(S,abcdefgh),told(S).<br>yes<br><br><span style='color: #FFFF00'>abc.txt というファイルに abcdefgh というアトムを書込みます。</span><br>| ?-open('abc.txt',write,S),write(S,abc),close(S).<br>S = fp_123   <span style='color: #FFFF00'><== abc.txtというファイルに abcというアトムを書き込みます。</span><br>yes"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tell/2<br>open/3"; azlist.push(hash);
var hash={}; hash["id"]="443"; hash["name"]="write_canonical/1"; hash["common"]="ISO"; hash["format"]="display(+T), write_canonical(+T)"; hash["argument"]="T:出力する項"; hash["text"]="Tを正規の表現で現在の出力ストリームに出力します。<br>display/1にほぼ同じです。<br><br>・演算子形式の複合項は述語形式に直されて出力されます。<br>・ストリングはその実態であるキャラクタコードのリストととして出力されます。<br>・リスト形式の複合項は述語形式に直されず、そのまま出力されます。<br>・未代入の変数の場合は変数名がそのまま出力されます。"; hash["reference"]=""; hash["sample"]="| ?-write_canonical(1+2),nl.<br>+(1,2)<br>yes<br>| ?-display(&#39;abcdef&#39;),nl.<br>abcdef<br>yes<br>| ?-display(&#39;ABCDEF&#39;),nl.<br>&#39;ABCDEF&#39;<br>yes<br>| ?-display(&#39;abc def&#39;),nl.<br>&#39;abc def&#39;<br>yes<br>| ?-display(&#39;A&#39;(123)),nl.<br>&#39;A&#39;(123)<br>yes<br>| ?-display(1+2*3),nl.<br>+(1,*(2,3))<br>yes<br>| ?-display(\&quot;abc\&quot;),nl.<br>[97,98,99]<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="tell/1<br>tella/1<br>read/1<br>writeq/1<br>display/1"; azlist.push(hash);
var hash={}; hash["id"]="444"; hash["name"]="put_char/1"; hash["common"]="ISO"; hash["format"]="write(+T), put_char(+A)"; hash["argument"]="T:出力する項<br>A:出力する1文字"; hash["text"]="Tをほとんどそのままの表現で現在の出力ストリーム(デフォルトは user{ディスプレイ画面})に出力します。<br>put_char/1は1文字を出力します。<br><br>・Tがアトム、演算子形式やリスト形式の複合項の場合はそのまま出力されます。<br>・Tがn進数表現の数値は全て10進数表現になります。<br><br>最上位桁からのゼロの並びは無視され出力されません。<br>実数の場合は小数点以下6桁に丸められます。<br><br>・Tが未代入の変数の場合はその変数名が出力されます。<br>・Tに空白などの項として許されない記号が含まれる場合はエラー(syntax error)<br><br>となります。<br>この場合シングルクォートで囲ってアトムにしてしまえば差し支えありません。<br>ただし、囲ったシングルクォートは出力されません。よって、ファイルに出力<br>しても read/1 で読めません。<br>(read/1 で読みたい場合は writeq/1 を使います)"; hash["reference"]=""; hash["sample"]="| ?-put_char(a),nl.<br>a<br>yes<br>| ?-write(abcdef),nl.<br>abcdef<br>yes<br>| ?-write(&#39;abcdef&#39;),nl.<br>abcdef<br>yes<br>| ?-write(&#39;ABCD&#39;),nl.<br>ABCD<br>yes<br>| ?-write(X),nl.<br>X_7<br>X       = X<br>yes<br>| ?-write(000123),nl.<br>123<br>yes<br>| ?-write(0.12345678),nl.<br>0.123456780000000<br>yes<br>| ?-write(0.123),nl.<br>0.123000000000000<br>yes<br>| ?-write(0&#39;123),nl.<br>291<br>yes<br>| ?-write(a:-b),nl.<br>Syntax error<br>| ?-write((a :- b)),nl.<br>a:-b<br>yes<br>| ?-write(abc def),nl.<br>Syntax error<br>| ?-write(&#39;abc def&#39;),nl.<br>abc def<br>yes<br>| ?-tell(test),write(abcd),nl,told.<br>yes<br>| ?-"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="writeq/1<br>display/1<br>tell/1<br>write/1"; azlist.push(hash);
var hash={}; hash["id"]="445"; hash["name"]="put_char/2"; hash["common"]="ISO"; hash["format"]="write(+S,+T), put_char(+S,+A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td nowrap>S</td>      <td nowrap>:指定ストリームのストリーム値<br>        &nbsp;(tell/2,tella/2,open/3 でファイルオープンしたとき第2引数 or 第3引数に返された値)</td>    </tr>    <tr>      <td width='24' >T</td>      <td>:出力する項</td>    </tr>    <tr>      <td>A</td>      <td>:出力する1文字</td>    </tr>  </tbody></table>"; hash["text"]="write/1 が現在の出力ストリームへ出力するのに対して、現在の出力ストリームに関係無く tell/2,tella/2, open/3 でオープンされた任意の出力ストリームへ項を出力する事が出来ます。<br>put_char/2は1文字を出力します。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は write/1, put_char/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),write(S,a(123)),told(S).<br>yes<br><br>| ?-open('test',write,S),put_char(S,a),close(S).<br>yes  <span style='color: #FFFF00'><== testというファイルに a を書き込みます。</span>"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="write/1<br>tell/2<br>tella/2<br>told/1<br>write/2"; azlist.push(hash);
var hash={}; hash["id"]="446"; hash["name"]="get_code/1"; hash["common"]="ISO"; hash["format"]="get1(-I), get_code(-I)"; hash["argument"]="I:入力したキャラクタ(ASCII)コードがユニファイされる"; hash["text"]="現在の入力ストリームから一文字読み込んでそのキャラクタ・コードとX とを単一化します。<br>get/1 のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。<br>また、get0/1 と違い改行文字も変換せずそのまま返します。<br>漢字モードがonの場合の処理は get/1 get0/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told. 　<span style='color: #FFFF00'><== <carriage return><line feed>だけyesのファイルを作ります。</span><br>| ?-see(test),get1(X1),get1(X2),seen.<br>X1 = 13                             　 <span style='color: #FFFF00'><== 改行文字コードもそのまま返します。</span><br>X2 = 10<br>yes<br><br><span style='color: #FFFF00'>abc.txtというファイルの中身が ab のとき</span><br><br>| ?-see('abc.txt'),get_code(X1),get_code(X2),seen.<br>X1 = 97,<br>X2 = 98<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get/1<br>get1/2<br>see/1<br>put/1<br>get_code/2<br>get_char/1"; azlist.push(hash);
var hash={}; hash["id"]="447"; hash["name"]="get_code/2"; hash["common"]="ISO"; hash["format"]="get1(+S,-I), get_code(+S,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>S</td>      <td>:指定ファイルのストリーム値<br>        (see/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left'>I</td>      <td>:入力したキャラクタ(ASCII)コードがユニファイされる</td>    </tr>  </tbody></table>"; hash["text"]="get1/1 が現在の入力ストリームから読み込むのに対して、現在のストリームに関係無くsee/2, open/3 でオープンされた任意のストリームから読み込む事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数の入力ストリームがある(複数のファイルがオープンされている)場合にいちいち現在の入力ストリームを切換えなくてもよいので便利です。<br>これ以外は get1/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test),put(13),put(10),told.   <span style='color: #FFFF00'><== <carriage return><line feed>だけyesのファイルを作ります。</span><br><br>| ?-see(test,S),get1(S,X1),get1(S,X2),seen(S).<br>S = fp_6812<br>X1 = 13                                <span style='color: #FFFF00'><== 改行文字コードもそのまま返します。</span><br>X2 = 10<br>yes<br><br>| ?-open('test',read,S),get_code(S,X1),get_code(S,X2),close(S).<br>S = fp_6812,<br>X1 = 13,<br>X2 = 10<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get1/1<br>get0/2<br>see/2<br>seen/1<br>open/3<br>close/1<br>put/1<br>put_code/2<br>get_char/2"; azlist.push(hash);
var hash={}; hash["id"]="448"; hash["name"]="put_code/1"; hash["common"]="ISO"; hash["format"]="put(+N), put_code(+N)"; hash["argument"]="N:出力する文字のキャラクタ(ASCII)又は漢字コード"; hash["text"]="現在の出力ストリームにNをキャラクタ(ASCII)又は漢字コードとする文字を出力します。<br>put/1と同じです。<br><br>ただし、次の場合は動作が多少異なります。<br>・Nの値が31の場合<br>対象の出力ストリームが「edit」(エディタバッファ)の場合は(31を改行コードとして使っているので)そのまま31が出力されます。<br>それ以外のファイルの場合はOSの改行文字コードに変換して出力されます。<br>つまり、get0/1 と併せるとPrologプログラム上ではをキャラクタコードの31の1バイト(1文字)を改行文字コードの代りとして扱う事が出来ます。<br><br>・まず、Nを2進数表現したとき、漢字コードと見なして、該当の文字があればその多バイト(全角)文字を出力します。<br>もし、該当の文字がなければ下位8桁(1バイト)のみをキャラクターコードと見なして、該当の文字を出力します。<br><br>・漢字モードはロギングにのみ関係します。<br>漢字モード「on」の場合はこの put/1 でコンソールに出力された1バイト文字・多バイト(全角)文字共にログファイルにも出力されます。<br>これに対して漢字モード「off」の場合はこの put/1 でコンソールに出力された1バイト文字はログファイルにも出力されますが、多バイト(全角)文字がコンソールに出力された場合にはログファイルには出力されません。(Prolog-KABAと同じ)"; hash["reference"]="「(操)5.8日本語処理と漢字モード」<br>"; hash["sample"]="| ?-tell(test),put(31),told.      <span style='color: #FFFF00'><== 31 が改行文字コードに変換して出力されます。</span><br>yes    <br>| ?-see(test),get1(X1),get1(X2),seen.<br>X1 = 13                           <span style='color: #FFFF00'><== 確かに改行文字コードに変換されています。</span><br>                                  <br>X2 = 10                           <br>yes<br><br>| ?-put_code(97),nl.<br>a<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="tell/1<br>kanji_mode/2<br>get1/1<br>put/2<br>put_code/2<br>get_code/1"; azlist.push(hash);
var hash={}; hash["id"]="449"; hash["name"]="put_code/2"; hash["common"]="ISO"; hash["format"]="put(+S,+N), put_code(+S,+N)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>S</td>      <td>:指定ストリームのストリーム値<br>        (tell/2 でファイルオープンしたとき第2引数に返された値)</td>    </tr>    <tr>      <td align='left'>N</td>      <td>:出力する文字のキャラクタ(ASCII)又は漢字コード</td>    </tr>  </tbody></table>"; hash["text"]="put/1 が現在の出力ストリームへ出力するのに対して、現在の出力ストリームに関係無く tell/2 でオープンされた任意の出力ストリームへ出力する事が出来ます。<br>ストリームの指定はファイル名ではなくストリーム値で指定します。<br>複数のファイルストリームがある(複数のファイルがオープンされている)場合にいちいち現在のファイルストリームを切換えなくてもよいので便利です。<br>これ以外は put/1 と同じです。"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),put(S,31),told(S).    <span style='color: #FFFF00'><== 31 が改行文字に変換して、出力されます。</span><br>S = fp_6812<br>yes<br>| ?-open('test.dat',write,S),put_code(S,97),put_code(S,98),put_code(S,31),close(S).<br>S = fp_689bfe0                         <span style='color: #FFFF00'><== test.datに abと改行が書き込まれます。</span><br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="put/1<br>put_code/1<br>tell/2<br>tella/2<br>told/1<br>open/3<br>close/1"; azlist.push(hash);
var hash={}; hash["id"]="450"; hash["name"]="current_char_conversion/2"; hash["common"]="ISO"; hash["format"]="current_char_conv(?T,?T2), current_char_conversion(?T1,?T2)"; hash["argument"]="T1:現在設定されている変換対象キャラクタ。変数または、調べたいアトムか文字コードの整数。<br>T2:変換先のキャラクタ。変数または、調べたいアトムか文字コードの整数。"; hash["text"]="char_conversion/2で設定された内容を取得します。"; hash["reference"]=""; hash["sample"]="| ?-char_conversion(&#39;A&#39;,a).<br>yes<br>| ?-char_conversion(&#39;B&#39;,b).<br>yes<br>| ?-read(X).<br>|: ABC.<br>X = abC<br>yes<br>| ?-current_char_conv(X,Y).<br>X       = A,<br>Y       = a;<br>X       = B,<br>Y       = b;<br>no<br>%%%%%%%%文字コード変換を元に戻す%%%%%%%%%%<br>reset_char_conv:- current_char_conv(X,_),char_conversion(X,X),fail.<br>reset_char_conv.<br>?-reset_char_conv.<br>yes<br>| ?-current_char_conv(X,Y).<br>no"; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="char_conversion/2"; azlist.push(hash);
var hash={}; hash["id"]="451"; hash["name"]="flush_output/0"; hash["common"]="ISO"; hash["format"]="s_flush, flush_output"; hash["argument"]="なし"; hash["text"]="標準出力バッファの強制フラッシュをします。<br>s_flush/0と同じです。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="nl/0<br>s_flush/0"; azlist.push(hash);
var hash={}; hash["id"]="452"; hash["name"]="downcase_atom/2"; hash["common"]=""; hash["format"]="downcase_atom(+A1,-A2)"; hash["argument"]="A1: 英文字の小文字にしたいアトム<br>A2: 小さい文字に変換されたアトム"; hash["text"]="英文字の大文字を小文字に変換します。<br>小文字は、小文字のままになります。<br>lowercase_atom/2と同じです。"; hash["reference"]=""; hash["sample"]="| ?-lowercase_atom(&#39;ABC&#39;,X).<br>X = abc<br>yes<br><br>| ?-lowercase_atom(&#39;aBc&#39;,X).<br>X = abc<br>yes<br>"; hash["genre"]="30"; hash["used"]="true"; hash["incident"]="uppercase_atom/2<br>lowercase_atom/2"; azlist.push(hash);
var hash={}; hash["id"]="453"; hash["name"]="editall/0"; hash["common"]=""; hash["format"]="editall"; hash["argument"]="なし"; hash["text"]="エディタバッファを一旦空にして、現在ヒープ領域定義されている全ての述語をエディタバッファに転送後エディタを起動します。"; hash["reference"]=""; hash["sample"]="| ?-editall.<br><br>    <span style='color:#FFFF00'>→ AzEditが起動されます。</span>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]="edit/0<br>edit/1"; azlist.push(hash);
var hash={}; hash["id"]="454"; hash["name"]="edit/0"; hash["common"]=""; hash["format"]="edit"; hash["argument"]="なし"; hash["text"]="現在のエディタバッファの状態でAzEditが起動されます。"; hash["reference"]=""; hash["sample"]="| ?-edit.<br><br>    <span style='color:#FFFF00'>→ AzEditが起動されます</span>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]="edit/1<br>editall/0"; azlist.push(hash);
var hash={}; hash["id"]="455"; hash["name"]="edit/1"; hash["common"]=""; hash["format"]="edit(+A・A/I・L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>A</td>      <td>:エディタに転送したい述語名</td>    </tr>    <tr>      <td align='left' valign='top'>A/I</td>      <td>:エディタに転送したい述語名/アリティ</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>:エディタに転送したい複数の A 又は A/I を要素とするリスト</td>    </tr>  </tbody></table>"; hash["text"]="エディタバッファを一旦空にして、ヒープ領域に定義されている述語の中から『述語名』で指定された述語のテキストをバッファエディタに転送後エディタを起動します。<br>また、『述語名』をlistingの場合と同じように『述語名／引数の数』、あるいは『述語名』と『述語名／引数の数』からなるリストを指定することもできます。"; hash["reference"]=""; hash["sample"]="| ?-edit(my_append).<br><br>    <span style='color:#FFFF00'>→ AzEditが起動されます。</span>"; hash["genre"]="27"; hash["used"]="true"; hash["incident"]="edit/0<br>editall/0<br>listing/1"; azlist.push(hash);
var hash={}; hash["id"]="456"; hash["name"]="^ /2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="457"; hash["name"]="setof/4"; hash["common"]=""; hash["format"]="setof(+Var,+Goal,-Var,+A)"; hash["argument"]="  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Var:</td>      <td nowrap>解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Goal:</td>      <td nowrap>解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Var:</td>      <td nowrap>ゴールの全ての解のリスト </td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A:</td>      <td nowrap>asc (昇順)またはdec（降順）</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合をソートして返します。<br>第4引数でソート順（昇順、降順）を指定できます。<br>ゴールの実行が一度も成功しなかった場合は失敗します。<br><br>setof/3の定義は次となっています。<br><br>setof(X,G,L):-setof(X,G,L,asc)."; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>5クイーンの解を求める述語をqueen(5,X)とすると、その全解<br>を求めて表示させるには以下のようにします。</span><br><br>| ?-queen(5,X),write(X),nl,fail.<br>[2,4,1,3,5]<br>[3,1,4,2,5]<br>[1,3,5,2,4]<br>[2,5,3,1,4]<br>　　・<br>　　・<br>no<br><br><span style='color:#FFFF00'>ゴールを実行した解を降順にソートしてリスト化するときは</span><br><br>| ?-setof(X,queen(5,X),L,dec).<br>X       = X,<br>L       = [[5,3,1,4,2],[5,2,4,1,3],[4,2,5,3,1],[4,1,3,5,2]・・]]"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="setof/3<br>bagof/3<br>findall/3"; azlist.push(hash);
var hash={}; hash["id"]="458"; hash["name"]="setof/3"; hash["common"]="ISO"; hash["format"]="setof(+Var,+Goal,-Var)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Var:</td>      <td nowrap>解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Goal:</td>      <td nowrap>解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Var:</td>      <td nowrap>ゴールの全ての解のリスト </td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合をソートして返します。<br>ゴールの実行が一度も成功しなかった場合は失敗します。"; hash["reference"]=""; hash["sample"]="<span style='color:#FFFF00'>5クイーンの解を求める述語をqueen(5,X)とすると、その全解<br>を求めて表示させるには以下のようにします。</span><br><br>| ?-queen(5,X),write(X),nl,fail.<br>[2,4,1,3,5]<br>[3,1,4,2,5]<br>[1,3,5,2,4]<br>[2,5,3,1,4]<br>　　・<br>　　・<br>no<br><br><span style='color:#FFFF00'>ゴールを実行した解をソートしてリスト化するときは</span><br><br>| ?-setof(X,queen(5,X),L).<br>X       = X,<br>L       = [[1,3,5,2,4],[1,4,2,5,3],[2,4,1,3,5],[2,5,3,1,4],・・]]<br><br><br><span style='color:#FFFF00'>集合を求めたい解が複数ある場合には、次のようにします。</span><br><br>| ?-setof((X,Y),append(X, Y,[ a,b,c]),L).<br>X       = X,<br>Y       = Y,<br>L       = [([],[a,b,c]),([a],[b,c]),([a,b],[c]),([a,b,c],[])]"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="setof/4<br>bagof/3<br>findall/3"; azlist.push(hash);
var hash={}; hash["id"]="459"; hash["name"]="bagof/3"; hash["common"]="ISO"; hash["format"]="bagof(+Var,+Goal,-Var)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Var</td>      <td>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign='top'>Goal</td>      <td>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign='top'>Var</td>      <td>:ゴールの全ての解のリスト</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、解が求まった順に返します。<br>ゴールの実行が一度も成功しなかった場合は失敗します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="<span style='color:#FFFF00'>5クイーンの解を求める述語をqueen(5,X)とすると、その全解を求めて表示させるには以下のようにします。</span><br><br>| ?-queen(5,X),write(X),nl,fail.<br>[2,4,1,3,5]<br>[3,1,4,2,5]<br>[1,3,5,2,4]<br>[2,5,3,1,4]<br>　　・<br>　　・<br>no<br><br><span style='color:#FFFF00'>この全解を、1つのリストの中に入れるには、bagof/3を用います。</span><br><br>| ?-bagof(X,queen(5,X),L).<br>X       = X,<br>L       = [[2,4,1,3,5],[3,1,4,2,5],[1,3,5,2,4],[2,5,3,1,4],・・]<br><br><br><span style='color:#FFFF00'>自由変数(第一引数に指定されていない変数)は自由変数ごとに解の一覧を出力します。</span><br><br>| a(a,1).<br>| a(a,2).<br>| a(b,3).<br>| a(b,4).<br>| ?-bagof(Y,a(X,Y),L).<br>Y       = Y,<br>X       = a,<br>L       = [1,2];<br>Y       = Y,<br>X       = b,<br>L       = [3,4];<br>no<br><br><br><span style='color:#FFFF00'>自由変数を無視して解をとるには第二引数のゴールに該当変数を &quot;＾&quot;で繋げます。</span><br><br>| ?-bagof(Y,X^a(X,Y),L).<br>Y       = Y,<br>X       = X,<br>L       = [1,2,3,4];<br>no<br><br><span style='color:#FFFF00'>自由変数が複数あるときは、次のようにしてください。</span><br><br>| ?-bagof(X,(A,B,C)^a(X,A,B,C),L). "; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="setof/3<br>setof/4<br>findall/3"; azlist.push(hash);
var hash={}; hash["id"]="460"; hash["name"]="s_qsort/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="461"; hash["name"]="grammar/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="false"; hash["incident"]="拡張機能述語（１）<br>editor<br>setof<br>grammar<br>utility"; azlist.push(hash);
var hash={}; hash["id"]="462"; hash["name"]="analize/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="削除20131211"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="463"; hash["name"]="my_system_name/1"; hash["common"]=""; hash["format"]="my_system_name(-A)"; hash["argument"]="A:起動システム名"; hash["text"]="起動システム名を返します。<br>C言語のargv[0]に相当します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-my_system_name(X).<br>X       = prolog"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="464"; hash["name"]="manual/0"; hash["common"]=""; hash["format"]="manual"; hash["argument"]="なし"; hash["text"]="マニュアルの目次を表示します。"; hash["reference"]=""; hash["sample"]="| ?-manual.<br><br><span style='color:#FFFF00'>→マニュアルの目次が表示されます。</span>   "; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="465"; hash["name"]="read_line/4"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="466"; hash["name"]="atom_appends/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="467"; hash["name"]="local_time/1"; hash["common"]=""; hash["format"]="local_time(-L)"; hash["argument"]="L:現在の年、月、曜日、日、時、分、秒、ミリ秒<br>但し、Linux/Mac版では現在の年、月、曜日、日、時、分、秒となる"; hash["text"]="現在の年、月、曜日、日、時、分、秒、ミリ秒を返します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-local_time(X).<br>X       = [2014,2,5,28,15,54,24,438]"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="468"; hash["name"]="p_puts/2"; hash["common"]=""; hash["format"]="p_puts(+A,+L)"; hash["argument"]="A:指定するストリーム<br>L:リストの文字列"; hash["text"]="第一引数のストリームに第二引数のリストの文字列をputします。 "; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-p_puts(con,\&quot;abc\&quot;).<br>abc<br>yes<br><br>| ?-p_puts(S,\&quot;abc\&quot;).<br>abc<br>S       = con<br>yes"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="469"; hash["name"]="get_chars_list/4"; hash["common"]=""; hash["format"]="get_chars_list(+S,+I,-A,-L)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>:入力ストリーム</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:区切り文字コード</td>    </tr>    <tr>      <td align='left' valign='top'>A</td>      <td>:ファイルが終了した場合はend、継続行があるときはcontを返す</td>    </tr>    <tr>      <td align='left' valign='top'>L</td>      <td>:指定区切り文字までの文字列リスト</td>    </tr>  </tbody></table>"; hash["text"]="指定入力ストリームから指定区切り文字までの文字列を返します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-see('queen.pl',S),repeat,get_chars_list(S,10,X,L).<br>S       = fp_7398d20,<br>X       = cont,<br>L       = [47,42,32,32,32,81,85,69,69,78,46,80,76,32,32,32,42,47];<br>S       = fp_7398d20,<br>X       = cont,<br>L       = [];<br>S       = fp_7398d20,<br>X       = cont,<br>L       = [58,45,32,109,111,100,117,108,101,32,113,117,101,・・・];<br><br>           ・<br>　　　　　 ・<br><br>S       = fp_b8e568,<br>X       = end,<br>L       = []"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="470"; hash["name"]="write_list/1"; hash["common"]=""; hash["format"]="write_list(+L)"; hash["argument"]="L:出力するリストの要素"; hash["text"]="リストの要素を標準出力します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-write_list([a,1,b(c),[1,2]]).<br>a1b(c)[1,2]"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="write_listnl/1"; azlist.push(hash);
var hash={}; hash["id"]="471"; hash["name"]="write_listnl/1"; hash["common"]=""; hash["format"]="write_listnl(+L)"; hash["argument"]="L:出力するリストの要素"; hash["text"]="リストの要素を標準出力をし、最後に改行を出力します。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="| ?-write_listnl([a,1,b(c),[1,2]]).<br>a1b(c)[1,2]"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="write_list/1"; azlist.push(hash);
var hash={}; hash["id"]="472"; hash["name"]="rexpl/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="非決定性述語。バックトラックしながら、検索解をかえします。<br>rexpl/3 は、rexpl/6の前3引数、rexpl/4は前4引数、rexpl/5は前５引数のみの述語です。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="473"; hash["name"]="rexpl/4"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="非決定性述語。バックトラックしながら、検索解をかえします。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="474"; hash["name"]="rexpl/5"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="非決定性述語。バックトラックしながら、検索解をかえします。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="475"; hash["name"]="rexpl/6"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="非決定性述語。バックトラックしながら、検索解をかえします。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="476"; hash["name"]="pattern_compile/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="第一引数のパターンをコンパイルし第二引数に返します。<br>パターンを繰り返し利用するときに最初に一回のみ使います。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="477"; hash["name"]="rexpl_search/6"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]=""; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="478"; hash["name"]="findall/3"; hash["common"]="ISO"; hash["format"]="findall(+Var,+Goal,-Var)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Var</td>      <td>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign='top'>Goal</td>      <td>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign='top'>Var</td>      <td>:ゴールの全ての解のリスト</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合を返します。<br>ゴールの実行が一度でも成功しなかった場合は、Var値は空リストになります。<br>実行した結果のソートは行われません。また、この述語は決定的述語です。"; hash["reference"]="拡張機能述語（１）editor,setof,grammar,utility"; hash["sample"]="5クイーンの解を求める述語をqueen(5,X)とすると、その全解<br>を求めて表示させるには以下のようにします。<br><br>| ?-queen(5,X),write(X),nl,fail.<br>[2,4,1,3,5]<br>[3,1,4,2,5]<br>[1,3,5,2,4]<br>[2,5,3,1,4]<br>　　・<br>　　・<br>no<br><br>ゴールを実行した解をリスト化するときは<br><br>| ?-findall(X,queen(5,X),L).<br>X       = X,<br>L       = [[2,4,1,3,5],[3,1,4,2,5],[1,3,5,2,4],[2,5,3,1,4],・・]]"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]="setof/3<br>setof/4<br>bagof/3"; azlist.push(hash);
var hash={}; hash["id"]="479"; hash["name"]="get_param/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（２）CGI"; hash["sample"]=""; hash["genre"]="32"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="480"; hash["name"]="html_call/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（２）CGI"; hash["sample"]=""; hash["genre"]="32"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="481"; hash["name"]="html_tmplate/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（２）CGI"; hash["sample"]=""; hash["genre"]="32"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="482"; hash["name"]="html_tmplate/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（２）CGI"; hash["sample"]=""; hash["genre"]="32"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="483"; hash["name"]="odbc_open/3"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="484"; hash["name"]="odbc_close/0"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]="現在接続されている全てのODBCコネクションをクローズする。<br><br>★なお、前記の述語の部品を構成する次のものもPublicとなっている。SQL処理の間に別の処理をはさむ必要があったときなどに利用できる。仕様詳細はソースコード（odbc_prolog.pl）参照のこと。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="485"; hash["name"]="select_each/3"; hash["common"]="Win"; hash["format"]="select_each(-取得結果リスト,+SQL識別子,+SQL文の変数充当データリスト). "; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>取得結果リスト:</td>      <td nowrap>SERECT文の場合、取得データがリストで返る</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>SQL識別子:</td>      <td nowrap>sql_statement/3 を特定する識別子</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>SQL文の変数充当データリスト:</td>      <td nowrap>SQL文中の変数に充当するデータ</td>    </tr>  </tbody></table>"; hash["text"]="SQL文を実行する。非決定性述語。バックトラックにより次解を返す。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="486"; hash["name"]="select_each/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="487"; hash["name"]="select_each/6"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="488"; hash["name"]="fetch_one/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="489"; hash["name"]="is_null/1"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]="引数である該当取得データがnullの時に成功する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="490"; hash["name"]="sql_cancels/1"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]="指定SQL識別子の問い合わせをキャンセルする。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="491"; hash["name"]="exec_direct/2"; hash["common"]="Win"; hash["format"]="exec_direct(+SQL識別子,+SQL文の変数充当データリスト)."; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>SQL識別子</td>      <td>:sql_statement/3 を特定する識別子</td>    </tr>    <tr>      <td align='left' valign='top'>SQL文の変数充当データリスト</td>      <td align='left' valign='top'>:SQL文中の変数に充当するデータ</td>    </tr>  </tbody></table>"; hash["text"]="結果取得をともなわないSQL文(insert,delete,dorp など)を実行する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="492"; hash["name"]="exec_directs/3"; hash["common"]="Win"; hash["format"]="exec_directs(+SQL識別子, 変数充当データリストのリスト,-エラーリスト)."; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SQL識別子</td>      <td nowrap>:sql_statement/3 を特定する識別子</td>    </tr>    <tr>      <td align='left' nowrap>SQL文の変数充当データリスト</td>      <td nowrap>:SQL文中の変数に充当するデータ</td>    </tr>    <tr>      <td align='left' nowrap>エラーリスト</td>      <td nowrap>実行エラーとなった変数充当データリストのリスト</td>    </tr>  </tbody></table>"; hash["text"]="結果取得をともなわないSQL文(insert,delete)を複数の充当値で実行する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="493"; hash["name"]="exec_directs_pre/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="494"; hash["name"]="exec_directs_post/2"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="495"; hash["name"]="exec_directs_main/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="496"; hash["name"]="sql_exec_direct/2"; hash["common"]="Win"; hash["format"]="sql_exec_direct(+Stmt, +SQLString)"; hash["argument"]=""; hash["text"]="指定したSQL文ハンドルで、指定したSQL文を直接実行する。<br>SQLStringは、アトムか文字列で指定する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_exec_direct(Stmt, \&quot;delete sales where ord_date = &#39;2002-04-23&#39;\&quot;)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="497"; hash["name"]="sql_free_param/1"; hash["common"]="Win"; hash["format"]="sql_free_param(+Param)"; hash["argument"]=""; hash["text"]="指定した一個のパラメタの領域を開放する。<br>そのパラメタは使用できなくなる。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_free_param(X)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="498"; hash["name"]="sql_free_params/1"; hash["common"]="Win"; hash["format"]="sql_free_params(+ParamsList)"; hash["argument"]=""; hash["text"]="指定したリストの全ての要素のパラメタの領域を開放する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_free_params([P1, P2, P3])."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="499"; hash["name"]="sql_get_param/2"; hash["common"]="Win"; hash["format"]="sql_get_param(+Param, -Value)"; hash["argument"]=""; hash["text"]="指定したパラメタの値を取得する。<br><br>パラメタがsql_c_char型のときは値はアトムになる。<br>sql_c_date型のときは、三個の要素をもったリスト([Year, Month, Day])になる。<br>sql_c_timestamp型のときは、七個の要素をもったリストになる。<br>([Year, Month, Day, Hour, Minute, Second, Fraction])"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_get_param(P, V). %% ==> V = 10.6"; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="500"; hash["name"]="sql_set_param/2"; hash["common"]="Win"; hash["format"]="sql_set_param(+Param, +Value)"; hash["argument"]=""; hash["text"]="指定したパラメタの値をセットする。<br><br>例: sql_set_param(P, 200).<br><br>値の型については、sql_get_param/2の説明を参照。<br>但し、パラメタがsql_c_char型のときには、アトムではなく、<br>文字列(AZ-Prologでは整数のリスト)で指定しても良い。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="501"; hash["name"]="sql_select/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="502"; hash["name"]="sql_select_list/4"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="503"; hash["name"]="sql_select_assert/4"; hash["common"]="Win"; hash["format"]="sql_select_assert(+Stmt, +ColTypeList, +ColLengthList, +PredName)"; hash["argument"]=""; hash["text"]="指定したSQL文ハンドル(Stmt)を実行し、その検索結果の全ての行に対して、<br>述語名がPredNameの節をassertする。<br>ColTypeListはStmtにバインドするカラムの型のリストであり、ColLengthListは<br>カラムのサイズのリストである。(sql_bind_col/5参照)"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_select_assert(Stmt,<br>[sql_c_char, sql_c_char, sql_c_timestamp, sql_c_long],<br>[4, 20, _, _], sales).<br>%% ==><br>sales(&#39;6380&#39;, &#39;6871&#39;, [1994,9,14,0,0,0,0], 5).<br>sales(&#39;7131&#39;, &#39;D4482&#39;, [2001,3,11,0,0,0,0], 20)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="504"; hash["name"]="sql_select_assert_limit/1"; hash["common"]="Win"; hash["format"]="sql_select_assert_limit(+LimitNum)"; hash["argument"]=""; hash["text"]="sql_select_assert/4でassertする個数をLimitNum個に制限する。<br>無制限にするときは、LimitNumに-1を指定する。<br>(デフォルトは無制限)"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_select_assert_limit(30)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="505"; hash["name"]="sql_error_info/1"; hash["common"]="Win"; hash["format"]="sql_error_info(-Info)"; hash["argument"]=""; hash["text"]="ODBC関数の実行が正常終了しなかったとき、<br>そのエラーに関する情報文字列をアトムで返す。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_error_info(S). %% ==> S = &#39;SQLBindCol: ......&#39;"; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="506"; hash["name"]="sql_alloc_handle/3"; hash["common"]="Win"; hash["format"]="sql_alloc_handle(+HT, +InHandle, -OutHandle)"; hash["argument"]=""; hash["text"]="指定したハンドル型(HT)のハンドルを生成して返す。<br>InHandleはハンドル値またはsql_null_handleアトムを指定する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_alloc_handle(sql_handle_stmt, DBC, Stmt)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="507"; hash["name"]="sql_alloc_env/1"; hash["common"]="Win"; hash["format"]="sql_alloc_env(-Env)"; hash["argument"]=""; hash["text"]="環境ハンドルを生成する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_alloc_env(Env)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="508"; hash["name"]="sql_alloc_connect/2"; hash["common"]="Win"; hash["format"]="sql_alloc_connect(+EnvHandle, -DBCHandle)"; hash["argument"]=""; hash["text"]="DB接続ハンドルを生成する。<br>最初の引数で環境ハンドルを指定する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_alloc_connect(Env, DBC)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="509"; hash["name"]="sql_bind_col/5"; hash["common"]="Win"; hash["format"]="sql_bind_col(+Stmt, +ColNum, +CT, -Param, +Size)"; hash["argument"]=""; hash["text"]="パラメータを生成して、指定したSQL文ハンドルの指定した番号のカラムに<br>バインドする。生成されたパラメタがParam引数にセットされる。<br>ColNumはカラム番号(1から始まる)。<br>CTはパラメタのCデータ型アトム。<br>Sizeはsql_c_char型のときにだけ意味がある。他の場合は不定値でもよい。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_bind_col(Stmt, 2, sql_c_char, OrderNum, 20)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="510"; hash["name"]="sql_bind_parameter/9"; hash["common"]="Win"; hash["format"]="sql_bind_parameter(+Stmt, +Num, +IOT, +CT, +SQLT, +ColSize, +DecimalDigit,-Param, +Size)"; hash["argument"]=""; hash["text"]="パラメタを生成して、指定したSQL文ハンドルの指定した番号のパラメタとして<br>バインドする。生成されたパラメタがParam引数にセットされる。<br>Numはパラメタの番号(1から始まる)。<br>CTはパラメタのCデータ型アトム。<br>SQLTはSQLデータ型アトム。<br>Sizeはsql_c_char型のときにだけ意味がある。他の場合は不定値でもよい。<br>ColSize, DecimalDigitについては、ODBC関数のSQLBindParameter()を参照。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_bind_parameter(Stmt, 1, sql_param_input, sql_c_date, sql_char,<br>0, 0, ParamOrdDate, 0)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="511"; hash["name"]="sql_connect/4"; hash["common"]="Win"; hash["format"]="sql_connect(+DBCHandle, +DSN, +UserName, +Password)"; hash["argument"]=""; hash["text"]="指定したDB接続ハンドルで、データーベースに接続する。<br>DSN, UserName, Passwordはアトムまたは文字列で指定する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_connect(DBC, &#39;AnyDSN&#39;, &#39;yamamoto&#39;, &#39;aaaaaaaaaaaaaa&#39;)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="512"; hash["name"]="sql_disconnect/1"; hash["common"]="Win"; hash["format"]="sql_disconnect(+DBCHandle)"; hash["argument"]=""; hash["text"]="指定したDB接続ハンドルの接続を切る。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_disconnect(DBC)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="513"; hash["name"]="sql_free_handle/2"; hash["common"]="Win"; hash["format"]="sql_free_handle(+HT, +Handle)"; hash["argument"]=""; hash["text"]="指定したハンドルを開放する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_free_handle(sql_handle_env, Env)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="514"; hash["name"]="sql_free_connect/1"; hash["common"]="Win"; hash["format"]="sql_free_connect(+DBCHandle)"; hash["argument"]=""; hash["text"]="指定したDB接続ハンドルを開放する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_free_connect(DBC)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="515"; hash["name"]="sql_execute/1"; hash["common"]="Win"; hash["format"]="sql_execute(+Stmt)"; hash["argument"]=""; hash["text"]="指定したSQL文ハンドルを実行する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_execute(Stmt)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="516"; hash["name"]="sql_cancel/1"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]="指定SQL識別子の問い合わせをキャンセルする"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="517"; hash["name"]="sql_end_tran/3"; hash["common"]="Win"; hash["format"]="sql_end_tran(+HT, +Handle, +CompletionType)"; hash["argument"]=""; hash["text"]="指定したハンドルで、指定したタイプでトランザクションを終了する。<br>CompletionTypeは、sql_commitかsql_rollbackのどちらか。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_end_tran(sql_handle_dbc, DBC, sql_commit).<br>"; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="518"; hash["name"]="sql_fetch/2"; hash["common"]="Win"; hash["format"]="sql_fetch(+Stmt, -Result)"; hash["argument"]=""; hash["text"]="実行されたSQL文ハンドルの一行分の結果を取得する。<br>結果の値は、sql_bind_colされたパラメタにセットされる。<br>Resultには、戻り値(RV)として定義されたアトムのどれかが返される。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_fetch(Stmt, Result). %% ==> Result = sql_succeeded"; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="519"; hash["name"]="sql_prepare/2"; hash["common"]="Win"; hash["format"]="sql_prepare(+Stmt, +SQLString)"; hash["argument"]=""; hash["text"]="指定したSQL文ハンドルで、指定したSQL文の実行を準備する。<br>SQLStringは、アトムか文字列で指定する。"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]="sql_prepare(Stmt, \&quot;select stor_id, ord_num, qty from sales where ord_date = ?\&quot;)."; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="520"; hash["name"]="sql_row_count/2"; hash["common"]="Win"; hash["format"]="sql_row_count(+Stmt, -Count)"; hash["argument"]=""; hash["text"]="指定したSQL文ハンドルの実行結果として影響を受けた行数を返す。<br>(INSERT, UPDATEのときのみ)<br>"; hash["reference"]="拡張機能述語（３）ODBC"; hash["sample"]=" sql_row_count(Stmt, Row). %% ==> Row = 7"; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="521"; hash["name"]="onig_pattern_error_info/2"; hash["common"]=""; hash["format"]="onig_pattern_error_info(+PATTERN, -ERR)"; hash["argument"]="PATTERN : 正規表現パターン (アトム/文字列)<br>ERR : エラー情報のアトム<br>"; hash["text"]="不正な正規表現パターンのエラー情報取得。"; hash["reference"]=""; hash["sample"]="| ?-onig_pattern_error_info(&#39;(&#39;, ERR).<br>ERR     = end pattern with unmatched parenthesis<br>yes<br>| ?-"; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="522"; hash["name"]="onig_pattern_compile/2"; hash["common"]=""; hash["format"]="onig_pattern_compile(+PATTERN, -REGEX)"; hash["argument"]="PATTERN:　正規表現パターン (アトム/文字列)<br>REGEX:　作成された正規表現オブジェクト"; hash["text"]="正規表現オブジェクトを作成する。<br>不正なパターンを指定すると失敗する。 "; hash["reference"]=""; hash["sample"]="| ?-onig_pattern_compile(&#39;^[a-z]+&#39;, REGEX).<br>REGEX   = 121237776<br>yes"; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="523"; hash["name"]="onig_pattern_compile/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（４）正規表現PKG「鬼車」"; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="524"; hash["name"]="onig_pattern_free/1"; hash["common"]=""; hash["format"]="onig_pattern_free(+REGEX)"; hash["argument"]="REGEX:　正規表現オブジェクト"; hash["text"]="使用しなくなった正規表現オブジェクトを開放する。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="525"; hash["name"]="onig_make_target_string/2"; hash["common"]=""; hash["format"]="onig_make_target_string(+STRING, -TARGET_STRING)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>STRING</td>      <td nowrap>:AZ-Prologの文字列(リスト)/アトム</td>    </tr>    <tr>      <td align='left' nowrap>TARGET_STRING</td>      <td nowrap>:正規表現ライブラリで対象とする文字列オブジェクト</td>    </tr>  </tbody></table>"; hash["text"]="検索対象文字列オブジェクトを作成する。<br><br>このライブラリはPrologの文字列を直接検索できないので、この述語によって<br>変換したものを作成する必要がある。<br><br>改行文字(列)の変換も同時に行われる。<br>&quot;&quot; ==> &quot;&quot;<br>31 ==> &quot;&quot; (31: AZ-Prologの改行コード)<br><br>対象文字列オブジェクトに対する操作、検索結果のcapture(捕獲)文字列に改行が<br>含まれる場合には、上記の改行コードの変換が行われたものが入っている。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="526"; hash["name"]="onig_free_target_string/1"; hash["common"]=""; hash["format"]="onig_free_target_string(+TARGET_STRING)"; hash["argument"]="TARGET_STRING: 検索対象文字列オブジェクト"; hash["text"]="検索対象文字列オブジェクトを開放する。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="527"; hash["name"]="onig_target_string_part/4"; hash["common"]=""; hash["format"]="onig_target_string_part(+TARGET_STRING, +START, +END, -PART_STRING) "; hash["argument"]="TARGET_STRING : 検索対象文字列オブジェクト<br>START : 開始位置 (先頭は0) バイト単位<br>END : 終了位置 (この位置の文字は含まれない) バイト単位<br>PART_STRING : 部分文字列 (AZ-Prologのリスト)"; hash["text"]="検索対象文字列オブジェクトの一部分を返す。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="528"; hash["name"]="onig_target_string_next_pos/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（４）正規表現PKG「鬼車」"; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="529"; hash["name"]="onig_target_string_length/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（４）正規表現PKG「鬼車」"; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="530"; hash["name"]="onig_search/7"; hash["common"]=""; hash["format"]="onig_search(+REGEX, +TARGET_STRING, +START, +END, -MSTART, -MEND, -CAPTURES)"; hash["argument"]="REGEX : 正規表現オブジェクト<br>TARGET_STRING : 検索対象文字列オブジェクト<br>START : 検索開始位置 (先頭は0) バイト単位<br>END : 検索終了位置 (文字列の終わりまでなら未定義でもよい) バイト単位<br>MSTART : マッチした文字列の開始位置 バイト単位<br>MEND : マッチした文字列の終了位置 バイト単位<br>CAPTURES : captureグループ(捕獲式集合)のcapture文字列のリスト"; hash["text"]="正規表現検索を実行。<br><br>全くマッチしなかった場合には、失敗する。<br>この述語は非決定性ではない。 <br>captureグループの中で、マッチしていないグループに対しては文字列ではなく&#39;non&#39;というアトムがセットされる。<br><br>例：<br>正規表現が &#39;(a+)|(b+)&#39;、文字列が \&quot;bbbb aaaa\&quot;の場合、(b+)のほうにマッチして返るので、(a+)にはマッチしない。<br>この場合、CAPTURESには、[non, [98,98,98,98]]がセットされる。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="531"; hash["name"]="onig_search_success/8"; hash["common"]=""; hash["format"]="onig_search_success(+REGEX, +TARGET_STRING, +START, +END, -MSTART, -MEND,-CAPTURES, -NEXT)"; hash["argument"]="REGEX : 正規表現オブジェクト<br>TARGET_STRING : 検索対象文字列オブジェクト<br>START : 検索開始位置 (先頭は0) バイト単位<br>END : 検索終了位置 (文字列の終わりまでなら未定義でもよい) バイト単位<br>CAPTURES : captureグループ(捕獲式集合)のcapture文字列のリスト<br><br>マッチしたとき<br>MSTART : onig_search/7と同じ<br>MEND : onig_search/7と同じ<br>NEXT : マッチした長さが0より大きいとき<br>--> MENDと同じ値<br>マッチした長さが0のとき<br>--> MENDの次の文字 (次の位置が文字列の範囲外なら、endアトム)<br><br>マッチしなかったとき<br>MSTART : nonアトム<br>MEND : nonアトム<br>NEXT : endアトム"; hash["text"]="正規表現検索を実行。<br>この述語は非決定性ではない。<br><br>マッチしなくても失敗しない。<br>マッチしたとき、次の開始位置を返すので、文字列全体に対して繰り返して実行するとき便利。<br><br>※NEXTで、MENDの位置を返すというのは、全てのマッチの可能性を調べるのであれば正しくない。<br>しかし現実の処理としてはこれで十分。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="532"; hash["name"]="cabocha_strerror/2"; hash["common"]=""; hash["format"]="cabocha_strerror(+CABOCHA, -ERR)"; hash["argument"]=""; hash["text"]="他のCaboCha述語を実行中にエラーが発生したとき、エラー内容を示す文字列をアトムにした値を返す。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="533"; hash["name"]="cabocha_new/2"; hash["common"]=""; hash["format"]="cabocha_new(-CABOCHA, +ARGS)"; hash["argument"]=""; hash["text"]="CaboChaインスタンスを作成して、それをCABOCHAに返す。<br>ARGSには、cabochaコマンドの引数と同様の値を指定する。 (型は、アトムのリスト)"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="534"; hash["name"]="cabocha_destroy/1"; hash["common"]=""; hash["format"]="cabocha_destroy(+CABOCHA)"; hash["argument"]=""; hash["text"]="CaboChaインスタンスを破棄/開放する。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="535"; hash["name"]="cabocha_sparse_tostr/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="536"; hash["name"]="cabocha_sparse_totree/3"; hash["common"]=""; hash["format"]="cabocha_sparse_totree(+CABOCHA, +STATEMENT, -RESULT_TREE)"; hash["argument"]=""; hash["text"]="あたえられた文(STATEMENT)を解析する。<br>STATEMENTは、アトムかリストである。<br>結果を木構造のオブジェクト(整数)として返す(RESULT_TREE)。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="537"; hash["name"]="cabocha_tree_size/2"; hash["common"]=""; hash["format"]="cabocha_tree_size(+RESULT_TREE, -SIZE)"; hash["argument"]=""; hash["text"]="木構造オブジェクトの要素数を返す。<br>要素数とは、文節数ではなく、形態素要素数である。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="538"; hash["name"]="cabocha_tree_get_token/3"; hash["common"]=""; hash["format"]="cabocha_tree_get_token(+RESULT_TREE, +AT, -TOKEN)"; hash["argument"]=""; hash["text"]="木構造オブジェクトのAT番目(0から要素数-1まで)の要素の情報をリスト(TOKEN)で返す。<br><br><TOKENの各情報><br>1: surface: 表層文字列 (アトム)<br>2: base 基本形 (アトム)<br>3: read 読み (アトム)<br>4: pos_list 　品詞情報 アトムリスト (最大8個まで)<br>5: cform 活用形 (アトム)<br>6: ctype 活用型 (アトム)<br>7: ne ？ 名詞に関する何かの情報 (B-ORGNIZATIONなど)<br>8: optional 付加情報 (アトム)<br>9: status ？ (整数)<br><br>上記の順番で、リストが作成される。<br>cform, ctype, ne, optionalについては、値がないときには、&#39;*&#39;が値として入る。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="539"; hash["name"]="cabocha_tree_get_chunk_list/2"; hash["common"]=""; hash["format"]="cabocha_tree_get_chunk_list(+RESULT_TREE, -CHUNK_LIST)"; hash["argument"]=""; hash["text"]="木構造オブジェクトから、文節情報/文節係り受け情報のリスト(CHUNK_LIST)を返す。<br>CHUNK_LISTの各要素はそれぞれ一個の文節に関する情報である。<br>文節の順序は、元の文に現れた順序のままである。<br><br>各文節情報は、以下の要素を持つリストである。<br><文節情報><br>1: link 係り先文節番号 (0から)<br>2: head 主辞形態素番号 (文節内、0から)<br>3: func 機能形態素番号 (文節内、0から)<br>4: rel 係り種別 (&#39;D&#39;: 依存)<br>5: score ？<br>6: feature_list 解析中、文節に付加された特性(アトム)のリスト<br>7: token_list 文節に含まれる形態素の情報のリスト<br>(個々の形態素情報は、cabocha_tree_get_token/3で返されるものと同じ)"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="540"; hash["name"]="mecab_new/2"; hash["common"]=""; hash["format"]="mecab_new(-MECAB, +ARGS)"; hash["argument"]=""; hash["text"]="MeCabインスタンスを作成して、それをMECABに返す。<br>ARGSには、mecabコマンドの引数と同様の値を指定する。 (型は、アトムのリスト)"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="541"; hash["name"]="mecab_strerror/2"; hash["common"]=""; hash["format"]="mecab_strerror(+MECAB, -ERR)"; hash["argument"]=""; hash["text"]="他のMeCab述語を実行中にエラーが発生したとき、エラー内容を示す文字列をアトムにした値を返す。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="542"; hash["name"]="mecab_destroy/1"; hash["common"]=""; hash["format"]="mecab_destroy(+MECAB)"; hash["argument"]=""; hash["text"]="MeCabインスタンスを破棄/開放する。"; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="543"; hash["name"]="mecab_sparse_tonode/4"; hash["common"]=""; hash["format"]="mecab_sparse_tonode(+MECAB,+STATEMENT,+NODE_FORM_NUM,-NODE_LIST)"; hash["argument"]=""; hash["text"]="あたえられた文(STATEMENT)を解析する。 結果をMeCabノードのリストとして返す(NODE_LIST)。ノード一個が一個の形態素に関する情報をもつ。 ただし、MeCabの特徴として、最初のノードは必ずBOSノードであり、最後は必ずEOSノードになる。<br>NODE_FORM_NUMはノードの中の情報量を指定するためのものである。 0から12までの整数を指定する。 ノードの値は複数の属性をもつので、それ自身がリストになっている。<br>(例外は、NODE_FORM_NUMを0に指定した場合のみ) "; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="544"; hash["name"]="mecab_nbest_init/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="545"; hash["name"]="mecab_nbest_next_tonode/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="546"; hash["name"]="mecab_nbest_end/0"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="mecab_nbest_init/2の終了処理。<br>必ず一回呼び出す必要がある。<br>(これは、Prologインターフェースの内部処理上必要なものである) "; hash["reference"]="拡張機能述語（５）MeCab,CaboCha"; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="547"; hash["name"]="and  /yfx"; hash["common"]=""; hash["format"]="I1 /\ I2、I1 and I2"; hash["argument"]="I1・I2:共に整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で整数値のビット毎(2進数表現したときの各桁毎)に論理積演算を行います。<br>なを、AZ-Prologの整数は補数表現の符号付きですから、最上位の桁が0になるか1になるかで符号が変わりますので、注意が必要です。<br>演算子の表現は /\ でも and でも全く同じ意味を持ちます。<br>ISOの　/\ /yfx　と同じです。"; hash["reference"]=""; hash["sample"]="| ?-X is 5 /\ 3.<br>X = 1<br>yes<br>| ?-X is 5 and 3.<br>X = 1<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>\/  /yfx<br>or  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="548"; hash["name"]="or  /yfx"; hash["common"]=""; hash["format"]="I1 \/ I2、I1 or I2"; hash["argument"]="I1・I2:共に整数値、または整数値の数式に限る。"; hash["text"]="is  /xfxなどの数式を評価する述語の引数の中で整数値のビット毎(2進数表現したときの各桁毎)に論理和演算を行います。<br>なを、AZ-Prologの整数は補数表現の符号付きですから、最上位の桁が0になるか1になるかで符号が変わりますので、注意が必要です。<br>演算子の表現は \/ でも or でも全く同じ意味を持ちます。<br>ISOの\/  /yfxと同じです。"; hash["reference"]=""; hash["sample"]="| ?-X is 5 \/ 3.<br>X = 7<br>yes<br>| ?-X is 5 or 3.<br>X = 7<br>yes"; hash["genre"]="11"; hash["used"]="true"; hash["incident"]="is  /xfx<br>/\  /yfx<br>and  /yfx"; azlist.push(hash);
var hash={}; hash["id"]="549"; hash["name"]="=/=  /xfx"; hash["common"]=""; hash["format"]="N1 =\= N2、N1 =/= N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1とN2の双方を評価した値が等しくない場合に成功し、それ以外の場合は失敗します。<br>ISOの=\=  /xfx と同じです。"; hash["reference"]=""; hash["sample"]="| ?-1+1 =\= 1.<br>yes<br>| ?-1+1 =/= 1.<br>yes<br>| ?-1.0 =/= 1.<br>no"; hash["genre"]="14"; hash["used"]="true"; hash["incident"]="=:=  /xfx<br><  /xfx<br>>  /xfx<br>=<  /xfx<br>>=  /xfx<br>=\=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="550"; hash["name"]="/==  /xfx"; hash["common"]=""; hash["format"]="T1 /== T2、T1 \== T2、どちらでも同じ"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1とT2とが等しくない場合に成功し、それ以外の場合は失敗します。<br>==   /xfx とまったく反対の結果になります。<br>項の比較方法は ==   /xfx と同じです。(==   /xfx 参照)<br>ISOの　\==  /xfx と同じです。"; hash["reference"]=""; hash["sample"]="| ?-abc /== abc.<br>no<br>| ?-a(1,2) /== a(1,2).<br>no<br>| ?-1+2 /== 1+2.<br>no<br>| ?-1+2 /== 3.<br>yes<br>| ?-1+2 /== 2+1.<br>yes<br>| ?-&quot;abc&quot; /== [97,98,99].<br>no"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3<br>\==  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="551"; hash["name"]="neuron_layer/6"; hash["common"]=""; hash["format"]="neuron_layer(+I1,+I2,+I3,+I4,+I5,+I6)"; hash["argument"]="I1:<br>I2:解析データ名<br>I3:出力ファイル名<br>I4:入力層ニューロンの数<br>I5:中間層ニューロンの数<br>I6:出力層ニューロンの数"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="552"; hash["name"]="azpt_version/1"; hash["common"]=""; hash["format"]="azpt_version(-A)"; hash["argument"]="A:Torchのヴァージョン情報"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="553"; hash["name"]="azpt_torch_build/2"; hash["common"]=""; hash["format"]="azpt_torch_build(-A1,-A2)"; hash["argument"]="A1:実行時コマンドラインで指定された「OpenBLAS/acml」の設定値<br>A2:実行時コマンドラインで指定された「single/multi」の設定値"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="554"; hash["name"]="azpt_allocate_training_data/4"; hash["common"]=""; hash["format"]="azpt_allocate_training_data(+I1,+I2,+I3,-T)"; hash["argument"]="I1:解析データ節の個数（clause/2で第2引数に返された値）<br>I2:入力層ニューロンの数<br>I3:出力層ニューロンの数<br>T:トレーニングデータ"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="clause/2<br>azpt_reset_training_data_pointer/1<br>azpt_initialize_mlp/4<br>load_data/1"; azlist.push(hash);
var hash={}; hash["id"]="555"; hash["name"]="azpt_reset_training_data_pointer/1"; hash["common"]=""; hash["format"]="azpt_reset_training_data_pointer(+T)"; hash["argument"]="T:トレーニングデータ<br>（azpt_allocate_training_dataで第4引数に返された値）"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_allocate_training_data/4<br>load_data/1"; azlist.push(hash);
var hash={}; hash["id"]="556"; hash["name"]="azpt_initialize_mlp/4"; hash["common"]=""; hash["format"]="azpt_initialize_mlp(+I1,+I2,+I3,-AR)"; hash["argument"]="I1:typenumで第2引数に返された値（batchsize）<br>I2:Torch実行モジュールのディレクトリ<br>I3:トレーニングデータ<br>AR:ニューロンオブジェクト"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="typenum/2<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_add_transfer_layer/2<br>azpt_prepare_learn/1<br>azpt_turn_learning_cycle/2<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="557"; hash["name"]="azpt_define_parameter/3"; hash["common"]=""; hash["format"]="azpt_define_parameter(+AR,+I1,+I2)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値<br>I1:固定値「&#39;learnRate&#39;」<br>I2:格付け閾値又はラーニングレート（bench_param.pl又は実行時コマンドラインで指定）<br>   「classification_threshold」、「learning_rate」"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_add_transfer_layer/2<br>azpt_prepare_learn/1<br>azpt_turn_learning_cycle/2<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="558"; hash["name"]="azpt_add_linear_layer/4"; hash["common"]=""; hash["format"]="azpt_add_linear_layer(+AR,+I1,+I2,+I3)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値<br>I1:固定値「&#39;nn.Linear(%d, %d)&#39;」<br>I2:入力層ニューロンの数<br>I3:出力層ニューロンの数"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_transfer_layer/2<br>azpt_prepare_learn/1<br>azpt_turn_learning_cycle/2<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="559"; hash["name"]="azpt_add_transfer_layer/2"; hash["common"]=""; hash["format"]="azpt_add_transfer_layer(+AR,+I)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値<br>I:固定値「&#39;nn.Sigmoid()&#39;」"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_prepare_learn/1<br>azpt_turn_learning_cycle/2<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="560"; hash["name"]="azpt_prepare_learn/1"; hash["common"]=""; hash["format"]="azpt_prepare_learn(+AR)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_turn_learning_cycle/2<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="561"; hash["name"]="azpt_turn_learning_cycle/2"; hash["common"]=""; hash["format"]="azpt_turn_learning_cycle(+AR,-N)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値<br>N:"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_save_mlp/2<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="562"; hash["name"]="azpt_save_mlp/2"; hash["common"]=""; hash["format"]="azpt_save_mlp(+I,+AR)"; hash["argument"]="I:出力ファイル名<br>AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_finalize_mlp/1<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="563"; hash["name"]="azpt_finalize_mlp/1"; hash["common"]=""; hash["format"]="azpt_finalize_mlp(+AR)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4<br>azpt_free_training_data/1"; azlist.push(hash);
var hash={}; hash["id"]="564"; hash["name"]="azpt_free_training_data/1"; hash["common"]=""; hash["format"]="azpt_free_training_data(+AR)"; hash["argument"]="AR:ニューロンオブジェクト azpt_initialize_mlp第4引数で返された値"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]="azpt_initialize_mlp/4<br>azpt_allocate_training_data/4<br>randinit/1<br>azpt_define_parameter/3<br>azpt_add_linear_layer/4"; azlist.push(hash);
var hash={}; hash["id"]="565"; hash["name"]="azpt_get_timer_values/3"; hash["common"]=""; hash["format"]="azpt_get_timer_values(-A1,-A2,-A3)"; hash["argument"]="A1:リアルタイム<br>A2:ユーザタイム<br>A3:システムタイム"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="566"; hash["name"]="azpt_load_mlp/4"; hash["common"]=""; hash["format"]="azpt_load_mlp(+I1,+I2,+I3,-AR)"; hash["argument"]="I1:typenumで第2引数に返された値「バッチサイズ」<br>I2:Torch実行モジュールのディレクトリ<br>I3:azpt_save_mlp第1引数で指定された出力ファイル名<br>AR:ニューロンオブジェクト"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]="typenum/2<br>azpt_save_mlp/2"; azlist.push(hash);
var hash={}; hash["id"]="567"; hash["name"]="azpt_feed_input_data/3"; hash["common"]=""; hash["format"]="azpt_feed_input_data(+AR,+I,-O)"; hash["argument"]="AR:ニューロンオブジェクト<br>I:<br>O:"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="29"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="568"; hash["name"]="abolish/2"; hash["common"]=""; hash["format"]="abolish(+A/+I) abolish(+A,+I)"; hash["argument"]="A:削除する述語の述語名<br>I:削除する述語のアリティ"; hash["text"]="引数で指定された述語名・アリティの述語(引数で指定された述語名・アリティを頭部とする定義節)のすべてをヒープ領域から削除します。<br>現在の動作モードがユーザモードの場合はユーザ述語(ユーザ側の定義節)しか削除できません。<br>システムモードの場合はユーザ述語(ユーザ側の定義節)に加えてシステム述語(システム側の定義節)が指定できます。<br>どちらの場合でも「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」を指定した場合はエラー(builtin or C pred exist)になります。"; hash["reference"]=""; hash["sample"]="| ?-listing.<br>a(1).<br>a(2).<br>a(3).<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>b(1).<br>b(2).<br>yes<br>| ?-abolish(a,1).<br>yes<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>b(1).<br>b(2).<br>yes<br>| ?-abolish(b/1).<br>yes<br>| ?-listing.<br>a(1,1) :- write(abc),nl.<br>a(1,2) :- write(def),nl.<br>a(2,1) :- write(ghi),nl.<br>yes"; hash["genre"]="16"; hash["used"]="true"; hash["incident"]="retract/1<br>retract/3<br>s_new/0"; azlist.push(hash);
var hash={}; hash["id"]="569"; hash["name"]="get_char/2"; hash["common"]="ISO"; hash["format"]="get_char(-A), get_char(+S,-A)"; hash["argument"]="A:入力した文字がユニファイされる<br>S:入力ストリームがユニファイされる"; hash["text"]="get_char/2は open/3でオープンされた任意のストリームから1文字読み込みます。<br>get_char/1は現在の入力ストリームから一文字読み込んでユニファイします。<br>get/2のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。"; hash["reference"]="get_char/1は現在の入力ストリームから一文字読み込んでユニファイします。<br>get_char/2は open/3でオープンされた任意のストリームから1文字読み込みます。<br>get/1 のようにキャラクタ(ASCII)コードの32以下を読み飛ばすことはしません。"; hash["sample"]="<span style='color: #FFFF00'>testというファイルの中身が ab のとき</span><br><br>| ?-see(test),get_char(X1),get_char(X2),seen.<br>X1      = a,<br>X2      = b<br>yes<br><br><br><span style='color: #FFFF00'>abc.txtというファイルの中身が ab のとき</span><br><br>| ?-open('abc.txt',read,S),get_char(S,X1),get_char(S,X2),close(S).<br>S       = fp_4dbea60,<br>X1      = a,<br>X2      = b<br>yes"; hash["genre"]="5"; hash["used"]="true"; hash["incident"]="get/1<br>get0/1<br>get1/2<br>get_code/2<br>see/1<br>told/0<br>open/3<br>put/1<br>put_code/1<br>get_code/1"; azlist.push(hash);
var hash={}; hash["id"]="570"; hash["name"]="statistics/2"; hash["common"]=""; hash["format"]="statistics(+key,-[I,_])"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>key</td>      <td>:現時点ではruntimeのみ</td>    </tr>    <tr>      <td align='left' valign='top'>[I,_]</td>      <td>:ミリ秒単位の整数値</td>    </tr>  </tbody></table>"; hash["text"]="AZ-Prologが起動してからの積算稼動時間(ミリ秒単位)を整数値で取得します。<br><br>s_sleep/1 などのＯＳでの処理時間などは含まれません。"; hash["reference"]=""; hash["sample"]="| ?-X is cputime,s_sleep(1000),Y is cputime-X.<br>X   = 1390882109.18138,<br>Y   = 1.00031018257141<br>yes<br><br>| ?-statistics(runtime,[B|_]),s_sleep(1000),statistics(runtime,[E|_]),T is E-B.<br>B    = 80,<br>_1   = [_41],<br>E    = 80,<br>_3   = [_45],<br>T    = 0<br>yes<br><br>| loop(0):-!.<br>| loop(N):- M is N-1,loop(M).<br>| ?-statistics(runtime,[B|_]),loop(9999999),statistics(runtime,[E|_]),T is E-B.<br>B    = 96,<br>_1   = [_39],<br>E    = 1532,<br>_3   = [_34330],<br>T    = 1436<br>yes"; hash["genre"]="21"; hash["used"]="true"; hash["incident"]="cputime/0<br>atommax/0<br>atomused/0<br>heapmax/0<br>heapused/0<br>localmax/0<br>localused/0<br>globalmax/0<br>globalused/0"; azlist.push(hash);
var hash={}; hash["id"]="571"; hash["name"]="freeze/2"; hash["common"]=""; hash["format"]="freeze(?T,+Goal)   "; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>T</td>      <td width=&quot;454&quot; nowrap>:未代入変数、任意の項</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Goal</td>      <td nowrap>:ゴール(列）</td>    </tr>  </tbody></table>"; hash["text"]="(1) Tが未代入変数のとき、将来Tに値が束縛されたときに実行するGoalを設定します。<br>(2) Tが値を持っているときは直ちGoalを実行します。<br>(3) Goalを順次追加することができます。<br>   ここでは追加されたGoalを含む全体をゴール列と呼びます。<br>(4) freeze/2が呼び出された節より前にバックトラックしたときは、設定が解除されます。<br>(5) ゴール列の最後は常に述語&quot;!&quot;がつきます。<br>    すなわち実行されるゴール列が終了するときは決定性です。<br>    ただし、ゴール列の間では非決定です。<br>(6) Goalが変数の場合も成功しますが、呼び出されるときには値が決まっていないとエラーになります。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?- freeze(X,(write(first),nl)),write(second),nl,X=1.<br>second<== write(second)が評価されるときには、変数Xは未代入です。<br>first              <span style='color: #FFFF00'><== 変数Xが値を持ったときに設定されたゴールが実行されます。</span><br>X = 1<br>yes<br>(2)<br>| ?- X=1,freeze(X,(write(first),nl)),write(second),nl.<br>first              <span style='color: #FFFF00'><== Xがすでに値をもっているので直ちに設定ゴールが実行されます。</span><br>second <br>X = 1<br>yes<br>(3)<br>| ?- freeze(X,(write(first),nl)),freeze(X,(write(second),nl)),X=1.<br>first              <span style='color: #FFFF00'><== 変数Xが値を持ったときに設定されたゴール列が次々に実行されます。</span><br>second             <br>X = 1<br>yes<br>(4)<br>| ?- freeze(X,(write(first),nl)),( freeze(X,(write(second),nl)),fail ; true ),X=1.<br>first              <span style='color: #FFFF00'><== 二番目のfreeze/2を含むゴール列がFailしたので、取り消されています。</span><br>X = 1<br>yes<br>(5)<br>| ?-freeze(X,(member(A,[a,b,c]))),freeze(X,(write(A),nl)),X=1,fail.<br>a<br>no<br>| ?-freeze(X,(member(A,[a,b,c]))),freeze(X,(write(A),nl)),freeze(X,fail),X=1.<br>a<br>b<br>c<br>no<br>(6)<br>| ?-freeze(X,L),X=1.           <br>Illegal Goal     ---- Backtrace<br>(freeze(1,L_13),=(1,1)) ?-<br>| ?-freeze(X,L),L=write(a),X=1.<br>a<br>X  = 1,<br>L  = write(a)<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="572"; hash["name"]="frozen/2"; hash["common"]=""; hash["format"]="frozen(?T,-Goal)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>T</td>      <td width=&quot;454&quot; nowrap>:未代入変数、任意の項</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>Goal</td>      <td nowrap>:ゴール(列）</td>    </tr>  </tbody></table>"; hash["text"]="(1) T が未代入変数でfreeze されたゴールがある場合、これをGoal と単一化します。<br>(2) その他の場合、Goal とtrueを単一化します。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?-freeze(X,member(X,[a,b,c])),frozen(X,G).<br>X       = X,<br>G       = member(_24,[a,b,c]),!<br>yes<br>| ?-freeze(X,member(f(X),[f(a),d(b),c])),freeze(X,write(X)),frozen(X,G).<br>X       = X,<br>G       = member(f(_38),[f(a),d(b),c]),write(_38),!<br>yes<br>(2) <br>| ?-freeze(X,write(a)),X=1,frozen(X,L).<br>a<br>X       = 1,<br>L       = true<br>yes<br>| ?-frozen(X,L).<br>X       = X,<br>L       = true<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="573"; hash["name"]="in /xfx"; hash["common"]=""; hash["format"]="?T1 in +T2"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>T1</td>      <td>:[1]未代入変数 または項<br>          [2] T1:[1]を要素とするリスト <br></td>    </tr>    <tr>      <td align='left' valign='top'>T2</td>      <td>:[1] T1が束縛されるべき項（T2:[2]の表現を含む）の列挙リスト、<br>         [2] またはT1が束縛されるべき整数の範囲表現　N1..N2 (N1,N2は整数でN1=‹N2) </td>    </tr>  </tbody></table>"; hash["text"]="(1) T1が値を持つとき、 T1はT2の要素のいずれかであるとき成功します。<br>(2) T1が未代入変数のとき、T1はT2の要素のいずれかであると制約されます。<br>     将来T1が値を持つとき、この制約の範囲であれば成功し、範囲外であれば失敗します。<br>     T1がリストの場合、個々の要素について 1),2) が摘要されます。<br>(3) 複数の制約を受けるとき、それらの制約の積となります。<br>(4) 制約によって値が一意にきまるときは、T1の値は決定し成功します。<br>(5) 矛盾する制約が与えられたときは失敗します。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?- 3 in 0..10.<br>yes<br>| ?- b in [a,b,c,1..10,d(X)].<br>X       = X<br>yes<br>(2)<br>| ?- X in 0..9.<br>X   = X<br>yes<br>| ?- X in 0..9,X=3.<br>X   = 3 <br>yes<br>| ?- X in 0..9,X=20.<br>no<br>| ?- X in [a,b,c,d], member(X,[z,c,d,e,f]).<br>X   = c<br>yes<br>| ?-[X,Y] in 0..9,X=3.<br>X       = 3,<br>Y       = Y<br>yes<br>(3)<br>| ?- X in 0..9,X in 8..10.      <span style='color: #FFFF00'><==  X in [8,9] となります。</span><br>X   = X<br>yes<br>(4)<br>| ?- X in 0..9,X in 9..10.      <span style='color: #FFFF00'><== 値が二つの制約の積により一意化します。</span><br>X   = 9<br>yes<br>(5)<br>| ?- X in 0..9,X in 15..16.     <span style='color: #FFFF00'><== Xのとるべき値はないので失敗します。</span><br>no<br>(6) 次の二つは異なることに注意してください。<br>| ?- X in 0..4,X in 5..7.       <span style='color: #FFFF00'><== X は0,1,2,3,4 かつ X は5,6,7。</span><br>no<br>| ?- X in [0..4,5..7].          <span style='color: #FFFF00'><== X は0,1,2,3,4,5,6,7のいずれか。</span><br>X       = X<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="574"; hash["name"]="notin  /xfx"; hash["common"]=""; hash["format"]="?T1 notin +T2"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>T1</td>      <td>:[1] 未代入変数 または、項。 [2] T1:[1]を要素とするリスト <br></td>    </tr>    <tr>      <td align='left' valign='top'>T2</td>      <td>:[1] T1が束縛されざるべき項（T2:[2]の表現を含む）の列挙リスト、<br>      [2] またはT1が束縛されざるべき整数の範囲表現　N1..N2 (N1,N2は整数でN1=‹N2)</td>    </tr>  </tbody></table>"; hash["text"]="(1) T1が値を持つとき、 T1はT2の要素のいずれかでないとき成功します。<br>(2) T1が未代入変数のとき、T1はT2の要素のいずれかでないと制約されます。<br>     将来T1が値を持つとき、この制約の範囲であれば失敗し、範囲外であれば成功します。<br>     T1がリストの場合、個々の要素について 1),2) が摘要されます。  <br>(3) 複数の制約を受けるとき、それらの制約の積となります。<br>(4) 制約によって値が一意にきまるときは、T1の値は決定し成功します。<br>(5) 矛盾する制約が与えられたときは失敗します。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?- 3 notin 0..10.<br>no<br>| ?- 11 notin 0..10.<br>yes<br>| ?- b in [a,b,c,1..10,d(X)].<br>X       = X<br>yes<br>(2)<br>| ?- X notin 0..9.<br>X   = X<br>yes<br>| ?- X notin 0..9,X=3.<br>no<br>| ?- X notin 0..9,X=20.<br>X   = 20<br>yes<br>| ?- X notin [a,b,c,d], member(X,[a,b,c,d,e,f]).<br>X   = e;<br>X   = f;<br>no<br>(3)<br>| ?- X in 0..9,X notin 8..10.      <span style='color: #FFFF00'><==  X in 0..7 となります。</span><br>X   = X<br>yes<br>(4) <br>| ?- X in 0..9,X notin 0..8.       <span style='color: #FFFF00'><== Xの値が二つの制約の積により一意化します。</span><br>X   = 9 <br>yes<br>(5)<br>| ?- X in 0..9,X notin 0..9.       <span style='color: #FFFF00'><== Xのとるべき値はないので失敗します。</span><br>no"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="575"; hash["name"]="alldifferent/1"; hash["common"]=""; hash["format"]="alldifferent(+L)"; hash["argument"]="L : 項を要素とするリスト"; hash["text"]="(1) リストの要素がすべて異なる値を持つ場合に成功します。<br>(2) リストに変数が含まれる、またはすべて変数の場合、リストの要素がすべて異なる値を持たねばならない制約を与えます。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?- alldifferent([1,2,3,4]).<br>yes<br>| ?- alldifferent([1,2,3,4,1]).<br>no<br>(2)<br>| ?- alldifferent([1,2,3,A,1]).<br>no<br>| ?- alldifferent([1,2,3,A,A]).<br>no<br>| ?- V=[A,B,C],V in 0..9,alldifferent(V).<br>V       = [_42,_48,_54],<br>A       = A,<br>B       = B,<br>C       = C<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="576"; hash["name"]="indomain/1"; hash["common"]=""; hash["format"]="indomain(?T)"; hash["argument"]="T: 領域制約された未代入変数,または値を持つ項"; hash["text"]="(1) Tが値を持つ項の場合は直ちに成功します。<br>(2) 領域制約された未代入変数の場合は、Tに可能な値を順に束縛する非決定述語です。<br>(3) 1、2以外はエラー(Illegal Argument supplied)"; hash["reference"]=""; hash["sample"]="(1) <br>| ?- indomain(1).<br>yes<br>(2)<br>| ?- X in 1..3,indomain(X).<br>X = 1;<br>X = 2;<br>X = 3;<br>no<br>(3)<br>| ?- indomain(X).<br>Illegal argument supplied        ---- Backtrace<br>indomain(X_4) ?-"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="577"; hash["name"]="labeling/1"; hash["common"]=""; hash["format"]="labeling(?L)"; hash["argument"]="L: 制約変数、項のリスト"; hash["text"]="Lに含まれる全要素を順に実体化します。探索。<br>定義は次のとおりです。<br><br>labeling(V):- var(V),!,labeling([V]).<br>labeling([V|L]):-!,indomain(V),labeling(L).<br>labeling([])."; hash["reference"]=""; hash["sample"]="| ?- V=[A,B,C],V in 0..4,alldifferent(V),labeling(V).<br>V  = [0,1,2],<br>A  = 0,<br>B  = 1,<br>C  = 2;<br>V  = [0,1,3],<br>A  = 0,<br>B  = 1,<br>C  = 3"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="578"; hash["name"]="abolish/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="ダブり削除"; hash["reference"]=""; hash["sample"]=""; hash["genre"]=""; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="579"; hash["name"]="get_install_base_dir/1"; hash["common"]=""; hash["format"]="get_install_base_dir(-A)"; hash["argument"]="A:AZ-Prologがインストールされたベースの絶対パスがユニファイされる"; hash["text"]="AZ-Prologがインストールされたベースの絶対パス(例: /usr/local)を返します。"; hash["reference"]=""; hash["sample"]="| ?-get_install_base_dir(X).<br>X       = /usr/local<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="580"; hash["name"]="get_install_base_dir_normalized/1"; hash["common"]=""; hash["format"]="get_install_base_dir_normalized(-A)"; hash["argument"]="A:AZ-Prologがインストールされたベースの絶対パスがユニファイされる"; hash["text"]="AZ-Prologがインストールされたベースの絶対パス(例: /usr/local)を返します。<br>OSに依らない形式(パス区切りが&#39;/&#39;)になります。"; hash["reference"]=""; hash["sample"]="| ?-get_install_base_dir_normalized(X).<br>X       = /usr/local<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="581"; hash["name"]="dlib_require/1"; hash["common"]=""; hash["format"]="dlib_require(+A)"; hash["argument"]="A:ロードする拡張ライブラリの名前、あるいはパスを指定する"; hash["text"]="指定された名前、パスの拡張ライブラリをロードして、初期化関数を呼び出します。<br>名前、パスのどちらで指定する場合にも、ライブラリの拡張子(.so, .dylibなど)部分は含めないように指定します。<br>パスで指定する場合、ディレクトリの区切り文字はどのOS上でも&#39;/&#39;とします。<br>パスで指定した場合、相対パスのときは、カレントディレクトリに対する相対パスとみなされます。<br>パスで指定した場合、絶対パスのときは、サーチパスリストは参照されません。<br>一度成功すると、同じ名前で何度呼び出しても成功しますが、その場合には何も処理はしません。(パスの部分だけ変えても名前が同じであれば何もしません。)"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(clp).<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="582"; hash["name"]="dlib_require/2"; hash["common"]=""; hash["format"]="dlib_require(+A1, +A2)"; hash["argument"]="A1:ロードする拡張ライブラリの名前、あるいはパスを指定する<br>A2:呼び出す初期化関数の名前を指定する"; hash["text"]="指定された名前、パスの拡張ライブラリをロードして、指定された名前の初期化関数を呼び出します。<br>名前、パスのどちらで指定する場合にも、ライブラリの拡張子(.so, .dylibなど)部分は含めないように指定します。<br>パスで指定する場合、ディレクトリの区切り文字はどのOS上でも&#39;/&#39;とします。<br>パスで指定した場合、相対パスのときは、カレントディレクトリに対する相対パスとみなされます。<br>パスで指定した場合、絶対パスのときは、サーチパスリストは参照されません。<br>初期化関数名として文字列長が０のアトムを与えれば、初期化関数を呼び出しません。<br>一度成功すると、同じ名前で何度呼び出しても成功しますが、その場合には何も処理はしません。(パスの部分だけ変えても名前が同じであれば何もしません。)"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(clp,initiate_clp).<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="583"; hash["name"]="dlib_get_error_str/1"; hash["common"]=""; hash["format"]="dlib_get_error_str(-A)"; hash["argument"]="A:エラーの理由を表すアトムがユニファイされる"; hash["text"]="dlib_require/1, dlib_require/2の呼び出しが失敗した時に、エラーの理由を表すアトムを返します。<br>dlib_require以外の述語の失敗には使用できません。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(cla).             <br>no<br>| ?-dlib_get_error_str(X),name(A,X).<br>X       = [76,105,98,114,97,114,121,32,105,115,32,110,111,116,32,102,111,117,110,100,46],<br>A       = Library is not found.<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="584"; hash["name"]="dlib_get_load_map/1"; hash["common"]=""; hash["format"]="dlib_get_load_map(-L)"; hash["argument"]="L:現在までにロードされたライブラリの情報リストがユニファイされる"; hash["text"]="現在までにロードされたライブラリの情報リストが返されます。<br>リストの各要素はアトムで、ライブラリの名前とロードしたライブラリの絶対パスの情報が含まれています。"; hash["reference"]=""; hash["sample"]="| ?-dlib_get_load_map(X).<br>X       = [clp.so ==> /usr/local/lib/azprolog/ext/clp.so]<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="585"; hash["name"]="dlib_get_search_path/1"; hash["common"]=""; hash["format"]="dlib_get_search_path(-L)"; hash["argument"]="L:現在のサーチパスリストがユニファイされる"; hash["text"]="現在のサーチパスリストが返されます。<br>リストの各要素はアトムで、dlib_requireでロードするライブラリを探索するサーチパスとなります。<br>リストの先頭の要素から優先的に探索します。"; hash["reference"]=""; hash["sample"]="| ?-dlib_get_search_path(X).<br>X       = [/usr/local/lib/azprolog/ext]<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="586"; hash["name"]="dlib_set_search_path/1"; hash["common"]=""; hash["format"]="dlib_set_search_path(+L)"; hash["argument"]="L:現在のサーチパスリストを指定する"; hash["text"]="現在のサーチパスリストを指定したものに変更します。<br>リストの各要素はアトムで、dlib_requireでロードするライブラリを探索するサーチパスとなります。<br>リストの先頭の要素から優先的に探索します。<br>各サーチパスは絶対パスで指定するようにします。"; hash["reference"]=""; hash["sample"]="| ?-dlib_set_search_path([&#39;/usr/local/lib/azprolog/ext2&#39;]).<br>yes<br>| ?-dlib_get_search_path(X).                               <br>X       = [/usr/local/lib/azprolog/ext2]<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="587"; hash["name"]="dlib_search_path_push/1"; hash["common"]=""; hash["format"]="dlib_search_path_push(+A)"; hash["argument"]="A:追加するサーチパスのアトム"; hash["text"]="現在のサーチパスリストの先頭に指定したサーチパスを追加します。<br>サーチパスリストは、dlib_requireでロードするライブラリを探索するサーチパスとなります。<br>サーチパスは絶対パスで指定するようにします。"; hash["reference"]=""; hash["sample"]="| ?-dlib_search_path_push(&#39;/usr/local/lib/azprolog/ext3&#39;). <br>yes<br>| ?-dlib_get_search_path(X).                               <br>X       = [/usr/local/lib/azprolog/ext3,/usr/local/lib/azprolog/ext2]<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="588"; hash["name"]="dlib_search_path_pop/0"; hash["common"]=""; hash["format"]="dlib_search_path_pop"; hash["argument"]="なし"; hash["text"]="現在のサーチパスリストの先頭のサーチパスを除きます。<br>現在のサーチパスリストが空のときに実行すると失敗します。<br>サーチパスリストは、dlib_requireでロードするライブラリを探索するサーチパスとなります。"; hash["reference"]=""; hash["sample"]="| ?-dlib_search_path_pop.<br>yes<br>| ?-dlib_get_search_path(X).<br>X       = [/usr/local/lib/azprolog/ext2]<br>yes"; hash["genre"]="41"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="589"; hash["name"]="server_create/2"; hash["common"]=""; hash["format"]="server_create(+A,-S)"; hash["argument"]="A:サーバーを作成するポート<br>S:ソケットディスクリプタ"; hash["text"]="ソケットサーバーを生成します。<br>通常、ソケットのサーバを作成するためには、ソケットの生成⇒ソケットアドレスの指定(bind)⇒接続の許可(listen)の段階を踏みますが、この述語は上記までを内包しています。"; hash["reference"]=""; hash["sample"]="| ?-server_create(&#39;5000&#39;,S).<br>S     = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="590"; hash["name"]="server_create/3"; hash["common"]=""; hash["format"]="server_create(+A1,+A2,-S)"; hash["argument"]="A1:サーバーを作成するIPアドレス<br>A2:サーバーを作成するポート<br>S:ソケットディスクリプタ"; hash["text"]="ソケットサーバーを生成します。<br>通常、ソケットのサーバを作成するためには、ソケットの生成⇒ソケットアドレスの指定(bind)⇒接続の許可(listen)の段階を踏みますが、この述語は上記までを内包しています。"; hash["reference"]=""; hash["sample"]="| ?-server_create(&#39;127.0.0.1&#39;,&#39;5000&#39;,S).<br>S     = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="591"; hash["name"]="server_accept/3"; hash["common"]=""; hash["format"]="server_accept(+S1,-A,-S2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>S1</td>      <td nowrap>:ソケットディスクリプタ</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A</td>      <td nowrap>:接続確立したクライアントのIPアドレス</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>S2</td>      <td nowrap>:接続確立したクライアントのソケットディスクリプタ</td>    </tr>  </tbody></table>"; hash["text"]="ソケットサーバーを作成後、クライアントが接続要求してきた際に接続を受付ます。<br>server_acceptは要求が来ていない場合はfailするため、repeatでループして待ちます。"; hash["reference"]=""; hash["sample"]="| ?-server_create('5000',S),repeat,server_accept(S,Y,Z).                                <br>S       = 3,<br>Y       = 127.0.0.1,<br>Z       = 4<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="592"; hash["name"]="client_connect/3"; hash["common"]=""; hash["format"]="client_connect(+A1,+A2,-S)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td>:ソケット接続先のIPアドレス</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:ソケット接続先のポート</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:ソケットディスクリプタ</td>    </tr>  </tbody></table>"; hash["text"]="ソケット接続の接続要求を行います。"; hash["reference"]=""; hash["sample"]="| ?-client_connect('127.0.0.1','5000',S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="593"; hash["name"]="client_connect_async/3"; hash["common"]="Linux"; hash["format"]="client_connect_async(+A1,+A2,-S)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td>:ソケット接続先のIPアドレス</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:ソケット接続先のポート</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:ソケットディスクリプタ</td>    </tr>  </tbody></table>"; hash["text"]="ソケット接続の接続要求を非同期で行います。<br>client_connect/3では接続の確立を待ちますが、client_connect_async/3では接続要求後に次に進むため、接続の状況が分かりません。<br>そのため、check_socket_sendable/1でソケットの書き込みが可能になる（接続が確立した）事を確認します。"; hash["reference"]=""; hash["sample"]="| ?-client_connect_async('127.0.0.1','5000',S), repeat, s_sleep(1), check_socket_sendable(S), socket_send(S,'Test'), socket_close(S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="594"; hash["name"]="socket_send/2"; hash["common"]=""; hash["format"]="socket_send(+S,+A)"; hash["argument"]="S:ソケットディスクリプタ<br>A:送信データ"; hash["text"]="ソケットにデータを送信します。<br>ソケットの接続が確立していない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;5000&#39;,S),socket_send(S,&#39;TEST&#39;).<br>S       = 4<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="595"; hash["name"]="socket_receive/2"; hash["common"]=""; hash["format"]="socket_receive(+S,-A)"; hash["argument"]="S:ソケットディスクリプタ<br>A:受信データ"; hash["text"]="ソケットからデータを受信します。<br>ソケットにデータがない場合はfailするので、repeatでループして下さい。"; hash["reference"]=""; hash["sample"]="| ?-server_create(&#39;5000&#39;,S),repeat,server_accept(S,Y,Z),repeat,socket_receive(Z,A).<br>S       = 4,<br>Y       = 127.0.0.1,<br>Z       = 5,<br>A       = Test<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="596"; hash["name"]="socket_receive_list/2"; hash["common"]=""; hash["format"]="socket_receive_list(+S,-L)"; hash["argument"]="S:ソケットディスクリプタ<br>L:受信リスト"; hash["text"]="ソケットからリストを受信します。<br>ソケットにデータがない場合はfailするので、repeatでループして下さい。"; hash["reference"]=""; hash["sample"]="| ?-server_create(&#39;5000&#39;,S),repeat,server_accept(S,Y,Z),repeat,socket_receive_list(Z,L).<br>S       = 3,<br>Y       = 127.0.0.1,<br>Z       = 4,<br>L       = [84,101,115,116]<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="597"; hash["name"]="socket_close/1"; hash["common"]=""; hash["format"]="socket_close(+S)"; hash["argument"]="S:ソケットディスクリプタ"; hash["text"]="ソケット接続を終了します。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;5000&#39;,S),socket_close(S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="598"; hash["name"]="select_from_sockets/3"; hash["common"]=""; hash["format"]="select_from_sockets(+I,+L1,-L2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>I</td>      <td nowrap>:タイムアウトまでの時間(マイクロ秒)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>L1</td>      <td nowrap>:データの受信を確認したいソケットリスト</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>L2</td>      <td nowrap>:データを受信しているソケットのリスト</td>    </tr>  </tbody></table>"; hash["text"]="ソケットリストからデータを受信しているソケットを抽出します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="599"; hash["name"]="host2ip/4"; hash["common"]=""; hash["format"]="host2ip(+A1,-A2,-A3,-A4)"; hash["argument"]="A1:ホスト名<br>A2:公式ホスト名<br>A3:ホスト名の別名<br>A4:IPアドレス"; hash["text"]="ホスト名をIPアドレスに変換します。"; hash["reference"]=""; hash["sample"]="| ?-host2ip(&#39;www.yahoo.co.jp&#39;,GH,AH,IP).<br>GH      = www.g.yahoo.co.jp,<br>AH      = www.yahoo.co.jp,<br>IP      = 124.83.187.140<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="600"; hash["name"]="ssl_client_connect/4"; hash["common"]=""; hash["format"]="ssl_client_connect(+A1,+A2,+A3,-S)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>A1</td>      <td>:ソケット接続先のIPアドレス</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:ソケット接続先のポート</td>    </tr>    <tr>      <td align='left' valign='top'>A3</td>      <td>:暗号アルゴリズム名</td>    </tr>    <tr>      <td align='left' valign='top'>S</td>      <td>:SSLソケットディスクリプタ</td>    </tr>  </tbody></table>"; hash["text"]="SSLソケット接続の接続要求を行います。<br>SSLの実装においてはOpenSSLのライブラリを利用しています。<br>引数の暗号アルゴリズム名の指定は、以下に示すアルゴリズム名を指定します。<br>なお、空のAtomが指定された場合は暗号化されません。<br><br>[暗号アルゴリズム名]: RSA,DES,Triple DES,AES,IDEA,FEAL,RC2/4/5など<br>※上記以外の暗号アルゴリズム名を指定する場合は、以下のOpenSSLコマンドで<br>　 利用できるアルゴリズム名を調べてください。<br><br>   $ openssl ciphers"; hash["reference"]=""; hash["sample"]="| ?-ssl_client_connect('127.0.0.1','443','RSA',S).<br>S       = 1<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="601"; hash["name"]="ssl_socket_send/2"; hash["common"]=""; hash["format"]="ssl_socket_send(+S,+A)"; hash["argument"]="S:SSLソケットディスクリプタ<br>A:送信データ"; hash["text"]="SSLソケットにデータを送信します。<br>SSLソケットの接続が確立していない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-ssl_client_connect(&#39;127.0.0.1&#39;,&#39;443&#39;,S),ssl_socket_send(S,&#39;Test&#39;).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="602"; hash["name"]="ssl_socket_close/1"; hash["common"]=""; hash["format"]="ssl_socket_close(+S)"; hash["argument"]="S:SSLソケットディスクリプタ"; hash["text"]="SSLソケット接続を終了します。"; hash["reference"]=""; hash["sample"]="| ?-ssl_client_connect(&#39;127.0.0.1&#39;,&#39;443&#39;,S),ssl_socket_close(S).<br>S       = 1<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="603"; hash["name"]="ssl_cert_load_cafile/3"; hash["common"]=""; hash["format"]="ssl_cert_load_cafile(+S,+A1,-SC)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S</td>      <td>:ソケットディスクリプタ</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:CA証明書ファイルへのファイルパス</td>    </tr>    <tr>      <td align='left' valign='top'>SC</td>      <td nowrap>:SSLコンテキスト</td>    </tr>  </tbody></table>"; hash["text"]="CA証明書ファイルで認証を行いソケット接続を確立します。<br>なお、引数で指定するソケットディスクリプタは、client_connect述語で取得したソケットディスクリプタを指定します。"; hash["reference"]=""; hash["sample"]="| ?-client_connect('127.0.0.1','3000',S),ssl_cert_load_cafile(S,'root.pem',SC).<br>S       = 4,<br>SC      = 2<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="604"; hash["name"]="ssl_cert_load_file/4"; hash["common"]=""; hash["format"]="ssl_cert_load_file(+S,+A1,+A2,-SC)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S</td>      <td>:ソケットディスクリプタ</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:クライアント証明書ファイルへのファイルパス</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:クライアント証明書の秘密鍵ファイル(Private Key)へのファイルパス</td>    </tr>    <tr>      <td align='left' valign='top'>SC</td>      <td nowrap>:SSLコンテキスト</td>    </tr>  </tbody>"; hash["text"]="クライアント証明書ファイルとクライアント証明書の秘密鍵ファイルで認証を行いソケット接続を確立します。<br>なお、引数で指定するソケットディスクリプタは、client_connect述語で取得したソケットディスクリプタを指定します。"; hash["reference"]=""; hash["sample"]="| ?-client_connect('127.0.0.1','3000',S),ssl_cert_load_file(S,'root.pem','key.pem',SC).<br>S       = 4,<br>SC      = 2<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="605"; hash["name"]="ssl_cert_load_data/4"; hash["common"]=""; hash["format"]="ssl_cert_load_data(+S,+A1,+A2,-SC)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>S</td>      <td>:ソケットディスクリプタ</td>    </tr>    <tr>      <td align='left' valign='top'>A1</td>      <td>:クライアント証明書のデータ</td>    </tr>    <tr>      <td align='left' valign='top'>A2</td>      <td>:クライアント証明書の秘密鍵(Private Key)のデータ</td>    </tr>    <tr>      <td align='left' valign='top'>SC</td>      <td nowrap>:SSLコンテキスト</td>    </tr>  </tbody></table>"; hash["text"]="クライアント証明書データとクライアント証明書の秘密鍵データで認証を行いソケット接続を確立します。<br>なお、引数で指定するソケットディスクリプタは、client_connect述語で取得したソケットディスクリプタを指定します。"; hash["reference"]=""; hash["sample"]="| ?-CA='..',KEY='..',client_connect('127.0.0.1','3000',S),ssl_cert_load_data(S,CA,KEY,SC).<br>S       = 4,<br>SC      = 2<br>yes<br>| ?-<br><br><br><span style='color:#FFFF00'>上記の使用例で、CA='..',KEY='..' は実データのユニフィケーションを省略して記載しています。</span>"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="606"; hash["name"]="ssl_cert_send/2"; hash["common"]=""; hash["format"]="ssl_cert_send(+SC,+A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SC</td>      <td>:SSLコンテキスト</td>    </tr>    <tr>      <td align='left' valign='top'>A</td>      <td>:受信データ</td>    </tr>  </tbody></table>"; hash["text"]="SSLコンテキストにデータを送信します。<br>ソケットの接続が確立していない場合及びSSLコンテキストが存在しない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect('127.0.0.1','3000',S),ssl_cert_load_cafile(S,'root.pem',SC),ssl_cert_send(SC,'Test').<br>S       = 3,<br>SC      = 1<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="607"; hash["name"]="ssl_cert_receive/3"; hash["common"]=""; hash["format"]="ssl_cert_receive(+SC,-A,-I)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SC</td>      <td>:SSLコンテキスト</td>    </tr>    <tr>      <td align='left' valign='top'>A</td>      <td>:受信データ</td>    </tr>    <tr>      <td align='left' valign='top'>I</td>      <td>:受信データサイズ</td>    </tr>  </tbody></table>"; hash["text"]="SSLコンテキストからデータを受信します。<br>ソケットの接続が確立していない場合及びSSLコンテキストが存在しない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect('127.0.0.1','3000',S),ssl_cert_load_cafile(S,'root.pem',SC),ssl_cert_receive(SC,Out,Size).<br>S       = 4,<br>SC      = 2,<br>Out     = Test,<br>Size    = 4<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="608"; hash["name"]="ssl_cert_close/1"; hash["common"]=""; hash["format"]="ssl_cert_close(+SC)"; hash["argument"]="SC:SSLコンテキスト"; hash["text"]="SSLコンテキストを解放します。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;3000&#39;,S),ssl_cert_load_cafile(S,&#39;root.pem&#39;,SC),ssl_cert_close(SC).<br>S       = 5,<br>SC      = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="609"; hash["name"]="socket_download/2"; hash["common"]=""; hash["format"]="socket_download(+S,+A)"; hash["argument"]="S:ソケットディスクリプタ<br>A:ダウンロード・ファイルパス"; hash["text"]="ソケットからデータを受信しファイルへ書き込みます。<br>ファイルにデータを書き込む際に、ディレクトリやファイルに書込み権限が付与されていないとfailします。<br>また、socket_receive述語と併用できません。<br><br>【注意】<br>ダウンロードにおいてファイルサイズが1GBを超えるとエラーになります。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;80&#39;,S),P1=&#39;GET /icon.zip HTTP/1.1&#39;,name(CR,[10]),atom_concat(P1,CR,P2),atom_concat(P2,&#39;Host: 127.0.0.1&#39;,P3),atom_concat(P3,CR,P4),atom_concat(P4,&#39;Connection: Close&#39;,P5),atom_concat(P5,CR,P6),atom_concat(P6,CR,Get),socket_send(S,Get),socket_download(S,&#39;icon.zip&#39;).<br>S   = 4,<br>P1  = GET /icon.zip HTTP/1.1,<br>CR  = <br>,<br>P2  = GET /icon.zip HTTP/1.1<br>,<br>P3  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1,<br>P4  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>,<br>P5  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close,<br>P6  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close<br>,<br>Get = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close<br><br><br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="610"; hash["name"]="socket_ssl_download/2"; hash["common"]=""; hash["format"]="socket_ssl_download(+SC,+A)"; hash["argument"]=""; hash["text"]="SSLコンテキストからデータを受信しファイルへ書き込みます。<br>ファイルにデータを書き込む際に、ディレクトリやファイルに書込み権限が付与されていないとfailします。<br>また、ssl_socket_receive述語と併用できません。<br><br>【注意】<br>ダウンロードにおいてファイルサイズが1GBを超えるとエラーになります。"; hash["reference"]=""; hash["sample"]="| ?-ssl_cert_load_file(S,&#39;common.crt&#39;,&#39;common.key&#39;,SN),P1=&#39;GET /icon.zip HTTP/1.1&#39;,name(CR,[10]),atom_concat(P1,CR,P2),atom_concat(P2,&#39;Host: 127.0.0.1&#39;,P3),atom_concat(P3,CR,P4),atom_concat(P4,&#39;Connection: Close&#39;,P5),atom_concat(P5,CR,P6),atom_concat(P6,CR,Get),ssl_cert_send(SN,Get),socket_ssl_download(SN,&#39;icon.zip&#39;).<br><br>S   = 4,<br>SN  = 1,<br>P1  = GET /icon.zip HTTP/1.1,<br>CR  = <br>,<br>P2  = GET /icon.zip HTTP/1.1<br>,<br>P3  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1,<br>P4  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>,<br>P5  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close,<br>P6  = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close<br>,<br>Get = GET /icon.zip HTTP/1.1<br>Host: 127.0.0.1<br>Connection: Close<br><br><br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="611"; hash["name"]="unix_client_connect/2"; hash["common"]="Linux"; hash["format"]="unix_client_connect(+A,-S)"; hash["argument"]="A:ソケットファイルへのパス<br>S:ソケットディスクリプタ"; hash["text"]="ソケット接続の接続要求を行います。"; hash["reference"]=""; hash["sample"]="| ?-unix_client_connect(&#39;/var/run/redis/redis.sock&#39;,S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="612"; hash["name"]="unix_server_create/2"; hash["common"]="Linux"; hash["format"]="unix_server_create(+A,-S)"; hash["argument"]="A:ソケットファイルへのパス<br>S:ソケットディスクリプタ"; hash["text"]="ソケットサーバーを生成します。<br>通常、ソケットのサーバを作成するためには、<br>ソケットの生成⇒ソケットアドレスの指定(bind)⇒接続の許可(listen)<br>の段階を踏みますが、この述語は上記までを内包しています。"; hash["reference"]=""; hash["sample"]="unix_server_create(&#39;a.sock&#39;,S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="613"; hash["name"]="unix_server_close/2"; hash["common"]="Linux"; hash["format"]="unix_server_close(+A,-S)"; hash["argument"]="A:ソケットファイルへのパス<br>S:ソケットディスクリプタ"; hash["text"]="ソケットファイルを削除し、ソケット接続を終了します。"; hash["reference"]=""; hash["sample"]="| ?-unix_server_create(&#39;a.sock&#39;,S),unix_server_close(&#39;a.sock&#39;,S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="614"; hash["name"]="check_socket_receivable/1"; hash["common"]=""; hash["format"]="check_socket_receivable(+S)"; hash["argument"]="S:ソケットディスクリプタ"; hash["text"]="ソケットに読込データが存在するか確認します。<br>データが存在しない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;1574&#39;,S),repeat, s_sleep(1), check_socket_receivable(S),socket_receive(S,Y),socket_close(S).<br>S = 3,<br>Y = Test<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="615"; hash["name"]="check_socket_sendable/1"; hash["common"]=""; hash["format"]="check_socket_sendable(+S)"; hash["argument"]="S:ソケットディスクリプタ"; hash["text"]="ソケットディスクリプタの接続確立状況を確認します。<br>接続が確立していない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect_async(&#39;127.0.0.1&#39;,&#39;1574&#39;,S), repeat, s_sleep(1), check_socket_sendable(S), socket_close(S).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="616"; hash["name"]="ping/2"; hash["common"]="Linux"; hash["format"]="ping(+A1,+I)"; hash["argument"]="A1:IPアドレス<br>I:タイム(Sec)"; hash["text"]="ネットワーク疎通を確認します。<br>注意事項として、Linuxプラットフォームでのping述語はroot権限でしか実行できないためprolog本体のバイナリファイルにSetUIDでSbitを立てる作業を実施するかまたはrootユーザーで述語を実行する方法があります。<br><br>[SetUIDの設定方法] # chmod u+s /usr/local/bin/prolog"; hash["reference"]=""; hash["sample"]="| ?-ping(&#39;127.0.0.1&#39;,2).<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="617"; hash["name"]="ping_async/2"; hash["common"]="Linux"; hash["format"]="ping_async(+A1,-S)"; hash["argument"]="A1:IPアドレス<br>S:ICMPソケットディスクリプタ"; hash["text"]="ネットワーク疎通確認をソケットを通して行います。<br>注意事項として、Linuxプラットフォームでのping述語はroot権限でしか実行できないためprolog本体のバイナリファイルにSetUIDでSbitを立てる作業を実施するかまたはrootユーザーで述語を実行する方法があります。<br><br>[SetUIDの設定方法] # chmod u+s /usr/local/bin/prolog"; hash["reference"]=""; hash["sample"]="| ?-ping_async(&#39;127.0.0.1&#39;,S),s_sleep(1000),check_socket_receivable(S),socket_close(S).<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="618"; hash["name"]="socket_send_list/2"; hash["common"]=""; hash["format"]="socket_send_list(+S,+L)"; hash["argument"]="S:ソケットディスクリプタ<br>L:送信リスト"; hash["text"]="ソケットにリストを送信します。<br>ソケットの接続が確立していない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-client_connect(&#39;127.0.0.1&#39;,&#39;5000&#39;,S),socket_send_list(S,[1,2,3]).<br>S       = 3<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="619"; hash["name"]="ssl_socket_receive/2"; hash["common"]=""; hash["format"]="ssl_socket_receive(+S,-A)"; hash["argument"]="S:SSLソケットディスクリプタ<br>A:受信データ"; hash["text"]="SSLソケットからデータを受信します。<br>SSLソケットの接続が確立していない場合はfailします。"; hash["reference"]=""; hash["sample"]="| ?-ssl_client_connect(&#39;127.0.0.1&#39;,&#39;443&#39;,S),ssl_socket_receive(S,Out).<br>S       = 4,<br>Out     =  Test<br>yes<br>| ?-"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="620"; hash["name"]="s_can_read/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="OutStreamから読み込み可能な場合（子プロセス側で標準出力に戻値出力）にのみ成功します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="621"; hash["name"]="s_can_read/2"; hash["common"]="Win"; hash["format"]=""; hash["argument"]=""; hash["text"]="OutStreamから読み込み可能な場合に成功し、読み込み可能バイト数を返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="622"; hash["name"]="mlt_proc/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="必要なPrologプロセスの個数を指定。<br>生成された一覧リストを第二引数にユニファイする。<br>L = [[1916,fp_f79090,fp_f79140,prolog_c,[, -child ]],…..]"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="623"; hash["name"]="mlt_proc/5"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="プロセスの個数、EXEファイル、引数1(領域設定)、引数2(読込みPG)を指定してプロセスを生成します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="624"; hash["name"]="mlt_send/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="第一引数はmlt_proc/[2または5]で生成されたプロセス一覧リスト。<br>第二引数は各プロセスに与えるゴール（下記の３方式がある）のリスト。<br>(a) ゴール<br>後述の結果受け取りでは、 status(exe,Status) という形式の項が返る。<br>Statusはsucc,failまたはエラー番号である。<br>?-mlt_proc(3,P),mlt_send(P,[true,true,true]).<br>(b) [ゴール,戻し値]<br>ゴールが成功したとき返す戻し値を指定。エラー・failでは(a)と同じ<br>?-mlt_proc(2,P),mlt_send(P,[[put(4,L),L],[put(5,M),M]]).<br>(c){ゴール,戻し値}<br>(b)と同じだが、戻したあと強制バックトラックされ、別解が取れる<br>?-mlt_proc(2,P),mlt_send(P,[{put(4,L),L},{put(5,M),M}])."; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="625"; hash["name"]="mlt_receive/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="< fail,error >を含む全ての結果を起動順に読み込みます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="626"; hash["name"]="mlt_receive/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="< fail,error >を含む全ての結果を到着順に読み込みます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="627"; hash["name"]="mlt_scan/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="< fail,error >を含む最速の結果のみを読み込む。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="628"; hash["name"]="mlt_scan2/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="< fail,error >を除く最速の結果を読み込みます。<br>すべて< err,fail >なら述語そのものが失敗します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="629"; hash["name"]="mlt_scan_each/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="< fail,error >を除く結果を早い順に受け取ります。<br>バックトラックで次の結果を取れます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="630"; hash["name"]="mlt_kill/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="引数はmlt_proc/[2,5]で生成されたプロセス一覧リスト"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="37"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="631"; hash["name"]="redis_connect/4"; hash["common"]="Linux"; hash["format"]="redis_connect(+ADDRESS, +PORT, +TIMEOUT, -CONTEXT)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>ADDRESS</td>      <td nowrap>:接続先IPアドレス/名前</td>    </tr>    <tr>      <td align='left' nowrap>PORT</td>      <td nowrap>:接続先ポート番号</td>    </tr>     <tr>      <td align='left' nowrap>TIMEOUT</td>      <td nowrap>:試行終了時間(msec.)</td>    </tr>    <tr>      <td align='left' nowrap>CONTEXT</td>      <td nowrap>:接続コンテキスト</td>    </tr>  </tbody></table>"; hash["text"]="redisサーバに接続し、コンテキストを返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="632"; hash["name"]="redis_free_context/1"; hash["common"]="Linux"; hash["format"]="redis_free_context(+CONTEXT)"; hash["argument"]="CONTEXT:接続コンテキスト"; hash["text"]="コンテキストを開放します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="633"; hash["name"]="redis_is_disconnected/1"; hash["common"]="Linux"; hash["format"]="redis_is_disconnected(+CONTEXT)"; hash["argument"]="CONTEXT:接続コンテキスト"; hash["text"]="サーバが切断したかを調べます。<br>サーバから切断していれば成功、していなければ失敗します。<br><br>【重要】<br>この述語は、redis_commandを実行して、失敗した後で呼ばなければ意味がありません。(正しい結果になりません)"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="634"; hash["name"]="redis_command/4"; hash["common"]="Linux"; hash["format"]="redis_command(+CONTEXT, +COMMAND, -RETURN_TYPE, -RETURN_VALUE)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>CONTEXT</td>      <td nowrap>:接続コンテキスト</td>    </tr>    <tr>      <td align='left' nowrap>COMMAND</td>      <td nowrap>:実行コマンド</td>    </tr>     <tr>      <td align='left' nowrap>RETURN_TYPE</td>      <td nowrap>:結果値の型</td>    </tr>    <tr>      <td align='left' nowrap>RETURN_VALUE</td>      <td nowrap>:結果値</td>    </tr>  </tbody></table>"; hash["text"]="指定したコマンドを実行します。<br>コマンドはアトム、文字列、リストのどれかで指定します。<br>アトム、文字列で指定した場合には、空白文字はredisコマンドと引数の間の区切り文字として認識されます。<br>(キー、値の中に空白を含めることができません。)<br>リスト(要素がアトムまたは文字列)で指定した場合には、アトム、文字列の中の空白はキー/値の一部分と見做されます。<br>(区切り文字のつもりでキー/値の前後に空白をつけるべきではない。)"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="635"; hash["name"]="redis_command_hate_integer/4"; hash["common"]="Linux"; hash["format"]="redis_command_hate_integer(+CONTEXT, +COMMAND, -RETURN_TYPE, -RETURN_VALUE)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>CONTEXT</td>      <td nowrap>:接続コンテキスト</td>    </tr>    <tr>      <td align='left' nowrap>COMMAND</td>      <td nowrap>:実行コマンド</td>    </tr>     <tr>      <td align='left' nowrap>RETURN_TYPE</td>      <td nowrap>:結果値の型</td>    </tr>    <tr>      <td align='left' nowrap>RETURN_VALUE</td>      <td nowrap>:結果値</td>    </tr>  </tbody></table>"; hash["text"]="redis_command/4と殆ど同じです。<br>違いは、redis_REPLY_INTEGER型の値を返しません。<br>(整数の場合には文字列にして返します)"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="636"; hash["name"]="redis_version/1"; hash["common"]="Linux"; hash["format"]="redis_version(-VERSION)"; hash["argument"]="VERSION:バージョン情報を示すアトム"; hash["text"]=""; hash["reference"]=""; hash["sample"]="&#39;redis-ext: 0.5, hiredis: 0.10.1&#39;"; hash["genre"]="39"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="637"; hash["name"]="append/3"; hash["common"]=""; hash["format"]="append(?L1,?L2,?L3)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left'>L1,L2</td>      <td>:結合するアトム</td>    </tr>    <tr>      <td align='left' valign='top'>L3</td>      <td>:L1とL2を結合したリスト</td>    </tr>  </tbody></table>"; hash["text"]="L1とL2のリストを結合したリストがL3にユニファイされます。<br>L3 をL1とL2に分解することもできます。<br>次の定義と同義です。<br><br>append([],L,L).<br>append([A|L],R,[A|LR]):- append(L,R,LR)."; hash["reference"]=""; hash["sample"]="| ?-append([1,2,3],[4,5],L).<br>L       = [1,2,3,4,5]<br>yes<br><br>| ?-append(A,B,[1,2,3]).<br>A       = [],<br>B       = [1,2,3];<br>A       = [1],<br>B       = [2,3];<br>A       = [1,2],<br>B       = [3];<br>A       = [1,2,3],<br>B       = [];<br>no"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="638"; hash["name"]="member/2"; hash["common"]=""; hash["format"]="member(?Term,?List)."; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Term</td>      <td>:項の要素</td>    </tr>    <tr>      <td align='left' valign='top'>List</td>      <td>:要素を調べるリスト</td>    </tr>  </tbody></table>"; hash["text"]="List のなかに Termが要素として含まれている場合に成功します。<br>Termが変数の場合、Listの要素を先頭からユニファイします。<br><br>次の定義と同義です。<br><br>member(X,[X|_]).<br>member(X,[_|L]):- member(X,L)."; hash["reference"]=""; hash["sample"]="| ?-member(2,[1,2,3]).<br>yes<br><br>| ?-member(8,[1,2,3]).<br>no<br><br>| ?-member(X,[1,2,3]).<br>X       = 1;<br>X       = 2;<br>X       = 3;<br>no"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="639"; hash["name"]="s_usleep/1"; hash["common"]="Linux"; hash["format"]="s_usleep(+I)"; hash["argument"]="I:sleepする時間の長さ(マイクロ秒単位)"; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="20"; hash["used"]="true"; hash["incident"]="s_sleep/1"; azlist.push(hash);
var hash={}; hash["id"]="640"; hash["name"]="ws_set_log_level/1"; hash["common"]="Linux"; hash["format"]="ws_set_log_level(+LEVEL)"; hash["argument"]="LEVEL: ログレベル(アトムのリスト)"; hash["text"]="libwebsocketsのログ出力レベルを指定する。<br><br>使用可能なアトム<br><br>  WS_LL_ERR<br>  WS_LL_WARN<br>  WS_LL_NOTICE<br>  WS_LL_INFO<br>  WS_LL_DEBUG<br>  WS_LL_PARSER<br>  WS_LL_HEADER<br>  WS_LL_EXT<br>  WS_LL_CLIENT<br>  WS_LL_LATENCY<br><br>デフォルトでは、WS_LL_ERR, WS_LL_WARN, WS_LL_NOTICE が有効。<br>引数が使用可能なアトムのリスト以外ではエラーになります。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(websock).<br>yes<br>| ?-ws_set_log_level([&#39;WS_LL_ERR&#39;,&#39;WS_LL_INFO&#39;]).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="641"; hash["name"]="ws_set_client_certificate_file_path/1"; hash["common"]="Linux"; hash["format"]="ws_set_client_certificate_file_path(+PATH)"; hash["argument"]="PATH: ファイルパス(アトム)"; hash["text"]="クライアント側certificate fileのパスを指定する。<br>ws_create_context/3の前に実行すること。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(websock).<br>yes<br>| ?- ws_set_client_certificate_file_path(&#39;/var/cert/certs/user.crt&#39;).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="642"; hash["name"]="ws_set_client_private_key_file_path/1"; hash["common"]="Linux"; hash["format"]="ws_set_client_private_key_file_path(+PATH)"; hash["argument"]="PATH: ファイルパス(アトム)"; hash["text"]="クライアント側private key fileのパスを指定する。<br>ws_create_context/3の前に実行すること。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(websock).<br>yes<br>| ?-ws_set_client_private_key_file_path(&#39;/var/cert/keys/user.key&#39;)."; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="643"; hash["name"]="ws_create_context/3"; hash["common"]="Linux"; hash["format"]="ws_create_context(+SUB_PROTOCOLS, +DEFAULT_SUB_PROTOCOL_INDEX, -CONTEXT)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td width=&quot;120&quot; align='left' nowrap>SUB_PROTOCOLS:</td>      <td width=&quot;454&quot; nowrap>サポートするsub-protocolのリスト (アトムのリスト)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>DEFAULT_SUB_PROTOCOL_INDEX:</td>      <td nowrap>現状では意味がない(互換性のために残っている)<br>      整数0を指定しておくこと</td>    </tr>    <tr>      <td align='left' nowrap>CONTEXT: </td>      <td nowrap>生成されたCONTEXTを返す</td>    </tr>  </tbody></table>"; hash["text"]="クライアント側のCONTEXTを生成する。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(websock).<br>yes<br>| ?-ws_create_context(['simple-rr', 'foo'], 0, CONTEXT),assert(ws(CONTEXT)).<br>yes<br>"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="644"; hash["name"]="ws_delete_context/1"; hash["common"]="Linux"; hash["format"]="ws_delete_context(+CONTEXT)"; hash["argument"]="CONTEXT:削除するCONTEXT"; hash["text"]="CONTEXTを削除する。"; hash["reference"]=""; hash["sample"]="| ?- ws(CONTEXT),ws_delete_context(CONTEXT).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="645"; hash["name"]="ws_connect/10"; hash["common"]="Linux"; hash["format"]="ws_connect(+TIMEOUT, +CONTEXT, +SUB_PROTOCOL, +ADDRESS, +PORT, +SSL, +PATH, +HOST, +ORIGIN, -SESSION)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td width=&quot;120&quot; align='left' nowrap>TIMEOUT:</td>      <td colspan=&quot;2&quot; nowrap>接続待ちtimeout時間 (整数 msec.), 負の値を指定すると永久に待つ</td>    </tr>    <tr>      <td align='left' nowrap>CONTEXT:</td>      <td colspan=&quot;2&quot; nowrap>CONTEXT</td>    </tr>    <tr>      <td align='left' nowrap>SUB_PROTOCOL:</td>      <td colspan=&quot;2&quot; nowrap>sub-protocol (アトム)</td>    </tr>    <tr>      <td align='left' nowrap>ADDRESS:</td>      <td colspan=&quot;2&quot; nowrap>接続サーバアドレス (アトム)</td>    </tr>    <tr>      <td align='left' nowrap>PORT:</td>      <td colspan=&quot;2&quot; nowrap>接続ポート (整数)</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>SSL:</td>      <td colspan=&quot;2&quot; nowrap>SSLの使用 (整数)<br></td>    </tr>    <tr>      <td align='left' nowrap>&nbsp;</td>      <td width=&quot;19&quot; nowrap>0:</td>      <td width=&quot;435&quot; nowrap>SSL使用しない</td>    </tr>    <tr>      <td align='left' nowrap>&nbsp;</td>      <td nowrap>1:</td>      <td nowrap>SSL使用</td>    </tr>    <tr>      <td align='left' nowrap>&nbsp;</td>      <td nowrap>2:</td>      <td nowrap>SSL使用(以下のケースを無視する)<br>      SSL_get_verify_result(SSL *ssl)の返り値</td>    </tr>    <tr>      <td align='left' nowrap>&nbsp;</td>      <td nowrap>18:</td>      <td nowrap>X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT<br>渡されたルートCA証明書は信頼された証明書リストに存在しない</td>    </tr>    <tr>      <td align='left' nowrap>PATH:</td>      <td colspan=&quot;2&quot; nowrap>URLのパス部分 (アトム)</td>    </tr>    <tr>      <td align='left' nowrap>HOST:</td>      <td colspan=&quot;2&quot; nowrap>RFC6455 サーバの権限(authority)を含んでいるHostヘッダフィールド<br>      (アトム)</td>    </tr>    <tr>      <td align='left' nowrap>ORIGIN:</td>      <td colspan=&quot;2&quot; nowrap>RFC6455 Originヘッダフィールド (アトム)</td>    </tr>    <tr>      <td align='left' nowrap>SESSION:</td>      <td colspan=&quot;2&quot; nowrap>接続SESSION</td>    </tr>  </tbody></table>"; hash["text"]="サーバに接続して、生成されたSESSIONを返す。"; hash["reference"]=""; hash["sample"]="| ?- ws(CONTEXT), ws_connect(5000, CONTEXT, 'simple-rr', 'localhost', 8080, SSL, '/echo', 'localhost', 'localhost', SESSION),assert(ws_my_session(SESSION)).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="646"; hash["name"]="ws_close/1"; hash["common"]="Linux"; hash["format"]="ws_close(+SESSION, +STATUS_ATOM)"; hash["argument"]="SESSION:接続SESSION"; hash["text"]="接続SESSIONを閉じる。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_close(SESSION).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="647"; hash["name"]="ws_is_close/2"; hash["common"]="Linux"; hash["format"]="ws_is_close(+SESSION, +TIMEOUT)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SESSION:</td>      <td width=&quot;454&quot; nowrap>接続SESSION</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>TIMEOUT:</td>      <td nowrap>timeout (整数 msec.), 負の値で永久に待つ</td>    </tr>  </tbody></table>"; hash["text"]="指定されたSESSIONの接続が閉じているかどうかチェックする。<br>閉じているとき   SUCCESS<br>閉じていないとき FAIL"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_close(SESSION),ws_is_close(SESSION,100).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="648"; hash["name"]="ws_sub_protocol/2"; hash["common"]="Linux"; hash["format"]="ws_sub_protocol(+SESSION, -SUB_PROTOCOL)"; hash["argument"]="SESSION:<br>接続SESSION<br><br>SUB_PROTOCOL:<br>SESSIONのsub-protocol (アトム)"; hash["text"]="指定されたSESSIONのsub-protocolを返す。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_sub_protocolclose(SESSION,SUB).<br>SUB = simple-rr <br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="649"; hash["name"]="ws_read_text/3"; hash["common"]="Linux"; hash["format"]="ws_read(+TIMEOUT, +SESSION, -DATA_ATOM)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>TIMEOUT</td>      <td width=&quot;454&quot; nowrap>:timeout (整数 msec.), 負の値で永久に待つ</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>SESSION</td>      <td nowrap>:接続SESSION</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>DATA_ATOM</td>      <td nowrap>:読み込まれた文字列 (アトム)</td>    </tr>  </tbody></table>"; hash["text"]="テキストデータを読み込む。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_read_text(100,SESSION,Text).<br>Text = READED_DATA<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="650"; hash["name"]="ws_write_text/2"; hash["common"]="Linux"; hash["format"]="ws_write_text(+SESSION, +DATA_ATOM)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SESSION</td>      <td width=&quot;454&quot; nowrap>:接続SESSION</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>DATA_ATOM</td>      <td nowrap>:出力する文字列 (アトム)</td>    </tr>  </tbody></table>"; hash["text"]="テキストデータを送信する。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_write_text(SESSION,'Please Read This Data!').<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="651"; hash["name"]="ws_write_atom_list/2"; hash["common"]="Linux"; hash["format"]="ws_write_atom_list(+SESSION, +DATA_ATOM_LIST)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SESSION</td>      <td>:接続SESSION</td>    </tr>    <tr>      <td align='left' valign='top'>DATA_ATOM_LIST</td>      <td>:出力する文字列 (アトムを要素とするリスト)</td>    </tr>  </tbody></table>"; hash["text"]="テキストデータを送信する。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_write_atom_list(SESSION,[私,は,かもめ]).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="652"; hash["name"]="ws_read_list/3"; hash["common"]="Linux"; hash["format"]="ws_read_list(+TIMEOUT, +SESSION, -DATA_LIST)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>TIMEOUT</td>      <td width=&quot;454&quot; nowrap>:timeout (整数 msec.), 負の値で永久に待つ</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>SESSION</td>      <td nowrap>:接続SESSION</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>DATA_LIST</td>      <td nowrap>:読み込まれたバイト列 (リスト)</td>    </tr>  </tbody></table>"; hash["text"]="バイナリデータを読み込む。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_read_list(SESSION,Data).<br>Data = [84,104,105,115,32,105,115,32,68,97,116,97]<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_write_list_binary/2<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="653"; hash["name"]="ws_write_list_binary/2"; hash["common"]="Linux"; hash["format"]="ws_write_list_binary(+SESSION, +DATA_LIST)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>SESSION</td>      <td width=&quot;454&quot; nowrap>:接続SESSION</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>DATA_LIST</td>      <td nowrap>:出力するバイト列 (整数を要素とするリスト)</td>    </tr>  </tbody></table>"; hash["text"]="バイナリデータを送信する。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_write_list_binary(SESSION,&quot;abcd&quot;).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_pong/1<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="654"; hash["name"]="ws_write_pong/1"; hash["common"]="Linux"; hash["format"]="ws_write_pong(+SESSION)"; hash["argument"]="SESSION:接続SESSION"; hash["text"]="PONGを送信する。"; hash["reference"]=""; hash["sample"]="| ?- ws_my_session(SESSION),ws_write_pong(SESSION).<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_version/1"; azlist.push(hash);
var hash={}; hash["id"]="655"; hash["name"]="ws_version/1"; hash["common"]="Linux"; hash["format"]="ws_version(-VERSION)"; hash["argument"]="VERSION:バージョン情報を示すアトム"; hash["text"]="バージョン情報を取得する。"; hash["reference"]=""; hash["sample"]="| ?-dlib_require(websock).<br>yes<br>| ?-ws_version(X).<br>X       = websock-ext: 0.6, libwebsockets: 1.3 de4aad0<br>yes"; hash["genre"]="38"; hash["used"]="true"; hash["incident"]="ws_set_log_level/1<br>ws_set_client_certificate_file_path/1<br>ws_set_client_private_key_file_path/1<br>ws_create_context/3<br>ws_delete_context/1<br>ws_connect/10<br>ws_close/1<br>ws_is_close/2<br>ws_sub_protocol/2<br>ws_read_text/3<br>ws_write_text/2<br>ws_write_atom_list/2<br>ws_read_list/3<br>ws_write_list_binary/2<br>ws_write_pong/1"; azlist.push(hash);
var hash={}; hash["id"]="656"; hash["name"]="atom_appends/2"; hash["common"]=""; hash["format"]="atom_appends(+L,-A)"; hash["argument"]="L:リスト<br>A:リストの全要素を結合したアトム"; hash["text"]="第一引数のリストの全要素を結合したアトムを返します。<br>リストの要素は全ての項が可能です。<br><br>結合したアトムの大きさが65,535バイトより大きくなる時は<br>失敗します。"; hash["reference"]=""; hash["sample"]="| ?-atom_appends/2([a(1),3,abc,1.2],L).<br>L       = a(1)3abc1.20000000000000<br>yes"; hash["genre"]="31"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="657"; hash["name"]="#= /xfx"; hash["common"]=""; hash["format"]="T1 #= T2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の左右の数(式)の計算結果が等しいという制約を与えます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#>= /xfx<br>#> /xfx<br>#=< /xfx<br>#< /xfx<br>#\\= /xfx"; azlist.push(hash);
var hash={}; hash["id"]="658"; hash["name"]="#>= /xfx"; hash["common"]=""; hash["format"]="T1 #>= T2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の左の数(式)の計算結果が右の数(式)の計算結果より大きいか等しいという制約を与えます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#= /xfx<br>#> /xfx<br>#=< /xfx<br>#< /xfx<br>#\\= /xfx"; azlist.push(hash);
var hash={}; hash["id"]="659"; hash["name"]="#> /xfx"; hash["common"]=""; hash["format"]="T1 #> T2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の左の数(式)の計算結果が右の数(式)の計算結果より大きいという制約を与えます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#= /xfx<br>#>= /xfx<br>#=< /xfx<br>#< /xfx<br>#\\= /xfx"; azlist.push(hash);
var hash={}; hash["id"]="660"; hash["name"]="#=< /xfx"; hash["common"]=""; hash["format"]="T1 #=< T2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の右の数(式)の計算結果が左の数(式)の計算結果より大きいか等しいという制約を与えます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#= /xfx<br>#> /xfx<br>#>= /xfx<br>#< /xfx<br>#\\= /xfx"; azlist.push(hash);
var hash={}; hash["id"]="661"; hash["name"]="#¥= /xfx"; hash["common"]=""; hash["format"]="T1 #\= T2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の左右の数(式)の計算結果が等しくないという制約を与えます。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#= /xfx<br>#>= /xfx<br>#> /xfx<br>#=< /xfx<br>#< /xfx"; azlist.push(hash);
var hash={}; hash["id"]="662"; hash["name"]=":: /xfx"; hash["common"]=""; hash["format"]="T1 :: +T2"; hash["argument"]="<table width='80%' class='none'>  <tbody>    <tr>      <td align='left' nowrap>T1:</td>      <td nowrap>[1]未代入変数 または項</td>    </tr>    <tr>      <td align='left' nowrap> </td>      <td nowrap>[2] T1: [1]を要素とするリスト </td>    </tr>    <tr>      <td align='left' nowrap>T2:</td>      <td nowrap> [1] T1が束縛されるべき項（T2:[2]の表現を含む）の列挙リスト、[2] またはT1が束縛されるべき整数の範囲表現　N1..N2 (N1,N2は整数でN1=‹N2) </td>    </tr>  </tbody></table>"; hash["text"]="変数が取り得る値領域の制約（値のリスト）を与えます。<br><br><br>(1) T1が値を持つとき、 T1はT2の要素のいずれかであるとき成功します。<br>(2) T1が未代入変数のとき、T1はT2の要素のいずれかであると制約されます。<br>     将来T1が値を持つとき、この制約の範囲であれば成功し、範囲外であれば失敗します。<br>     T1がリストの場合、個々の要素について 1),2) が摘要されます。<br>(3) 複数の制約を受けるとき、それらの制約の積となります。<br>(4) 制約によって値が一意にきまるときは、T1の値は決定し成功します。<br>(5) 矛盾する制約が与えられたときは失敗します。"; hash["reference"]=""; hash["sample"]="(1)<br>| ?-3 :: 0..10.<br>yes<br>| ?-b :: [a,b,c,1..10,d(X)].<br>X       = X_20<br>yes<br>(2)<br>| ?-X :: 0..9.<br>X       = _18<br>yes<br>| ?-X :: 0..9,X=3.<br>X       = 3<br>yes<br>| ?-X :: 0..9,X=20.<br>no<br>| ?-X :: [a,b,c,d], member(X,[z,c,d,e,f]).<br>X       = c<br>yes<br>| ?-[X,Y] :: 0..9,X=3.<br>X       = 3,<br>Y       = _37<br>yes<br>(3)<br>| ?-X :: 0..9,X :: 8..10.     <span style='color: #FFFF00'><==  X :: [8,9] となります。</span><br>X       = _27<br>yes<br>(4)<br>| ?-X :: 0..9,X :: 9..10.     <span style='color: #FFFF00'><== 値が二つの制約の積により一意化します。</span><br>X       = 9<br>yes<br>(5)<br>| ?-X :: 0..9,X :: 15..16.    <span style='color: #FFFF00'><== Xのとるべき値はないので失敗します。</span><br>no<br>(6) 次の二つは異なることに注意してください<br>| ?-X :: 0..4,X :: 5..7.      <span style='color: #FFFF00'><== X は0,1,2,3,4 かつ X は5,6,7</span><br>no<br>| ?-X :: [0..4,5..7].　　　　 <span style='color: #FFFF00'><== X は0,1,2,3,4,5,6,7のいずれか。</span><br>X       = _75<br>yes<br>| ?-"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="in /xfx"; azlist.push(hash);
var hash={}; hash["id"]="663"; hash["name"]="get_clp_area/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="変数に値領域が設定されている場合、その設定領域を取得します。呼び出し時点で既に変数の値が決定している（既に変数ではない）場合は失敗します。<br>拡張ライブラリ組込述語「indomain」などの下層述語です。"; hash["reference"]=""; hash["sample"]="| ?-X in 0..9,get_clp_area(X,L).<br>X       = X,<br>L       = [0..9]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="indomain/1<br>put_clp_area/2<br>rm_clp_area/2<br>clp_intersection/3<br>clp_is_member/2"; azlist.push(hash);
var hash={}; hash["id"]="664"; hash["name"]="put_clp_area/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="変数に値領域（領域制約）を設定します。既に値領域が設定されている場合はANDで追加されます。設定できる値は任意の項です。<br>第二引数はソートされていることが前提となる述語で、拡張ライブラリ組込述語「in/2」の下層述語（AZ-Prolog本体側に組み込まれた述語の意。単に領域制約を設定するだけで、ソートは上層側の責任において行う）となります。"; hash["reference"]=""; hash["sample"]="| ?-put_clp_area(X,[1,2,5..7]),get_clp_area(X,L).<br>X       = X,<br>L       = [1,2,5..7]<br>yes<br>| ?-put_clp_area(X,[a,b,d,1,2,5..7]),put_clp_area(X,[b,2..6]),get_clp_area(X,L).<br>X       = X,<br>L       = [b,2,5,6]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="in /xfx<br>get_clp_area/2<br>rm_clp_area/2<br>clp_intersection/3<br>clp_is_member/2"; azlist.push(hash);
var hash={}; hash["id"]="665"; hash["name"]="rm_clp_area/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="既に値領域が設定されている変数から指定領域を取り除きます。<br>拡張ライブラリ組込述語「notin  /xfx」の下層述語です。"; hash["reference"]=""; hash["sample"]="| ?-put_clp_area(X,[1..9]),rm_clp_area(X,4..7),get_clp_area(X,L). <br>X       = X,<br>L       = [1..3,8,9]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="notin  /xfx<br>get_clp_area/2<br>put_clp_area/2<br>clp_intersection/3<br>clp_is_member/2"; azlist.push(hash);
var hash={}; hash["id"]="666"; hash["name"]="clp_intersection/3"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="「put_clp_area/2」の補助述語(汎用)で、２集合の共通部分を取得します。"; hash["reference"]=""; hash["sample"]="| ?-clp_intersection([1,3..6,9..12],[2..11],L).<br>L       = [3..6,9..11]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="get_clp_area/2<br>put_clp_area/2<br>rm_clp_area/2<br>clp_is_member/2"; azlist.push(hash);
var hash={}; hash["id"]="667"; hash["name"]="clp_is_member/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="「put_clp_area/2」「in /xfx」の補助述語で第一引数が第二引数のリストに含まれる場合成功します。"; hash["reference"]=""; hash["sample"]="| ?- clp_is_member(a,[1..9,b,c(z)]).<br>no<br>| ?- clp_is_member(a,[1..9,a,c(z)]).<br>yes<br>| ?- clp_is_member(7,[1..9,a,c(z)]).<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="get_clp_area/2<br>put_clp_area/2<br>rm_clp_area/2<br>clp_intersection/3<br>in /xfx"; azlist.push(hash);
var hash={}; hash["id"]="668"; hash["name"]="system_get_min_max_int/2"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]="処理系で扱う整数の下限と上限を取得します。"; hash["reference"]=""; hash["sample"]="| ?- system_get_min_max_int(MinInt,MaxInt).<br>MinInt  = -9223372036854775808,<br>MaxInt  = 9223372036854775807<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="669"; hash["name"]="clp_version/1"; hash["common"]=""; hash["format"]="clp_version(-A)"; hash["argument"]="A:バージョン情報を示すアトム"; hash["text"]="clpパッケージのバージョンを返します"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="670"; hash["name"]="#< /xfx"; hash["common"]=""; hash["format"]="N1 #< N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="演算子の右の数(式)の計算結果が左の数(式)の計算結果より大きいという制約を与えます。 "; hash["reference"]=""; hash["sample"]=""; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="#= /xfx<br>#>= /xfx<br>#> /xfx<br>#\\= /xfx"; azlist.push(hash);
var hash={}; hash["id"]="671"; hash["name"]="mecab_sparse_tostr/3"; hash["common"]=""; hash["format"]="mecab_sparse_tostr(+MECAB, +SENTENCE, -RESULT_STRING)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td width=&quot;18&quot; align='left' valign='top'>MECAB</td>      <td width=&quot;381&quot;>:mecabインスタンス</td>    </tr>    <tr>      <td align='left' valign='top'>SENTENCE</td>      <td>:解析対象文(アトム/文字列)</td>    </tr>    <tr>      <td align='left' valign='top'>RESULT_STRING</td>      <td>:解析結果文字列</td>    </tr>  </tbody></table>"; hash["text"]="指定した文を形態素解析して、結果を文字列で返す。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="672"; hash["name"]="onig_version/1"; hash["common"]=""; hash["format"]="onig_version(-A)"; hash["argument"]="A:バージョン情報を示すアトム"; hash["text"]="onigurumaパッケージのバージョンを返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="34"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="673"; hash["name"]="mecab_version/1"; hash["common"]=""; hash["format"]="mecab_version(-A)"; hash["argument"]="A:バージョン情報を示すアトム"; hash["text"]="mecabパッケージのバージョンを返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="674"; hash["name"]="odbc_version/1"; hash["common"]=""; hash["format"]="odbc_version(-A)"; hash["argument"]="A : バージョン情報を示すアトム"; hash["text"]="odbcパッケージのバージョンを返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="33"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="675"; hash["name"]="cabocha_version/1"; hash["common"]=""; hash["format"]="cabocha_version(-A)"; hash["argument"]="A:バージョン情報を示すアトム"; hash["text"]="cabochaパッケージのバージョンを返します。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="676"; hash["name"]="write_canonical/2"; hash["common"]="ISO"; hash["format"]="write_canonical(+S,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td nowrap>S</td>      <td nowrap>:指定ストリームのストリーム値(tell/2,tella/2,open/3 でファイルオープンしたとき第2引数or第3引数に返された値)</td>    </tr>    <tr>      <td width='24' >T</td>      <td>:出力する項</td>    </tr>  </tbody></table>"; hash["text"]="Tを正規の表現でell/2,tella/2, open/3 でオープンされた任意の出力ストリームへに出力します。<br>display/2にほぼ同じです。<br> <br>・演算子形式の複合項は述語形式に直されて出力されます。<br>・ストリングはその実態であるキャラクタコードのリストととして出力されます。<br>・リスト形式の複合項は述語形式に直されず、そのまま出力されます。<br>・未代入の変数の場合は変数名がそのまま出力されます。"; hash["reference"]=""; hash["sample"]="| ?- tell(myfile,S),write_canonical(S,1+2),nl(S),told(S).<br>yes<br><br>$ cat myfile<br>+(1,2)"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="tell/1<br>tella/1<br>read/1<br>writeq/1<br>display/2<br>write_canonical/1"; azlist.push(hash);
var hash={}; hash["id"]="677"; hash["name"]="current_prolog_flag/2"; hash["common"]="ISO"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="23"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="678"; hash["name"]="set_prolog_flag/2"; hash["common"]="ISO"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="23"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="679"; hash["name"]="call_count_check/1"; hash["common"]=""; hash["format"]="call_count_check(+Goal)"; hash["argument"]="Goal : ゴール"; hash["text"]="プログラムを実行した際にどの述語（組込、ユーザ定義とも）が何回呼ばれているかをチェックすることができます。"; hash["reference"]=""; hash["sample"]="$ prolog_c -c queen.pl<br>AZ-Prolog Version 7.54 (Linux/x64) <br>Copyright (C) SOFNEC CO., LTD. 1987-2014/05/13<br>| ?-debug.<br>yes<br>debug mode on<br>||?-call_count_check(q(4)).<br>No.1<br> . Q . .<br> . . . Q<br> Q . . .<br> . . Q .<br> <br>No.2<br> . . Q .<br> Q . . .<br> . . . Q<br> . Q . .<br> <br>Total = 2<br>===CALL COUNT===<br>exec_status=succ<br>==== user ====<br>safe/3  =>  52<br>select/3  =>  49<br>disp2/1  =>  20<br>disp1/2  =>  20<br>put/3  =>  17<br>disp/2  =>  10<br>generate/2  =>  5<br>queen/2   =>  1<br>=== system ===<br>=== builtin ===<br>is/2  =>  106<br>\\== /2  =>  64<br>write/1  =>  38<br>e_register/3  =>  4<br>nl/0  =>  2<br>yes<br>LOOP = 404<br>|| ?-<br><br>"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="get_call_count/3<br>reset_call_count/0<br>reset_call_count/1<br>reset_call_count/2"; azlist.push(hash);
var hash={}; hash["id"]="680"; hash["name"]="printf/1"; hash["common"]=""; hash["format"]="printf(+Format)"; hash["argument"]="Format: 出力する書式指定文字列リスト"; hash["text"]="カレントストリームに文字列、数値などのデータを書式化して表示文字列を出力します。<br>書式指定文字列リストには任意の文字列、制御文字のみです。<br><br>定義は次の通りですので、書式指定の詳細は printf/2を参考にしてください。<br>printf(F) :- printf(F,[])."; hash["reference"]=""; hash["sample"]=""; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="printf/2<br>sprintfl/3<br>sprintf/3<br>write/1<br>display/1"; azlist.push(hash);
var hash={}; hash["id"]="681"; hash["name"]="printf/2"; hash["common"]=""; hash["format"]="printf(+Format,+DataList)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>Format:</td>      <td>出力する書式指定文字列リスト</td>    </tr>    <tr>      <td align='left' valign='top'>DataList:</td>      <td>Formatに従って出力するデータのリスト</td>    </tr>  </tbody></table>"; hash["text"]="カレントストリームに文字列、数値などのデータを書式化して表示文字列を出力します。<br>書式指定文字列リストには任意の文字列、制御文字、フォーマット指定子が含まれます。<br>C言語のprintfを参考にしていますが、全ての書式を網羅はしていません。<br>フォーマット指定子の個数より出力データ個数が少ないときはFailし、フォーマット指定子とデータの型が合わないときはエラーとなります。<br><br><br><制御文字><br>&yen;n     復帰改行                   0A  <br>&yen;a     警報音                      07<br>&yen;t     ブコード                     09<br>&yen;b     バックスペース           08<br>&yen;    文字としての &yen;           5C     <br>&yen;'     文字としての '             2C<br>&yen;&quot;    文字としての &quot;            22<br>&yen;0    文字列終了コード          0<br> <br><フォーマット指定子と対応データ型><br>%s                     アトム、数値、複合項、リストの文字表現を出力します<br>%.数値s              数値の桁数だけ文字を出力します。少ない場合は先頭から空白で埋めます。<br>%c                     整数または1文字リスト(&quot;A&quot;など)の表す文字を出力します<br>%f                     浮動小数点を出力します<br>%数値1.数値2f   数値2を小数点以下の表示桁数とし浮動小数点を出力します<br>%d                    整数を10進数表現で出力します<br>%x                    整数を16進数表現で出力します<br>%o                    整数を8進数表現で出力します<br>"; hash["reference"]=""; hash["sample"]="test:-<br>        C  = 66,<br>        S  = tofu,<br>        S2 = miso(syouyu),<br>        D  = 321,<br>        F  = 12345.6789,<br>        printf(&quot;c[66]=%c tofu=%s miso(syouyu)=%.15s&yen;n&quot;,[C,S,S2]),<br>        printf(&quot;decimal:%d	=octal:%o	=hex:%x&yen;n&quot;,   [D,D,D]),<br>        printf(&quot;%f=%3.2f=%0.6f&quot;,                   [F,F,F]).<br><br>| ?-test.<br>c[66]=B tofu=tofu miso(syouyu)=    miso(syouyu)<br>decimal:321     =octal:501      =hex:141<br>12345.6789=12345.67=12345.678900<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="printf/1<br>sprintfl/3<br>sprintf/3<br>write/1<br>display/1"; azlist.push(hash);
var hash={}; hash["id"]="682"; hash["name"]="sprintfl/3"; hash["common"]=""; hash["format"]="sprintfl(?L,+Format,+DataList)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>L</td>      <td>:Fomatによって書式指定されデータリストを加工した文字列リスト</td>    </tr>    <tr>      <td align='left' valign='top'>Format</td>      <td>:出力する書式指定文字列リスト</td>    </tr>    <tr>      <td align='left' valign='top'>DataList</td>      <td>:Formatに従って出力するデータのリスト</td>    </tr>  </tbody></table>"; hash["text"]="第一引数にに文字列、数値などのデータを書式化して表示文字列をユニファイします。<br>書式指定文字列リストには任意の文字列、制御文字、フォーマット指定子が含まれます。<br>フォーマット指定子の個数より出力データ個数が少ないときはFailし、フォーマット指定子とデータの型が合わないときはエラーとなります。<br>書式指定の詳細は printf/2を参考にしてください。<br>"; hash["reference"]=""; hash["sample"]="| ?-sprintfl(A,&quot;%2.4f  %.5s&quot;,[12.3456789,misosatoukome]).<br>A       = [49,50,46,51,52,53,54,32,32,109,105,115,111,115,31]"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="683"; hash["name"]="sprintf/3"; hash["common"]=""; hash["format"]="sprintf(?Atom,+Format,+DataList)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>Atom</td>      <td>:Fomatによって書式指定されデータリストのアトム</td>    </tr>    <tr>      <td align='left' valign='top'>Format</td>      <td>:出力する書式指定文字列リスト</td>    </tr>    <tr>      <td align='left' valign='top'>DataList</td>      <td>:Formatに従って出力するデータのリスト</td>    </tr>  </tbody></table>"; hash["text"]="第一引数にに文字列、数値などのデータを書式化して表示文字列アトムをユニファイします。<br>書式指定文字列リストには任意の文字列、制御文字、フォーマット指定子が含まれます。<br>C言語のsprintfを参考にしていますが、全ての書式を網羅はしていません。<br>フォーマット指定子の個数より出力データ個数が少ないときはFailし、フォーマット指定子とデータの型が合わないときはエラーとなります。<br>書式指定の詳細は printf/2を参考にしてください。"; hash["reference"]=""; hash["sample"]="| ?-sprintf(A,&quot;%2.4f   %.5s&yen;n&quot;,[12.3456789,misosyouyukome]).<br>A       = 12.3456   misos<br>"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="printf/2<br>sprintfl/3<br>sprintf/3<br>write/1<br>display/1"; azlist.push(hash);
var hash={}; hash["id"]="684"; hash["name"]="openlog/3"; hash["common"]="Linux"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="30"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="685"; hash["name"]="syslog/2"; hash["common"]="Linux"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="30"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="686"; hash["name"]="closelog/0"; hash["common"]="Linux"; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="30"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="687"; hash["name"]="f_bagof/3"; hash["common"]=""; hash["format"]="f_bagof(+Var,+Goal,-Var)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Var</td>      <td>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign='top'>Goal</td>      <td align='left' valign='top'>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign='top'>Var</td>      <td align='left' valign='top'>:ゴールの全ての解のリスト</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、解が求まった順に返します。<br>ゴールの実行が一度も成功しなかった場合は失敗します。<br><br>ほとんどbagof/3と同じですが、ゴール中に制約変数が含まれる場合「ゴールの全ての解のリスト」<br>にもその制約を保持したまま取得することができます。"; hash["reference"]=""; hash["sample"]="| ?- listing.<br>a(X) :- freeze(X,(write(a),nl)).<br>a(X) :- freeze(X,(write(b),nl)).<br>yes<br>| ?- f_bagof(A,a(A),L).<br>A = A_8<br>L = [_10,_12]<br>yes<br><br>| ?- f_bagof(A,a(A),[1,2]).<br>a<br>b<br>A = A_8<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="f_setof/3<br>f_setof/4<br>f_findall/3"; azlist.push(hash);
var hash={}; hash["id"]="688"; hash["name"]="f_findall/3"; hash["common"]=""; hash["format"]="f_findall(+Var,+Goal,-Var1)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Var</td>      <td>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign='top'>Goal</td>      <td align='left' valign='top'>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign='top'>Var1</td>      <td align='left' valign='top'>:ゴールの全ての解のリスト</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合を返します。<br>ゴールの実行が一度でも成功しなかった場合は、Var値は空リストになります。<br>実行した結果のソートは行われません。また、この述語は決定的述語です。<br><br>ほとんどfindall/3と同じですが、ゴール中に制約変数が含まれる場合「ゴールの全ての解のリスト」<br>にもその制約を保持したまま取得することができます。"; hash["reference"]=""; hash["sample"]="| ?- listing.<br>a(a,X):- freeze(X,(write(a),nl)).<br>a(b,X):- freeze(X,(write(b),nl)).<br>yes<br>| ?-f_findall(X,a(_,X),L).<br>X          = X_9,<br>_          = __11,<br>L          = [_70,_39];<br>no<br><br>| ?-f_findall(ans(X),a(_,X),[ans(sushi)|_]).<br>a<br>X         = X_15,<br>_         = __17,<br>_         = [ans(_47)]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="f_setof/3<br>f_setof/4<br>f_bagof/3"; azlist.push(hash);
var hash={}; hash["id"]="689"; hash["name"]="f_setof/4"; hash["common"]=""; hash["format"]="f_setof(+Var,+Goal,-Var1,+A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>Var</td>      <td nowrap>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' nowrap>Goal</td>      <td nowrap>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' nowrap>Var1</td>      <td nowrap>:ゴールの全ての解のリスト</td>    </tr>    <tr>      <td align='left' nowrap>A</td>      <td nowrap>:asc (昇順)またはdec（降順）</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合をソートして返します。<br>第4引数でソート順（昇順、降順）を指定できます。<br>ゴールの実行が一度も成功しなかった場合は失敗します。<br><br>ほとんどsetof/4と同じですが、ゴール中に制約変数が含まれる場合「ゴールの全ての解のリスト」<br>にもその制約を保持したまま取得することができます。<br><br>f_setof/3の定義は次となっています。<br>f_setof(X,G,L):-f_setof(X,G,L,asc)."; hash["reference"]=""; hash["sample"]="| ?- listing.<br>a(a,X) :- freeze(X,(write(a),nl)).<br>a(b,X) :- freeze(X,(write(b),nl)).<br>yes<br>| ?- f_setof(ans(A,B),a(A,B),L,dec).<br>A         = A_13,<br>B         = B_15,<br>L         = [ans(b,_92),ans(a,_128)]<br>yes<br>| ?- f_setof(ans(A,B),a(A,B),[ans(_,1)|_],asc).<br>a<br>A         = A_18,<br>B         = B_20,<br>_         = a,<br>_         = [ans(b,_99)]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="690"; hash["name"]="f_setof/3"; hash["common"]=""; hash["format"]="f_setof(+Var,+Goal,-Var1)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>Var</td>      <td>:解の集合取りたい変数</td>    </tr>    <tr>      <td align='left' valign='top'>Goal</td>      <td align='left' valign='top'>:解を発生するゴール</td>    </tr>    <tr>      <td align='left' valign='top'>Var1</td>      <td align='left' valign='top'>:ゴールの全ての解のリスト</td>    </tr>  </tbody></table>"; hash["text"]="第2引数をゴールとして実行し、求めた解の集合を昇順ソートして返します。<br>ゴールの実行が一度も成功しなかった場合は失敗します。<br><br>ほとんどsetof/3と同じですが、ゴール中に制約変数が含まれる場合「ゴールの全ての解のリスト」<br>にもその制約を保持したまま取得することができます。<br><br>f_setof/3の定義は次となっています。<br><br>f_setof(X,G,L):-f_setof(X,G,L,asc)."; hash["reference"]=""; hash["sample"]="| ?- listing.<br>a(a,X) :- freeze(X,(write(a),nl)).<br>a(b,X) :- freeze(X,(write(b),nl)).<br>yes<br><br>| ?- f_setof(ans(A,B),a(A,B),[ans(_,1)|_]).<br>a<br>A          = A_18,<br>B          = B_20,<br>_          = a,<br>_          = [ans(b,_99)]<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="f_setof/4<br>f_bagof/3<br>f_findall/3"; azlist.push(hash);
var hash={}; hash["id"]="691"; hash["name"]="f_assert/1"; hash["common"]=""; hash["format"]="f_assert(+C)"; hash["argument"]="C:追加したい節になりうる項(数値とストリーム値以外の項)"; hash["text"]="引数に与えられた項Cを節としてヒープ(プログラム)領域に追加します。<br>既に同じ述語(同じ述語名とアリティの頭部を持つ節の集り)が存在していた場合にはその同じ節の何番目に追加されるかは保証されません。<br>通常は最後に追加されます。<br>節の追加は「assert/2」「asserta/1」「assertz/1」でも可能です。<br>Cが<節の書式>に当てはまらない場合はエラー(syntax error)になります。<br>※追加する節の頭部と同じ述語名とアリティを持つ「標準組込み述語」「コンパイル組込み述語」「Cリンク組込み述語」が既に存在する場合はエラー(builtin or C pred exist)になります。<br><br>項の中に制約された変数を含む場合、その情報を保持した状態をアサートします。<br>具体的には、節のゴールの先頭にfreeze/2,put_clp_area/2を追加します。"; hash["reference"]=""; hash["sample"]="| ?- freeze(X,(write(X),nl)),f_assert(a(X)).<br>yes<br>| ?- a(sushi).<br>sushi<br>yes"; hash["genre"]="40"; hash["used"]="true"; hash["incident"]="assert/2<br>asserta/1<br>assertz/1"; azlist.push(hash);
var hash={}; hash["id"]="692"; hash["name"]="f_assertz/1"; hash["common"]=""; hash["format"]=""; hash["argument"]=""; hash["text"]=""; hash["reference"]=""; hash["sample"]=""; hash["genre"]="41"; hash["used"]="false"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="693"; hash["name"]="chdir/1"; hash["common"]=""; hash["format"]="chdir(+DIR)"; hash["argument"]="DIR: Windows/Linuxのcdコマンドに与えるものと同じ表現のアトム"; hash["text"]="カレントディレクトリを引数で指定されたディレクトリに変更します。<br>妥当でない、または存在しないディレクトリを指定されたときは失敗します。"; hash["reference"]=""; hash["sample"]="| ?- chdir('..').<br>・<br>・ <span style='color: #FFFF00'>カレントディレクトリを一つ上の階層に変更します。</span><br>・<br>| ?- get_install_base_dir(X),atom_append(X,'/share/azprolog/sample/clp',Y),chdir(Y).<br>・<br>・ <span style='color: #FFFF00'>カレントディレクトリをAZ-PrologインストールディレクトリのCLPサンプルがある場所に移動します。</span><br>・"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="sh/0<br>system/1<br>system/2"; azlist.push(hash);
var hash={}; hash["id"]="694"; hash["name"]="s_mStackSize/2"; hash["common"]="Linux"; hash["format"]="s_mStackSize(?N1,+N2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>N1:</td>      <td width=&quot;454&quot; nowrap>変更前のマシンスタックサイズ（バイト単位）の数値がユニファイされます。</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>N2:</td>      <td nowrap>変更後のマシンスタックサイズ（バイト単位）を指定します。<br>数値以外を指定するとエラー(Illegal argument supplied)となります。</td>    </tr>  </tbody></table>"; hash["text"]="AZ-Prologプロセスのマシンスタックサイズを動的に変更します。"; hash["reference"]=""; hash["sample"]=" ｜?- s_mStackSize(X,X*2).<br> ・<br> ・<span style='color: #FFFF00'>マシンスタックサイズを現在の二倍に変更します。</span><br> ・"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="695"; hash["name"]="s_charset/2"; hash["common"]=""; hash["format"]="s_charset(?A1,+A2)"; hash["argument"]="A1 : 現在のシステムの文字コードセット名アトムがユニファイされます。<br>A2 : 変更する文字コードセット名アトム"; hash["text"]="システムの文字コードセットを変更します。<br>可能なセット名は、sjis,euc,utf8の3種類です。<br>注：ターミナル側も切り替えて置かないと字化けします。<br>"; hash["reference"]=""; hash["sample"]="| ?-s_charset(X,utf8).<br>X  = sjis<br>・<br>・<span style='color:#FFFF00'>文字コードセットをutf8に切り替えます。</span>"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="696"; hash["name"]="get_call_count/3"; hash["common"]=""; hash["format"]="get_call_count(+Functor,+Arity,-Call)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>Funcotor</td>      <td nowrap>:呼び出し回数を取得したい述語名アトム（組込み、ユーザー、システム述語）</td>    </tr>    <tr>      <td align='left' nowrap>Arity</td>      <td nowrap>:該当述語のアリティ（正の整数）</td>    </tr>    <tr>      <td align='left' nowrap>Call</td>      <td nowrap>:呼び出された回数（正の整数）がユニファイされます</td>    </tr>  </tbody></table>"; hash["text"]="デバッグモードにおいてのみ、指定述語がCallされた回数を取得します。<br>呼び出し回数は積算されますが、reset_call_count を用いて任意の局面で0にリセットすることができます。<br>また、デバッグモードを抜けると全ての述語の積算はゼロクリアされます。"; hash["reference"]=""; hash["sample"]="| ?-debug.<br>yes<br>debug mode on<br>||?-get_call_count(s_sleep,1,X).<br>X       = 0<br>yes<br>||?-s_sleep(100).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X       = 1<br>yes<br>||?-s_sleep(100).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X       = 2<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="reset_call_count/0<br>reset_call_count/1<br>reset_call_count/2"; azlist.push(hash);
var hash={}; hash["id"]="697"; hash["name"]="reset_call_count/0"; hash["common"]=""; hash["format"]="reset_call_count"; hash["argument"]="なし<br>"; hash["text"]="全ての述語の呼び出し回数積算を0クリアします。"; hash["reference"]=""; hash["sample"]="| ?-debug.<br>yes<br>debug mode on<br>||?-s_sleep(100).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X          = 1<br>yes<br>||?-s_sleep(100).<br>yes<br>||?- reset_call_count.<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X         = 0<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="get_call_count/3<br>reset_call_count/1<br>reset_call_count/2"; azlist.push(hash);
var hash={}; hash["id"]="698"; hash["name"]="reset_call_count/1"; hash["common"]=""; hash["format"]="reset_call_count(+Functor)"; hash["argument"]="Funcotor : 呼び出し回数をリセットしたい述語名アトム（組込み、ユーザー、システム述語）"; hash["text"]="指定述語名をもつ全ての述語の呼び出し回数積算を0クリアします。"; hash["reference"]=""; hash["sample"]="| ?-debug.<br>yes<br>debug mode on<br>||?-s_sleep(100).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X         = 1<br>yes<br>||?-s_sleep(100). <br>yes<br>||?- reset_call_count(s_sleep).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X         = 0<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="get_call_count/3<br>reset_call_count/0<br>reset_call_count/2"; azlist.push(hash);
var hash={}; hash["id"]="699"; hash["name"]="reset_call_count/2"; hash["common"]=""; hash["format"]="reset_call_count(+Functor,+Arity)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top' nowrap>Funcotor</td>      <td nowrap>:呼び出し回数をリセットしたい述語名アトム（組込み、ユーザー、システム述語）</td>    </tr>    <tr>      <td align='left' nowrap>Arity</td>      <td nowrap>:該当述語のアリティ（正の整数）</td>    </tr>  </tbody></table>"; hash["text"]="指定述語名/アリティをもつ述語の呼び出し回数積算を0クリアします。"; hash["reference"]=""; hash["sample"]="| ?-debug.<br>yes<br>debug mode on<br>||?-s_sleep(100).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X         = 1<br>yes<br>||?-s_sleep(100).<br>yes<br>||?- reset_call_count(s_sleep,1).<br>yes<br>||?-get_call_count(s_sleep,1,X).<br>X          = 0<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="get_call_count/3<br>reset_call_count/0<br>reset_call_count/2"; azlist.push(hash);
var hash={}; hash["id"]="700"; hash["name"]="display/2"; hash["common"]=""; hash["format"]="display(+S,+T)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign='top'>S</td>      <td>:指定ストリームのストリーム値(tell/2,tella/2,open/3 でファイルオープンしたとき第2引数 or 第3引数に返された値)</td>    </tr>    <tr>      <td align='left' valign='top'>N</td>      <td>:出力する項</td>    </tr>  </tbody></table>"; hash["text"]="Tを正規の表現でtell/2,tella/2, open/3 でオープンされた任意の出力ストリームへに出力します。<br><br><br>・演算子形式の複合項は述語形式に直されて出力されます。<br>・ストリングはその実態であるキャラクタコードのリストととして出力されます。<br>・リスト形式の複合項は述語形式に直されず、そのまま出力されます。<br>・未代入の変数の場合は変数名がそのまま出力されます。<br>"; hash["reference"]=""; hash["sample"]="| ?-tell(test,S),display(S,a(123)),told(S).<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="tell/2<br>tella/2<br>read/2<br>writeq/2"; azlist.push(hash);
var hash={}; hash["id"]="701"; hash["name"]="set_write_depth/2"; hash["common"]=""; hash["format"]="set_write_depth(?I1 ,+I2)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>?I1:</td>      <td nowrap>writeでの現在の項の深さ表示長</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>+I:</td>      <td nowrap>writeでの新しい項の深さ表示長</td>    </tr>  </tbody></table>"; hash["text"]="write系列の述語で、項の深さの出力長を変更します。項そのものが変更されるわけではありません。<br>トレース時などで深い項が出力されるようなとき見やすくするときに利用します。"; hash["reference"]=""; hash["sample"]="| ?-write(a(b(c(d(e(f([1..2,3..4],a))))))).<br>a(b(c(d(e(f([1..2,3..4],a))))))<br>yes<br>| ?-set_write_depth(_,3).<br>_      = 255<br>yes<br>| ?-write(a(b(c(d(e(f([1..2,3..4],a))))))).<br>a(b(c(~)))<br>yes"; hash["genre"]="24"; hash["used"]="true"; hash["incident"]="set_write_list_length/2"; azlist.push(hash);
var hash={}; hash["id"]="702"; hash["name"]="flush_log/0"; hash["common"]=""; hash["format"]="flush_log"; hash["argument"]="なし"; hash["text"]="logバッファの強制フラッシュをします。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="9"; hash["used"]="true"; hash["incident"]="s_flush/0<br>flush_output/0<br>"; azlist.push(hash);
var hash={}; hash["id"]="703"; hash["name"]="get_runtime/1"; hash["common"]=""; hash["format"]="get_runtime(-I)"; hash["argument"]="I: ミリ秒単位の整数値"; hash["text"]="プロセスが起動してからの積算稼動時間(ミリ秒単位)を整数値で取得します。<br>isで評価されるcputimeと異なり、s_sleep/1などのOSでの処理時間などは含まれません。"; hash["reference"]=""; hash["sample"]="| ?-get_runtime(X),s_sleep(10000),get_runtime(Y).<br>X       = 185,<br>Y       = 185<br>yes<br>| n(0):-!.<br>| n(X):- Y is X-1,n(Y).<br>| ?-get_runtime(X),n(1000000),get_runtime(Y).<br>X       = 231,<br>Y       = 467<br>yes<br><br><参考><br>| ?-X is cputime,s_sleep(10000),Y is cputime-X.<br>X   = 1390882109.18138,<br>Y   = 10.00031018257141<br>yes"; hash["genre"]="25"; hash["used"]="true"; hash["incident"]="cputime/0<br>statistics/2"; azlist.push(hash);
var hash={}; hash["id"]="704"; hash["name"]="term_to_atom/2"; hash["common"]=""; hash["format"]="term_to_atom(?T,?A)"; hash["argument"]="<table class='none'>  <tbody>    <tr>      <td align='left' nowrap>T</td>      <td width=&quot;454&quot; nowrap>:アトムに変換したい項を指定する。又はアトムから変換された項がユニファイされる。</td>    </tr>    <tr>      <td align='left' valign=&quot;top&quot; nowrap>A</td>      <td nowrap>:項に変換したいアトムを指定する。又は項から変換されたアトムがユニファイされる。</td>    </tr>  </tbody></table>"; hash["text"]="term_atom/2 と同じです。<br>項とアトムを相互(双方向)に変換します。<br>つまり、<br>(X) ←→ 'a(X)'{複合項 ←→ アトム}<br>234 ←→ '1234'{数値 ←→ アトム}<br>などの変換が可能です。<br><br>・第1引数は項または変数、第2引数はアトム(65,535文字以内)または変数をそれぞれあてはめます。<br>・複合項をアトムに変換した結果、そのアトムのバイト数が65,53バイトを越えた場合は失敗します。<br>・変換しようとする複合項に値が定まってない変数が含まれているか、変換しようとするものが値が定まってない変数そのものであるとき、その変数名は保証されません。(アトムになった時に変数名が変ります)<br>・複合項になったとき不完全(括弧の数が合わないなど)になるようなアトムを複合項に変換しようとした場合はエラー(Syntax errorになります。"; hash["reference"]=""; hash["sample"]="| ?-term_to_atom(X,'123'),integer(X).<br>X = 123<br>yes<br>| ?-term_to_atom(a(X),'a(123)').<br>X = 123<br>yes<br>| ?-term_to_atom(X,'a(').<br>syntax error<br>| ?-term_to_atom(123,X),atom(X).<br>X = 123<br>yes<br>| ?-term_to_atom(aaa,X).<br>X = aaa<br>yes"; hash["genre"]="19"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="705"; hash["name"]="append/1"; hash["common"]=""; hash["format"]="append(+A)"; hash["argument"]="A:ファイル名"; hash["text"]="tella/1 と同じです。<br>アペンドモードでオープンされる以外は tell/1 と同じ機能を持ちます。<br>アペンドモードとは同名ファイルが既に存在する場合、その内容はそのままにしておき、以降に書込むデータをそのファイルの最後に追加するモードです。"; hash["reference"]=""; hash["sample"]="?-tell('abc.txt'),write(abc),told.<br>yes<br>?-append('abc.txt'),write(def),told.<br>yes<br><br><br><span style='color:#FFFF00'>この結果、abc.txt というファイルの内容は abcdef となります。</span>"; hash["genre"]="2"; hash["used"]="true"; hash["incident"]="tella/1"; azlist.push(hash);
var hash={}; hash["id"]="706"; hash["name"]="displayq/1"; hash["common"]=""; hash["format"]="displayq(+T)"; hash["argument"]="T:出力する項"; hash["text"]="display/1と同じです。<br>Tを正規の表現で現在の出力ストリームに出力します。<br>・演算子形式の複合項は述語形式に直されて出力されます。<br>・ストリングはその実態であるキャラクタコードのリストととして出力されます。<br>・リスト形式の複合項は述語形式に直されず、そのまま出力されます。<br>・未代入の変数の場合は変数名がそのまま出力されます。"; hash["reference"]=""; hash["sample"]="| ?-displayq(&#39;abcdef&#39;),nl.<br>abcdef<br>yes<br>| ?-displayq(&#39;ABCDEF&#39;),nl.<br>&#39;ABCDEF&#39;<br>yes<br>| ?-displayq(&#39;abc def&#39;),nl.<br>&#39;abc def&#39;<br>yes<br>| ?-displayq(&#39;A&#39;(123)),nl.<br>&#39;A&#39;(123)<br>yes<br>| ?-displayq(1+2*3),nl.<br>+(1,*(2,3))<br>yes<br>| ?-displayq(\&quot;abc\&quot;),nl.<br>[97,98,99]<br>yes"; hash["genre"]="4"; hash["used"]="true"; hash["incident"]="tell/1<br>tella/1<br>read/1<br>writeq/1<br>display/1<br>write_canonical/1"; azlist.push(hash);
var hash={}; hash["id"]="707"; hash["name"]="cabocha_sparse_tonode/3"; hash["common"]=""; hash["format"]="cabocha_sparse_tonode(+CABOCHA, +STATEMENT, -RESULT)"; hash["argument"]=""; hash["text"]="あたえられた文(STATEMENT)を解析する。<br>STATEMENTは、アトムかリストである。<br>結果を文字列として返す(RESULT)。"; hash["reference"]=""; hash["sample"]=""; hash["genre"]="35"; hash["used"]="true"; hash["incident"]=""; azlist.push(hash);
var hash={}; hash["id"]="708"; hash["name"]="=¥=  /xfx"; hash["common"]=""; hash["format"]="N1 =¥= N2"; hash["argument"]="N1,N2:共に数式"; hash["text"]="N1とN2の双方を評価した値が等しくない場合に成功し、それ以外の場合は失敗します。"; hash["reference"]=""; hash["sample"]="| ?-1+1 =¥¥= 1.<br>yes<br>| ?-1+1 =/= 1.<br>yes<br>| ?-1.0 =/= 1.<br>no"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="=:=  /xfx <br><  /xfx <br>>  /xfx <br>=<  /xfx <br>>=  /xfx <br>=/=  /xfx"; azlist.push(hash);
var hash={}; hash["id"]="709"; hash["name"]="¥==  /xfx"; hash["common"]="ISO"; hash["format"]="T1 ¥== T2"; hash["argument"]="T1・T2:ストリーム値を除く項。ただし、数式は評価されない。"; hash["text"]="T1とT2とが等しくない場合に成功し、それ以外の場合は失敗します。==   /xfx とまったく反対の結果になります。項の比較方法は ==   /xfx と同じです。(==   /xfx 参照)"; hash["reference"]=""; hash["sample"]="<pre>| ?-abc /== abc.<br>no<br>| ?-a(1,2) /== a(1,2).<br>no<br>| ?-1+2 /== 1+2.<br>no<br>| ?-1+2 /== 3.<br>yes<br>| ?-1+2 /== 2+1.<br>yes<br>| ?-&quot;abc&quot; /== [97,98,99].<br>no</pre>"; hash["genre"]="15"; hash["used"]="true"; hash["incident"]="==  /xfx<br>@<  /xfx<br>@=<  /xfx<br>@>  /xfx<br>@>=  /xfx<br>compare/3"; azlist.push(hash);
