※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。see/2,get0/2,tell/2,put/2ファイルのオープン・クローズ、また、入出力に関する述語を説明します。see/2seeは第一引数を入力ファイルとしてオープンし、そのストリーム値を第二引数の変数にユニファイする述語です。このストリーム値を後述するget0などの第一引数に渡すと、指定ファイルからの入力が可能となります。seeのあとは、入力終了後に必ずseenという述語にストリーム値を渡してクローズする必要があります。get0/2get0はseeの第2引数に返されたストリーム値を渡すことで任意のストリームから読み込むことの出来る述語です。入力値は1文字ずつ取り出され第二引数に文字コードで返されます。解説testという述語は最初にsee述語でa.txtというテキストファイルを読み込んでいます。次に使用されているrepeatという述語は、その述語以降でfailが起きた場合に、処理を繰り返す述語です。ここでは、ファイルの終了フラグN=1が立てられるまで、failさせて繰り返す使い方をしています。get0は読み込まれたファイルの値を1文字づつ取り出しています。fという述語は自作の述語です。ここでは単にgets述語で得られたjisコードを格納したリストをアトムに型変換してwrite述語でインタプリタに出力しているだけの述語です。最後にseenによって入力ストリームをクローズしています。この例では文字コードをWindows環境を想定して作られているため、環境が異なる場合には、EOFや改行コードが異なる場合があります。実行してみましょう?-test.123456789あいうえおHello今日a.txtの内容がget0で取り出された文字コードの形で出力されていることがわかります。tell/2tellは第一引数を出力ファイルとしてオープンし、そのストリーム値を第二引数の変数にユニファイする述語です。このストリーム値を後述するputなどの第一引数に渡すと、指定ファイルへの出力が可能となります。tellのあとは、必ずtoldという述語にストリーム値を渡してクローズする必要があります。put/2putはtellの第2引数に返されたストリーム値を渡すことで任意のストリームに出力することの出来る述語です。入力値はアスキーコードとして認識され、出力時には対応する文字が出力されます。上記の例は最初にsee述語でa.txtというテキストファイルを読み込んでいます。次にtellで出力先のファイルb.txtを指定しています。get0によって入力ファイルの値を取得し、putで出力ファイルへ書き込みを行っています。以上の処理を入力値がファイルの最後(EOF)となるまで、repeatで繰り返しています。最後にそれぞれ、toldとseenで出力ファイルと入力ファイルをクローズさせています。実行してみると、a.txtと同じ内容のb.txtというファイルが作成されます。まとめ今回は以下の事を学習しました。プライバシーポリシー。