Blueberry LISP v 2.40 最終更新日:2002/08/09 18:50)

Your access #

システム制限

LISP システムには次の二つの制限があります。
  • スタック
      内部的に使用されるスタックは (1024*16) の深さ までです。通常これだげあれば問題はないと 思われますが、再帰呼び出しを行う関数を定義した場合 に、あまりも深く再帰呼び出しが行われるとスタックが溢れます。
  • 同時にオープンできる。ファイルやハンドル
      同時にオープンできる。ファイルやハンドルはそれぞれ 128 までです。 よって、開いたファイルやハンドルは必ず閉じるようにしてください。
この他の制限はありませんが、ディスク容量やメモリ容量に依存する事は 言うまでもありません。

ソースプログラムの文字コード

    Lisp のソースプログラムは DBCS (日本語の場合は SHIFT_JIS)または UTF-8 で 作成する事ができます。

    多言語に対応したプログラムを作成する場合は UTF-8 でのコーディングを お勧めします。

コードページの設定と取得

set-codepage get-codepage

  • set-codepage
    • 文法
        (set-codepage cp)
        cp : integer
    • 説明
        カレントスレッドのコードページを cp に設定します。0が指定された 場合は CP_ACP (ANSI code page)に設定されます。
    • 戻り値
        設定されたコードページを返します。
      • システムで設定された変数として、CP-ACP,CP-UTF8,CP-UTF7 が 定義されています。なおプログラム開始時のコードページ は常に CP_ACP です。
    • 関連項目

  • get-codepage
    • 文法
        (get-codepage)
    • 説明
        カレントスレッドのコードページを取得します。
    • 戻り値
        取得したコードページを返します。
      • システムで設定された変数として、CP_UTF8,CP_UTF7 が 定義されています。なおプログラム開始時のコードページ は常に CP_ACP です。
    • 関連項目

ライブラリの読み込み

load 

  • load
    • 文法
        (load lib)
        lib : string
    • 説明
        lib で指定された lisp ライブラリを読み込みます。
    • 戻り値
        成功した場合は t 、失敗した場合は nil が戻されます。
      • (load "common.lsp")
      • プログラムファイルの名前がフルパスではない場合は、プログラムは _pluginsディレクトリに在ると前提しています。
    • 関連項目

定義されている型

    Blueberry Lisp では次の型が定義されています。
  • integer

      32ビット符号付整数値です。

      型は integerp で調べる事ができます。

      (例)
      (integerp 123)
      t

      定数の表現は 10進数,16進数、8進数が使用できます。 16進数は "#x" で始まる16進数、8進数は "#o" で始まる 8進数。

      (例)
      10進数 : 123456
      16進数 : #xff00
      8進数 : #o7130

  • float

      8バイトのサイズを持つ倍精度浮動少数値です。

      型は floatp で調べる事ができます。

      (例)
      (floatp 123.456)
      t

  • character

      一バイトの文字型です。

      型は characterp で調べる事ができます。

      (例)
      (characterp #\a)
      t

      定数の表現は "#\"で始まる一文字です。

  • wcharacter

      ユニコードです。(UTF16LE)

      型は wcharacterp で調べる事ができます。

      (補)
      ソースプログラムが DBCS でかかれている場合に文字がマルチバイト文字の場合は CP_ACP で ユニコードに変換して格納されます。

      (例)
      (wcharacterp #ua)
      t

      定数の表現は "#u"で始まる一文字(ユニコード)です。

  • string

      可変長の長さを持つ文字列です。

      型は stringp で調べる事ができます。

      (補)
      ソースプログラムが UTF-8 でかかれている場合に文字列がマルチバイト文字を含む場合は そのまま UTF-8 で格納されます。

      (例)
      (stringp "hello")
      t

      定数表現は ダブルクオートで囲んで表現します。なお、文字列の 中には次のエスケープ文字が使用できます。また、下に含まれない "\"に続く文字は、その文字そのものは意味します。("\\" -> "\")

      • \n -> #x0a (LF)
      • \r -> #x0d (CR)
      • \t -> #x09 (TAB)

  • wstring

      可変長の長さを持つユニコード文字列です。

      型は wstringp で調べる事ができます。

      (補)
      ソースプログラムが DBCS でかかれている場合に文字列がマルチバイト文字を含む場合は CP_ACP で ユニコードに変換して格納されます。

      (例)
      (wstringp L"こんにちは")
      t

      定数表現は 文字 L に続けて、ダブルクオートで囲んで表現します。なお、文字列の 中には次のエスケープ文字が使用できます。また、下に含まれない "\"に続く文字は、その文字そのものは意味します。("\\" -> "\")

      • \n -> #x0a (LF)
      • \r -> #x0d (CR)
      • \t -> #x09 (TAB)

  • file

      ファイルデスクリプタです。

      型は filep で調べる事ができます。

      (例)
      (filep fp)
      t

  • handle

      イベントやミューテックスのハンドルです。

      型は handlep で調べる事ができます。

      (例)
      (handlep h)
      t

  • socket

      ソケットハンドルです。

      型は socketp で調べる事ができます。

      (例)
      (socketp h)
      t

  • filetime

      ファイル時間です。

      型は filetimep で調べる事ができます。

      (例)
      (filetimep ft)
      t

  • systemtime

      システム時間です。

      型は systemtimep で調べる事ができます。

      (例)
      (systemtimep ft)
      t

  • ベクター

      汎用の一次元配列で、配列の要素は任意のオブジェクトを 格納する事ができます。

      型は vectorp で調べる事ができます。

      定数は #(.....) で表現します。

      (例)
      (setq a #(1 "hello" 1.23))

  • リスト

      これは型ではないですが。リストです。

      型は consp で調べる事ができます。

      (例)
      (consp ls)
      t

型変換

char->integer  integer->char  integer->float  float->integer 

  • char->integer
    • 文法
        (char->integer ch)
        ch : character
    • 説明
        文字 ch を整数値に変換します。
    • 戻り値
        変換後の整数値を戻します。
    • 関連項目

  • integer->char
    • 文法
        (integer->char n)
        n : integer
    • 説明
        整数値 n を 文字型に変換します。
    • 戻り値
        変換後の文字を戻します。
    • 関連項目

  • integer->float
    • 文法
        (integer->float n)
        n : integer
    • 説明
        整数値 n を float型に変換します。
    • 戻り値
        変換後のfloat数値を戻します。
    • 関連項目

  • float->integer
    • 文法
        (float->integer f)
        f : integer
    • 説明
        float 数値 f を 整数型に変換します。
    • 戻り値
        変換後の整数値を戻します。
    • 関連項目

lisp の基本的なキーワード

defvar  setq  set  setf  car  cdr  first  rest  nth  rplaca  rplacd  cons  reverse  append  list  length  member  delete  assoc  rassoc  nth  atom  defun  defmacro  lambda  eval  apply  funcall  funcall 

    これらの関数に関して説明すると、この説明ページの数倍にはなりますので、 Common Lisp 等 Lips の書籍やインターネット上のサイトを参照してください。

数値演算

+  -  *  /  1+  1-  divide  logand  logor  logxor  ash 

  • +,-,*/
    • 文法
        (+  n1 n2 ...nn)
        (-  n1 n2 ...nn)
        (*  n1 n2 ...nn)
        (/  n1n1 n2 ...nn)
        n1 - nn : integer or float
    • 説明
        数値 n1 から nn までを加減乗除します。
    • 戻り値
        計算結果を戻します。
    • 関連項目

  • 1+,1-
    • 文法
        (1+   n)
        (1-   n)
        n : integer or float
    • 説明
        1+ は数値 n をひとつインクリメント、 1- はデクリメントします。
    • 戻り値
        計算結果を戻します。
    • 関連項目

  • divide
    • 文法
        (divide   n1 n2)
        n1 : integer
        n2 : integer
    • 説明
        n1 を n2 で除算した時の商とあまりをドットリストで返します。
    • 戻り値
        計算結果のドットリストを戻します。
      • (divide 10 3)
        (3 . 1)
    • 関連項目

  • logand,logor,logxor
    • 文法
        (logand   n1 n2 ... nn)
        (logor   n1 n2 ... nn)
        (logxor   n1 n2 ... nn)
        n1-nn : integer
    • 説明
        logand は整数値 n1 から nn までの論理積、logorは論理和、 logxor は 排他的論理和を求めます。
    • 戻り値
        計算結果を戻します。
    • 関連項目

  • ash
    • 文法
        (ash   n1 n2)
        n1 : integer
        n2 : integer
    • 説明
        整数値 n1 を 整数値 n2 分左にビットシフトします。 n2 が負の値の 場合は右にシフトします。
    • 戻り値
        計算結果を戻します。
    • 関連項目

比較と結果の OR , AND

eq  equal  =  /=  <  <=  >  >=  string=  string/=  stringi=  stringi/=  char=  char/=  char<  char<=  char>  char>=  chari=  chari/=  chari<  chari<=  chari>  chari>=  or  and  not 

  • eq
    • 文法
        (eq a b)
        a , b : object
    • 説明
        オブジェクト a とb がコンピュータのメモリ上、同じ場所 に在るかどうかを調べます。
    • 戻り値
        同じ場所にある場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • equal
    • 文法
        (equal a b)
        a , b : object
    • 説明
        オブジェクト a とb が型を含めて同じであるかどうかを調べます。
    • 戻り値
        同じ場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • =,/=,<<=>>=
    • 文法
        (= n1 n2 ... nn)
        (/= n1 n2 ... nn)
        (< n1 n2 ... nn)
        (<= n1 n2 ... nn)
        (> n1 n2 ... nn)
        (>= n1 n2 ... nn)
        n1 - nn : integer or float
    • 説明
      • =
          数値 n1 から nn まで全て同じ値かどうかを調べます。
      • /=
          数値 n1 から nn まで全て別の値かどうかを調べます。
      • <
          数値 n1 から nn までを順に比較して n の値が 次のより小さいか どうかを調べます。
      • <=
          数値 n1 から nn までを順に比較して n の値が 次のより小さいか等しいか どうかを調べます。
      • >
          数値 n1 から nn までを順に比較して n の値が 次のより大きいか どうかを調べます。
      • >=
          数値 n1 から nn までを順に比較して n の値が 次のより大きいか等しいか どうかを調べます。
    • 戻り値
        結果が真なら t 、そうでない場合は nil を返します。
    • 関連項目

  • string=,stringi=
    • 文法
        (string= s1 s2)
        (stringi= s1 s2)
        s1 : string or wstring
        s2 : string or wstring
    • 説明
        文字列 s1 と s2 を比較して同じかどうかを調べます。 string= は大文字と小文字を 区別して比較しますが、stringi= の場合は区別しません。
      • string と wstring は比較できません。
    • 戻り値
        結果が真なら t 、そうでない場合は nil を返します。
    • 関連項目

  • string/=,stringi/=
    • 文法
        (string/= s1 s2)
        (stringi/= s1 s2)
        s1 : string or wstring
        s2 : string or wstring
    • 説明
        文字列 s1 と s2 を比較して同じでは無い事を調べます。 string/= は大文字と小文字を 区別して比較しますが、stringi/= の場合は区別しません。
      • string と wstring は比較できません。
    • 戻り値
        結果が真なら t 、そうでない場合は nil を返します。
    • 関連項目

  • char=,char/=,char<,chat<=,char>,char>=, chari=,chari/=,chari<,chati<=,chari>,chari>=
    • 文法
        (char= n1 n2 ... nn)
        (char/= n1 n2 ... nn)
        (char< n1 n2 ... nn)
        (char<= n1 n2 ... nn)
        (char> n1 n2 ... nn)
        (char>= n1 n2 ... nn)
        (chari= n1 n2 ... nn)
        (chari/= n1 n2 ... nn)
        (chari< n1 n2 ... nn)
        (chari<= n1 n2 ... nn)
        (chari> n1 n2 ... nn)
        (chari>= n1 n2 ... nn)
        n1 - nn : character or wcharacter
    • 説明

      i の付く関数、例えば chari= は、大文字小文字の区別をしません。

      • char=,chari=
          文字 n1 から nn まで全て同じ値かどうかを調べます。
      • char/=,chari/=
          文字 n1 から nn まで全て別の値かどうかを調べます。
      • char<,chari<
          文字 n1 から nn までを順に比較して n の値が 次のより小さいか どうかを調べます。
      • char<=,chari<=
          文字 n1 から nn までを順に比較して n の値が 次のより小さいか等しいか どうかを調べます。
      • char>,chari>
          文字 n1 から nn までを順に比較して n の値が 次のより大きいか どうかを調べます。
      • char>=,chari>=
          文字 n1 から nn までを順に比較して n の値が 次のより大きいか等しいか どうかを調べます。
      • character と wcharacter は比較できません。
    • 戻り値
        結果が真なら t 、そうでない場合は nil を返します。
    • 関連項目

  • or , and
    • 文法
        (or s1 s2 ... sn)
        (and s1 s2 ... sn)
        (not s1)
        s1 - sn : s式
    • 説明
        or は s 式 s1 から sn のいずれかか nil では無い事を調べます。 and は s 式 s1 から sn の全てが nil では無い事を調べます。 not は s 式 s1 が nit なら t それ以外なら t を返します。
    • 戻り値
        結果が真なら t 、そうでない場合は nil を返します。
    • 関連項目

ロジック制御

if  cond  when  unless  progn  while  dotimes  dolist  do  return  try  super-try  throw 

  • if
    • 文法
        (if condition s1 [s2])
        condition: s式 s1: s式 s2: s式
    • 説明
        条件式 condition が nil では無い場合は、式 s1 を、そうでない場合は 式 s2 を実行します。式 s2 は省略可能です。
    • 戻り値
        最後に評価された式の値を返します。
      • (if (> 0 a ) (print "yes") (print "no"))
    • 関連項目

  • while
    • 文法
        (while condition s1 s2 ... sn))
        condition: s式
        s1-sn: s式
    • 説明
        条件式 condition が nil では無い間、式 s1 から 式 sn までを 繰り返し実行します。
    • 戻り値
        最後に評価された式の値を返します。
      • (setq n 0)
        (while (< 10 n ) (print n) (setq n (+ 1 n)))
    • 関連項目

  • cond
    • 文法
        (cond
          (
            condition1
            s11 s12 ... s1n
          )
          (
            condition2
            s21 s22 ... s2n
          )
          .
          .
          .
          (
            conditionn
            sn1 sn2 ... snn
          )
        )
    • 説明
        条件式 condition1 から conditionn までを順番に調べ、条件が nil では無い 条件に出会ったら、条件式に続くs式を実行します。実行が終わったら制御は cond 式の外にでます。全ての条件が nil の場合はなにも実行されません。
    • 戻り値
        最後に評価された式の値を返します。
      • (cond
          (
            (numberp s)
            (printf 0 "number: %n \n" s)
          )
          (
            (stringp s)
            (printf 0 "string %s\n" s)
          )
          (
            t
            (printf 0 "other\n")
            (print s)
          )
        )
    • 関連項目

  • when
    • 文法
        (when condition s1 s2 ... sn)
    • 説明
        条件式 conditionが t の時 s 式 s1 - sn を実行します。
    • 戻り値
        最後に評価された式の値を返します。
    • 関連項目

  • unless
    • 文法
        (unless condition s1 s2 ... sn)
    • 説明
        条件式 conditionが nil の時 s 式 s1 - sn を実行します。
    • 戻り値
        最後に評価された式の値を返します。
    • 関連項目

  • progn
    • 文法
        (progn s1 s2 ... sn)
        s1-sn: s式
    • 説明
        s 式 s1 から sn までを順に実行します。
    • 戻り値
        最後に評価された式の値を返します。
    • 関連項目

  • dotimes
    • 文法
        (doitmes (v n [r]) s1 s2 ... sn)
        v: symbol
        n : s 式
        r : s 式
        s1-sn: s式
    • 説明
        変数 v の値を 0 に初期化して、これを 1 づつインクリメントしながら n の値になるまで、s 式 s1 から sn までを繰り返し実行します。 そして最後に s式 r を実行します。 r は省略可能で、省略された場合 は nil が返されます。
    • 戻り値
        最後に評価された式の値を返します。
      • (dotimes (x 10) (print x))
    • 関連項目

  • dolist
    • 文法
        (dolist (v list [r]) s1 s2 ... sn)
        v: symbol
        list : consp
        r : s 式
        s1-sn: s式
    • 説明
        変数 v の値にリスト list の要素を順に代入しながら、リストが尽きるまで s 式 s1 から sn までを繰り返し実行します。 そして最後に s式 r を実行します。 r は省略可能で、省略された場合 は nil が返されます。
    • 戻り値
        最後に評価された式の値を返します。
      • (dolist  (x  '(1 2 3 4 5 7 8 9 )) (print x))
    • 関連項目

  • do
    • 文法
        (do ((v1 [i1 [st1]]) ...(vn [n1 [stn]]) (test [result]) s1 s2 ... sn)
        v1 - vn: symbol
        i1-in : 初期値
        st1 - stn ステップ式
        test : 終了判定式
        result : 結果式
        s1 - sn : s式
    • 説明
        変数 v1 から vn を i1 から in で初期化し、test 式が真になるまで s 式 s1 -sn を繰り返します。 繰り返すたびに st1 - stn で v1 - vn を更新します。
    • 戻り値
        最後に評価された式または結果式の値を返します。
    • 関連項目

  • return
    • 文法
        (return s)
        s : s式
    • 説明
        while,dotimes,dolist 等ループから抜ける時に使用します。これらのループの 外で使用された場合はプログラムを終了します。
    • 戻り値
        s 式に値を返します。
      • try 構文の中で使用された場合は、例外処理を実行をせずに ループを抜けます。
    • 関連項目

  • try
    • 文法
        (try
          (
            s1 s2 . . . sn
          )
          (
            e1 e2 . . . en
          )
        )
    • 説明
        通常は s1 から sn まで順番に実行されますが、例外が発生したり 発生させると(throw ) 、実行を中断して、e1 から en まで実行します。throw 関数を実行 した結果例外が発生した場合を除き e1 から en までの式の評価 が終わった段階でプログラムの実行は終了されます。
    • 戻り値
        最後に評価された式の値を返します。
    • 関連項目

  • super-try
    • 文法
        (super-try
          (
            s1 s2 . . . sn
          )
          (
            e1 e2 . . . en
          )
        )
    • 説明
        通常は s1 から sn まで順番に実行されますが、例外が発生したり 発生させると(throw ) 、実行を中断して、e1 から en まで実行します。

        ここまでは try と同じですが、 super-try の場合は例外発生の原因を問わずプログラムは終了 しません。
    • 戻り値
        最後に評価された式の値を返します。
    • 関連項目

  • throw
    • 文法
        (throw)
    • 説明
        try 式の中で実行し、例外を発生させます。この関数を try 式の外で 実行した場合は、プログラムの実行が中断されます。
    • 戻り値
    • 関連項目

バインディング

  • let,let*
    • 文法
        (let ((v1 i1) (v2 i2) ... (vn in))
        s1 s2 ... sn
        )
        (let* ((v1 i1) (v2 i2) ... (vn in))
        s1 s2 ... sn
        )
    • 説明
        C でいうならばローカル変数の定義みたいなものです。

        変数 v1 から vn を それぞれ 、s式 i1 から in で初期化して、s 式 s1 から sn を実行します。 変数 v1 から vn は let,let* の中(ここから呼出される関数の中を含む)でしか見えません。

        let* は初期化式を左から順に評価しながら、変数を初期化していくが let の場合は、初期化式の 評価が終わってから、その値を編集に代入します。
    • 戻り値
        最後に評価された式の値
      • (let ((x 1) (y 2))
          (let ((x 3)
            (z (+ x y)))
          (* z x))
        )

        結果は 9 になります。

        (let ((x 1) (y 2))
          (let* ((x 3)
            (z (+ x y)))
          (* z x))
        )

        結果は 15 になります。

    • 関連項目

コンソールへの出力

print  printf  terpri  rgb 


  • print
    • 文法
        (print obj)
        obj: any type of objext
    • 説明
        コンソールへオブジェクトの内容を出力します。
    • 戻り値
    • 関連項目

  • printf
    • 文法
        (printf color fmt obj ....)
        color: integer
        fmt: string or wstring
        obj: any type of object
    • 説明
        コンソールへオブジェクトの内容を出力します。color は  rgb で作成された色、fmt は出力フォーマット、 (fmt は "C" の printf と互換) 、obj はひとつ以上のオブジェクトです。 fmt でフォーマットされて表示されます。 なお、color が nil の場合はコンソールへの出力ではなく文字列 を返します。
    • 戻り値
        出力した文字数あるいは文字列
      • 先にも書いたように、color が nil の場合はコンソールへの出力ではなく文字列 を返しまが、fmt が wstring の場合は wstring 、string の場合は string を 返します。
    • 関連項目

  • terpri
    • 文法
        (terpri)
    • 説明
        コンソールへ改行コードを出力します。
    • 戻り値
    • 関連項目

  • rgb
    • 文法
        (rgb red,gree,blue)
    • 説明
        RGB カラーを作成します。
    • 戻り値
        色(integer)を返します。
    • 関連項目

ファイルディレクトリ操作①

    decode-file-spec  create-directory  remove-directory  clear-directory  create-temp-file  create-unique-file  copy-file  move-file  delete-file  get-file-attributes 

    以下の関数において引数が wstring で渡された場合は CP_ACP で string に自動変換されて実行されます。

  • decode-file-spec
    • 文法
        (decode-file-spec fname)
        fname : string or wstring
    • 説明
        Blueberry LISP ではファイルのパスを表現するのに特別なエスケープ文字列が使える ようになっています。これは LISP システムのインストール先が変更になっても LISP プログラムを変更せずに済むようにする為です。

        この関数はこれを解析して Windows 本来のパス表現に変換します。

        利用できるエスケープ文字列と、その意味

        • %windows%
            Windows ディレクトリを意味します。
        • %system%
            Windows の system ディレクトリを意味します。
        • %windows-temp%
            Windows の テンポラリディレクトリを意味します。
        • %current%
            カレントディレクトリを意味します。
        • %module%
            LISPシステムのインストールされているディレクトリを意味します。
        • %temp%
            テンポラリディレクトリを意味します。ただし、このディレクトリは LISPシステムのテンポラリディレクトリで Windows のテンポラリ ディレクトリではありません。
        • %sys%
            LISPシステムのシステムディレクトリを意味します。
        • %plugins%
            LISPシステムのプラグイン格納ディレクトリを意味します。
        • %download%
            LISPシステムのファイルダウンロード用のテンポラリな ファイルを意味します。これはディレクトリではありません。

    • 戻り値
        デコード後のファイル名(string)を返します。
      • (decode-file-spec "%temp%/test.txt") "c:/bbss/_temp/test.txt"
    • 関連項目

  • create-directory

  • remove-directory

  • clear-directory

  • create-temp-file
    • 文法
        (create-temp-file prefix)
        prefix : string or wstring
    • 説明
        テンポラリなファイルを %temp% ディレクトリに作成します。 prefix はテンポラリなファイり名のプレフィックスです。 3文字以上にしてください。
    • 戻り値
        成功した場合は 作成されたテンポラリファイルの 名前(string) が返されます。、失敗した場合は nil が戻されます。
      • このテンポラリなファイルはスレッドが終了した時点で自動的 に削除されます。ただし常駐するプログラムの場合はずいぶん 長い間削除されませんので、原則として不要になったら削除するように 心がけてください。
    • 関連項目

  • create-unique-file

  • copy-file

  • move-file

  • delete-file

  • get-file-attributes
    • 文法
        (get-file-attributes file)
        file : string or wstring
    • 説明
        ファイル file の属性を取得します。
    • 戻り値
        成功した場合は 属性(string)、失敗した場合は nil が戻されます。
      • (get-file-attributes "c:/temp/test.txt")
        "-rwx"
        (get-file-attributes "c:/temp")
        "drwx"

        属性は左から順に ディレクトリ、読み取り属性、書き込み属性、実行属性 で、Windows の場合、実行属性は常に x  ,YES になります。 属性文字 "-"NOを意味し、"drw"は 左から、ディレクトリ、読み取り属性、書き込み属性を意味します。

    • 関連項目

ファイルディレクトリ操作②

open  close  end-of-file  read-line  read-char  write-line  write-char  rewind  read-file  conv-file-code  list-files  read-string  write-string  fseek  ftell 

以下の関数において引数が wstring で渡された場合は CP_ACP で string に自動変換されて実行されます。

  • open
    • 文法
        (open file-name mode)
        file-name : string or wstring
        mode : string or wstring
    • 説明
        file-name で指定されたファイルを開きます。modeはアクセスモードを指定します。
        • "r"
            読み出しモードで開きます。
        • "w"
            書き込みモードで空のファイルを開きます。 指定されたファイルが既にあると、そのファイルの内容が破壊されます。
        • "a"
            追加書きモードで開きます。
        • "r+"
            読み出しと書き込みの両方のモードで開きます (対象は既存ファイル)。
        • "w+"
            読み出しと書き込みの両方のモードで空のファイルを開きます。 指定されたファイルが既にあると、そのファイルの内容が破壊されます。
        • "a+"
            読み出しと書き込み、追加書きモードで開きます。
        • "t"
            テキストモードで開きます。 なお、これは、上のモードのいずれかと組み合わせで使います。 テキスト モードでは、CR-LF (キャリッジリターンとライン フィード) シーケンスは入力時に 1 個のライン フィード (LF) に変換されます。 出力時には、LF 文字は CR-LF シーケンスに変換されます。
        • "b"
            バイナリモードで開きます。 なお、これは、上のモードのいずれかと組み合わせで使います。 CR-LF の変換は行われません。
    • 戻り値
        成功した場合はファイルハンドラ(filep) を戻します。失敗した 場合は nil が戻ります。
    • 関連項目

  • close

  • end-of-file
    • 文法
        (end-of-file file)
        file : filep
    • 説明
        fileで指定されたファイルの終わりに到達したかどうかを調べます
    • 戻り値
        ファイルの終わりの場合は t 、そうでない場合は nil が戻ります。
      • (if (not (read-line file))
          (if (end-of-file file)
            (......ファイル終わりの処理.....)
          )
        )
    • 関連項目

  • read-line
    • 文法
        (read-line file)
        file : filep
    • 説明
        fileで指定されたファイルから、改行文字(CR-LF)に出会うか、内部バッファサイズ (1024*8 バイト) -1  文字まで読み込みます。 従って、読み込まれた結果が "\n" で終わっていない場合は、 内部バッファを越えるサイズの行がある事を意味します。
    • 戻り値
        読み込んだ文字列(string)を返します。失敗した場合は nil が戻されます。
      • read-line はファイルから文字列を読み込むだけではなくソケットから 文字列を受信する場合も使用されます。 この場合 上記の file はソケットを渡します。

        ソケットから文字列を受信する場合は(CR-LF) が取り除かれた文字列 が返されます。

        ソケット関数 
    • 関連項目

  • read-string
    • 文法
        (read-string file buff length)
        file : filep
        buff : string
        length : integer
    • 説明
        fileで指定されたファイルから、length で指定されたバイト数を読み込みます length は 、関数string-lengthの返すサイズの範囲 です。文字列 buff は破壊的修正を受けます。
    • 戻り値
        成功した場合は t 失敗した場合は nil を返します。
      • read-string はファイルから文字列を読み込むだけではなくソケットから 文字列を受信する場合も使用されます。 この場合 上記の file はソケットを渡します。

        ソケットから文字列を受信する場合は length で指定されたバイト数を 受信するまで制御は戻りません。

        ソケット関数 
    • 関連項目

  • read-char

  • write-line
    • 文法
        (write-line file text)
        file : filep
        test : string
    • 説明
        fileで指定されたファイルに、text に格納されている文字列を書き込みます。
    • 戻り値
        成功した場合は t 、失敗した場合は nil が戻されます。
      • write-line はファイルに文字列を書き込むだけではなくソケットへ 文字列を送信する場合も使用されます。 この場合 上記の file はソケットを渡します。

        ソケットへ文字列を送信する場合は(CR-LF) の変換は行われません。また、 (CR-LF) が自動的に附加される事もありません。

        ソケット関数 
    • 関連項目

  • write-string
    • 文法
        (write-string file buff length)
        file : filep
        buff : string
        length : integer
    • 説明
        fileで指定されたファイルへ、length で指定されたバイト数を書き込みます。 length は 関数string-lengthの返すサイズの範囲 です。
    • 戻り値
        成功した場合は t 失敗した場合は nil を返します。
      • write-string はファイルに文字列を書き込むだけではなくソケットへ 文字列を送信する場合も使用されます。 この場合 上記の file はソケットを渡します。

        ソケットへ文字列を送信する場合は length で指定されたバイト数を 送信するまで制御は戻りません。

        ソケット関数 
    • 関連項目

  • write-char

  • rewind

  • fseek
    • 文法
        (fseek file offset origin)
        file : filep
        offset : integer
        origin : integer
    • 説明
        fileで指定されたファイルのファイルポインタをoffset で指定された位置に 移動します。origin が 0の場合はファイルの先頭から、1の場合は現在の 位置から、2の場合はファイルの最後からの移動になります。
    • 戻り値
        成功した場合は t 、失敗した場合は nil が戻されます。
    • 関連項目

  • ftell

  • read-file
    • 文法
        (read-file file-name)
        file-name : string or wstring
    • 説明
        file-name で指定された名前を持つファイル全体を読み込みます。
    • 戻り値
        成功した場合はファイル全体が格納された文字列(string)が返されます。 失敗した場合は nil が戻されます。
      • この関数の対象はテキストファイルであり、バイナリファイル に対して実行した場合の結果は保証されていません。
    • 関連項目

  • conv-file-code
    • 文法
        (conv-file-code file-name soc-code dst-code)
        file-name : string or wstring
        soc-code: string or wstring
        dst-code: string or wstring
    • 説明
        file-name で指定された名前を持つファイルの文字コードを、 soc-code で指定された文字コードから dst-code で指定された 文字コードに変換します。(ファイル自体が書き換えられます)

        soc-code  , dst_code
        • "auto"
            ファイルの文字コードは自動判定されます。 これは dst_code に使用する事はできません。
        • "euc"
            ファイルの文字コードはeucです。
        • "jis"
            ファイルの文字コードはeucです。
        • "shift_jis"
            ファイルの文字コードはshift_jisです。
        • "utf-8"
            ファイルの文字コードはutf-8です。

      • 戻り値
          成功した場合は t 、 失敗した場合は nil が戻されます。
        • utf-8 に変換される場合のコードページは コンピュータの デフォルトのコードページが使用されます。
      • 関連項目

    • list-files
      • 文法
          (list-files file-spec)
          file-spec : string or wstring
      • 説明
          file-spec で指定されたファイルをリストします。ワイルドカードが 使用できます。
      • 戻り値
          成功した場合はファイルをリストで返します。 失敗した場合は nil が戻されます。

          ファイルリストは次のリストのリストです。

          (ファイル属性(  ファイルサイズ(LOW)  ファイルサイズ(HIGH)  ファイル時間  ファイル名)

          • ファイル属性(string)
          • ファイルサイズLOW(integer)
          • ファイルサイズHIGH(integer)
          • ファイル時間(filetime)
          • ファイル名前(string)

        • (list-files "%windows%/*.dll")

          (("-rwx" 49288 0 #filetime:2002/06/01 05/10/04 "appversions.dll")
          ("-rwx" 40056 0 #filetime:2002/05/05 01/13/17 "sdkhelpmsi.dll")
          ("-rwx" 301176 0 #filetime:2002/06/01 05/10/04 "sdkinst.dll")
          ("-rwx" 20240 0 #filetime:1999/12/17 12/00/00 "vmmreg32.dll")
          )
      • 関連項目



プロパティファイルの読み書き

get-profile-int  get-profile-str  put-profile-int  put-profile-str  flush-profile 

以下の関数において引数が wstring で渡された場合は CP_ACP で string に自動変換されて実行されます。

  • get-profile-int
    • 文法
        (get-profile-int sec key defualt path)
        sec: string or wstring
        key: string or wstring
        default: integer
        path: string or wstring
    • 説明
        プロパティファイルから整数値を取得します。
        • sec : セクション名
        • key : キー
        • default : デフォルト値
        • path : プロファイルの名前
    • 戻り値
        取得した整数値を戻します。
    • 関連項目

  • get-profile-str
    • 文法
        (get-profile-str sec key defualt path)
        sec: string or wstring
        key: string or wstring
        default: string or wstring
        path: string or wstring
    • 説明
        プロパティファイルから文字列を取得します。
        • sec : セクション名
        • key : キー
        • default : デフォルト値
        • path : プロファイルの名前
    • 戻り値
        取得した文字列を戻します。
      • デフォルト値が wstringで与えられた場合 は返される文字列も wstring になります。
    • 関連項目

  • put-profile-int
    • 文法
        (put-profile-int sec key defualt path)
        sec: string or wstring
        key: string or wstring
        val: integer
        path: string or wstring
    • 説明
        プロパティファイルに整数値を設定します。
        • sec : セクション名
        • key : キー
        • val : 値
        • path : プロファイルの名前
    • 戻り値
        設定した整数値を戻します。
    • 関連項目

  • put-profile-str
    • 文法
        (put-profile-str sec key defualt path)
        sec: string or wstring
        key: string or wstring
        val: string or wstring
        path: string or wstring
    • 説明
        プロパティファイルに文字列を設定します。
        • sec : セクション名
        • key : キー
        • val : 値
        • path : プロファイルの名前
    • 戻り値
        設定した文字列を戻します。
    • 関連項目

  • flush-profile
    • 文法
        (flush-profile path)
        path: string or wstring
    • 説明
        プロパティファイルをディスクにフラッシュします。
        • path : プロファイルの名前
    • 戻り値
        常に t を戻します。
    • 関連項目

ソケット関数

open-socket  bind-logfile  recv  send  set-timeout  enable-log  is-ip-address 

  • open-socket
    • 文法
        (open-socket host port timeout family type option)
        host : string
        port : integer
        timeout : integer
        family : integer
        type : integer
        option : integer
    • 説明
        host で指定されたサーバの port(ポート番号) に接続されたソケットを作成します。
        • timeout は接続時のタイムアウト時間で単位はミリ秒、
        • faimily
          • 0 : IPV4,IPV6 のいずれか相手のサポートしているバージョンで接続
          • 4 : IPV4で接続
          • 6 : IPV6で接続
        • type : 0 の場合はストリーム、1 の場合はデータグラムソケットを作成
        • option : 現在未使用です。
    • 戻り値
        接続に成功した場合はソケット(socket)を返し、失敗した場合は nil が 戻ります。
      • ソケットからのストリームの読み出しと書き出しは read-line と write-line  を使用します。
    • 関連項目

  • bind-logfile
    • 文法
        (bind-logfile sock proto)
        sock : socket
        proto : string
    • 説明
        ソケット sock にログファイルを割り当てます。 proto はログファイルの名前の一部に使われますので、 出来るだけユニークになるように設定してください。
    • 戻り値
        バインドできた場合は t 、出来なかった場合は nil に なります。
    • 関連項目

  • recv
    • 文法
        (recv sock buff length mode)
        sock : soket
        buff : string
        length : integer
        mode : t or nil
    • 説明
        ソケット sock から length バイトを buff に読み込みます。 mode が t の場合はlength バイト読み込むか、タイムアウトに なるまで制御が戻りません。 nil の場合は一文字以上、length バイトまで可能な限り受信して制御を戻します。
    • 戻り値
        接続に成功した場合は受信できたバイト数を戻します。 失敗した場合は nil が戻ります。
      • 指定されたバイト数がバッファ buff のサイズを超える場合は buff のサイズだけ受信されます。
    • 関連項目

  • send
    • 文法
        (send sock buff length)
        sock : soket
        buff : string
        length : integer
    • 説明
        ソケット sock にから length バイトを buff から送信します。 length バイトを送信するかタイムアウトになるまで制御は 戻りません。
    • 戻り値
        接続に成功した場合は送信したバイト数を戻します。 失敗した場合は nil が戻ります。
      • 指定されたバイト数がバッファ buff のサイズを超える場合は buff のサイズだけ送信されます。
    • 関連項目

  • set-timeout
    • 文法
        (set-timeout sock timeout)
        sock : sock
        timeout : integer
    • 説明
        sock で指定されたソケットの通信タイムアウト時間をミリ秒単位で指定します。 timeout が設定時間です。
    • 戻り値
        成功した場合は設定されたタイムアウト時間、失敗した場合は nil が 戻ります。
    • 関連項目

  • enable-log
    • 文法
        (enable-log sock stat)
        sock : sock
        stat : t or nil
    • 説明
        sock で指定されたソケットの通信ログの書き出しを許可または禁止します。 stat が t の場合は許可、nil の場合は禁止です。
    • 戻り値
        常に t を戻します。
    • 関連項目

  • is-ip-address
    • 文法
        (is-ip-address domain)
        domain : string
    • 説明
        domain が IP アドレスで表現されているかどうかを調べます。
    • 戻り値
        IP アドレスの場合は t 、そうでない場合は nilを戻します。
      • (is-ip-address "127.0.0.1")
        t
        (is-ip-address "hotmail.com")
        nil
    • 関連項目

DNS 関数

dns-query 

  • dns-query
    • 文法
        (dna-query disable-udp dns-server type domain)
        disable-udp : t or nil
        dns-server : string or nil
        type : string
        domain : string
    • 説明
        dns サーバから domain を探します。
        • disable-udp : t の場合は UDP での検索を禁止します。
        • dns-server : DNS サーバノ名前です。 nil の場合じは自動でサーバを探します。
        • type : 検索するドメインのタイプです。

          現在つぎの3っつのタイプがサポートされています。

          • "mx" : MXを検索
          • "a" : Aを検索
          • "aaaa" : AAAAを検索
          • domain : 検索対象です。
    • 戻り値
        成功した場合は検索結果をリストで返します。検索できなかった場合は nil が 戻されます

        リストは次のようなリストで構成されいます。

        (type ttl ttl-start preference name)
        • type : "mx" "a" "aaa" のいずれかです。
        • ttl : 検索結果の有効期限で、単位は秒です。
        • ttl-start : 検索された時間で 1970/01/01 からの経過秒数です。
        • preference : "mx" の検索時に有効です。
        • name : 検索されたサーバの名前またはIPアドレスです。

      • (dns-query t nil "mx" "hotmail.com")
    • 関連項目

FTP 関数

ftp  ftp-list-files  ftp-get-cur-dir  ftp-get-local-cur-dir 

これらの関数は Roxas version 6.01 以降で使用可能です。Blueberry Server Server では 使用できません。

  • ftp
    • 文法
        (ftp command)
        command: string
    • 説明
        コンソールコマンド、command を実行します。
    • 戻り値
        成功した場合は t、失敗した場合は nil が返されます。
      • (ftp (strcat "open" host))
    • 関連項目

  • ftp-list-files
    • 文法
        (ftp-list-files file-spec)
        file-spec : string
    • 説明
        file-spec で指定されたリモートファイルをリストします。ワイルドカードが 使用できます。
    • 戻り値
        成功した場合はファイルをリストで返します。 失敗した場合は nil が戻されます。

        ファイルリストは次のリストのリストです。

        (ファイル属性(  ファイルサイズ(LOW)  ファイルサイズ(HIGH)  ファイル時間  ファイル名)

        • ファイル属性(string)
        • ファイルサイズLOW(integer)
        • ファイルサイズHIGH(integer)
        • ファイル時間(filetime)
        • ファイル名前(string)

      • (ftp-list-files "*.*")

        (("-rw-r-----" 19719 0 #filetime:2002/07/09 23/31/00 "cons.jpg")
        ("-rwxr-xr-x" 1405 0 #filetime:2002/07/09 23/31/00 "echo.cgi")
        ("-rw-r-----" 22939 0 #filetime:2002/07/09 23/31/00 "image1.jpg")
        ("-rw-r-----" 8977 0 #filetime:2002/07/12 01/57/00 "lisp.txt")
        )
    • 関連項目

  • ftp-get-cur-dir
    • 文法
        (ftp-get-cur-dir)
    • 説明
        現在のリモートディレクトリを取得します。
    • 戻り値
        成功した場合はディレクトリが戻されます、失敗した場合は nil が返されます。
    • 関連項目

  • ftp-get-local-cur-dir
    • 文法
        (ftp-get-local-cur-dir)
    • 説明
        現在のローカルディレクトリを取得します。
    • 戻り値
        成功した場合はディレクトリが戻されます、失敗した場合は nil が返されます。
    • 関連項目

時間関数

sleep  time  get-system-time  get-local-time  set-system-time  set-local-time  system-time->string  system-time->list  list->system-time  get-time-zone  file-time->system-time  system-time->file-time  file-time->local-file-time  compare-file-time  get-file-time  set-file-time  get-days-after  ctime  time->localtime  time->gmtime  time->list  time->system-time  system-time->time  get-tickcount 

スレッドの起動

run, is-alive create-process shell-execute

  • run
    • 文法
        (run script entry)
        script : string entry : string
    • 説明
        script で指定されたプログラムをスレッドとして起動し、最初に entry で指定された命令を実行します。
    • 戻り値
        スレッドの作成に成功した場合はスレッド識別子(integer)、失敗した場合は nil が返されます。
      • (run "test.lsp" "(main)")

        test.lspをスレッドとして起動し最初に関数 main を実行します。
    • 補-1
        プログラムファイルの名前がフルパスではない場合は、プログラムは _pluginsディレクトリに在ると前提しています。
    • 補-2
        起動されたスレッドには呼出し側とは別のメモリ空間が割り当てられますので、 お互いの関数や変数は見えません。
    • 関連項目

  • is-alive
    • 文法
        (is-alive)
        id : integer
    • 説明
        スレッド識別子 id で指定されたスレッドが稼動中かどうかを調べます。
    • 戻り値
        スレッドが稼動中の場合は t、終了している場合は nil が帰ります。
    • 関連項目

  • create-process
    • 文法
        (create-process prog wait show)
        prog : string
        wait : t or nil
        show : t or nil
    • 説明
        prog で指定されたプロセスを作成します。wait が t の場合は プロセスの 終了を待って制御を戻します。 また、show が t の場合はプロセスのウインドウ を表示しますが、 nil の場合はウインドウを表示しません。
    • 戻り値
        プロセスの起動に成功した場合は t 、失敗した場合は nil を返します。
    • 関連項目

  • shell-execute
    • 文法
        (shell-execute f param dir show)
        f : string
        param : string or nil
        dir : string or nil
        show : t or nil
    • 説明
        f で指定されたファイルを関連付けで開(実行)きます。param は渡すパラメータです。 param が nil の場合は NULL が渡されます。dir は作業ディレクトリです。 nil の場合 はカレントディレクトリになります。 また、show が t の場合はプロセスのウインドウ を表示しますが、 nil の場合はウインドウを表示しません。
    • 戻り値
        起動に成功した場合は t 、失敗した場合は nil を返します。
    • 関連項目

スレッド間の同期

open-event  wait-event  set-event  reset-event  open-mutex  get-mutex  release-mutex  is-aborted 

  • open-event
    • 文法
        (open-event name manual-reset)
        name : string or wstring
        manual-reset : t or nil
    • 説明
        name で指令されたイベントを作成します。manual-reset が t の場合は イベントステータスは reset-event でリセットするまでシグナル状態 を続けます。
    • 戻り値
        イベントハンドル(handle)を返します。このハンドルは不要になった 段階で閉じなくてはいけません。ハンドルは close 関数を使って 閉じます。
      • (setq h (open-event "test" t))
        .
        .
        .
        (close h)
        イベント test を作成して、最後に close でこの ハンドルを閉じています。
    • 関連項目

  • wait-event
    • 文法
        (wait-event hevent timeout)
        hevent : handle
        timeout : integer
    • 説明
        hevent で指定されたイベントがシグナル状態になるのを待ちます。 timeout は待っている時間で、単位はミリ秒です。なお、timeout が t の場合はずっと待ちつづけます。また、0 の場合はすぐに 結果を返します。
    • 戻り値
        シグナル状態の場合は t 、そうでない場合は nil が戻されます。
    • 関連項目

  • set-event
    • 文法
        (set-event hevent)
        hevent : handle
    • 説明
        hevent で指定されたイベントをシグナル状態にします。
    • 戻り値
        処理に成功した場合は t 、失敗した場合は nil が 返されます。
    • 関連項目

  • reset-event
    • 文法
        (reset-event hevent)
        hevent : handle
    • 説明
        hevent で指定されたイベントを非シグナル状態にします。
    • 戻り値
        処理に成功した場合は t 、失敗した場合は nil が 返されます。
    • 関連項目

  • open-mutex
    • 文法
        (open-mutex name)
        name : string or wstring
    • 説明
        name で指令されたミューテックスを作成します。
    • 戻り値
        ミューテックスハンドル(handle)を返します。このハンドルは不要になった 段階で閉じなくてはいけません。ハンドルは close 関数を使って 閉じます。
      • (setq h (open-mutex "test"))
        .
        .
        .
        (close h)
        ミューテックス test を作成して、最後に close でこの ハンドルを閉じています。
    • 関連項目

  • get-mutex
    • 文法
        (get-mutex hmutex timeout)
        hmutex : handle
        timeout : integer
    • 説明
        hmutex で指定されたミューテックスがシグナル状態になるのを待ちます。 timeout は待っている時間で、単位はミリ秒です。なお、timeout が t の場合はずっと待ちつづけます。また、0 の場合はすぐに 結果を返します。
    • 戻り値
        シグナル状態の場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • release-mutex
    • 文法
        (release-mutex hmutex)
        hmutex : handle
    • 説明
        hmutex で指定されりミューテックスを開放します。なお、これに先立って、 get-mutex でミューテックスが獲得されていなくてはいけません。 また、この関数は hmutex を閉じる事はしませんので、close 関数で最後に必ず閉じて ください。
    • 戻り値
        成功した場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • is-aborted
    • 文法
        (is-aborted)
    • 説明
        システム自体は終了しようとしているかどうかを調べます
    • 戻り値
        t または nil を返します。
    • 関連項目

ベクターの操作




  • make-vector
    • 文法
        (make-vector length &optional fill)
        length:integer
        fill:object
    • 説明
        length サイズのベクターを作成します。fill が指定されている場合は この値で初期化します。なお、初期化された場合の値は eq で等しい 状態になっている事に注意してください。
    • 戻り値
        作成されたベクターを返します。作成されたベクターのサイズは lengthで 調べる事ができます。
    • 関連項目

  • vector
    • 文法
        (vector s1 s2 ... sn)
        s1 - sn : s 式
    • 説明
        s1 から sn からなる ベクターを作成します。
    • 戻り値
        作成されたベクターを返します。作成されたベクターのサイズは lengthで 調べる事ができます。
      • (vector 1 2 3 4 5)
        #(1 2 3 4 5)
    • 関連項目

  • vector-ref
    • 文法
        (vector-ref vec index)
        vec:vector
        index:integer
    • 説明
        ベクター vec の index 番目のオブジェクトを返します。
    • 戻り値
        格納されているオブジェクトを返します。
    • 関連項目

  • vector-set
    • 文法
        (vector-set vec index v)
        vec:vector
        index:integer
        v : object
    • 説明
        ベクター vec の index 番目に オブジェクト v を格納します。
    • 戻り値
        格納されたオブジェクトを返します。
    • 関連項目

  • vector->list
  • list->vector
    • 文法
        (vector->list vec)
        (list->vector list)
    • 説明
        vector->listはベクターをリストにして返します。 list->vectorはリストをベクターにして返します。
    • 戻り値
        ベクターまたはリストを返します。
    • 関連項目

文字列の操作

make-string  make-wstring  fill-string  string-length  chomp  trim-spaces  strlen  strdup  strcmp  strcmpi  strncmp  strnicmp  strcat  strstr  strstrex  strchr  strchrex  strrchr  strrchrex  strlwr  strupr  char-at  set-char  substr  repstr  strtok  atoi  itoa  itowa  toupper  tolower  ismbblead  ismbbtrail  isalpha  isdigit  integer->char  char->integer  integer->wchar  wchar->integer  string->wstring  wstring->string  cast->wstring  cast->string 

文字列はアドレスで管理されています。よって

(setq a "12345")
(setq b a)

を実行した場合は、シンボル a とb は同じ文字列を共有している ことになり a に対する変更は b にも反映されます。

この結果が不本意の場合は strdup を使って コピーします。

(setq a "12345")
(setq b (strdup a))

ただし、定数は例外で

(setq a "12345")
(setq b "12345")

とした場合は a と b は別のアドレスを指しています。また、a や b に変更を 加えても、もともとの文字列 "12345" が変更される事はありません。

(setq a "12345")
(setq b "12345")
はそれぞれ
(setq a (strdup "12345"))
(setq b (strdup "12345"))

と同じです。

★以下の文字列操作関数は特に説明が無い限り、 character,wcharacter,string,wstring いず れでも使用できます。ただし、 (strcmp a b) などの場合、 a   b の型は同じでなくては いけません。また、長さや位置を取り扱う関数の場合 wstring が対象の場合はバイト位置では 無く文字単数です。

★ 以降の説明において、「破壊的修正を加える」という説明が無い限り、 関数を実行した結果、処理の対象となった文字列自体に変更が加えられる事はありません。 逆説的に言えば、「破壊的修正を加える」関数の使用に関しては充分に注意を払って ください。

  • make-string
    • 文法
        (make-string length fil)
        length: integer
        fil: character or nil
    • 説明
        長さ length の文字列を作成します。この文字列は fil が nil では無い場合は、この文字で初期化されます。nil の場合はゼロで 初期化されています。
    • 戻り値
        作成された文字列を返します。
    • 関連項目

  • make-wstring
    • 文法
        (make-wstring length)
        length: integer
    • 説明
        長さ length のユニコード文字列を作成します NULL 文字で初期化されています。
    • 戻り値
        作成された文字列を返します。
    • 関連項目

  • fill-string
    • 文法
        (fill-string text offset length ch)
        text: string
        offset: integer
        length: integer
        fil: character or nil
    • 説明
        文字列 text のオフセット offet から、長さ length を もじ ch で初期化します。 ch が nil の場合はゼロで初期化されます。
    • 戻り値
        text を戻します。
      • この関数は wstring に対しては使用できません。
    • 関連項目

  • string-length
    • 文法
        (string-length s)
        s: string
    • 説明
        文字列 s の為に確保されているメモリサイズを返します。実際には、返された サイズ+1 バイト確保されていますが、これは文字列ターミネータ(null)で、参照する 事も変更する事もできません。なお、この関数は、 関数strlen とは違う事に注意してください。
    • 戻り値
        サイズを返します。
    • 関連項目

  • chomp
    • 文法
        (chomp s)
        s: string
    • 説明
        文字列 s のお尻の改行文字 (CR,LF) を取り去ります。文字列はASCIIZとみなします。 よって、文字列 s の長さは 文字列の先頭から null 文字までです。
    • 戻り値
        文字列自信を返します。
      • この関数は、文字列に対して破壊的修正を加えます。例えば (chomp a) を 実行した場合 シンボル a の内容そのものが変更されます。
    • 関連項目

  • trim-spaces
    • 文法
        (trim-spaces s)
        s: string
    • 説明
        文字列 s の行頭、行末の空白文字 (" ",TAB) を全て取り除きます この関数は、文字列をASCIIZとみなします。 よって、文字列 s の長さは 文字列の先頭から null 文字までです。
    • 戻り値
        文字列自信を返します。
      • この関数は、文字列に対して破壊的修正を加えます。例えば (trim-spaces a) を 実行した場合 シンボル a の内容そのものが変更されます。
    • 関連項目

  • strlen
    • 文法
        (strlen s)
        s: string
    • 説明
        文字列 s の null 文字までの長さを返します。
    • 戻り値
        長さ(integer)を返します。
    • 関連項目

  • strdup
    • 文法
        (strdup s)
        s: string
    • 説明
        文字列 s の コピーを返します。コピーは 文字列 s の 全体で null 文字まででは ありません。
    • 戻り値
        コピーされた文字列(string)を返します。
    • 関連項目

  • strcmp,strcmpi
    • 文法
        (strcmp sa sb)
        (strcmpi sa sb)
        sa: string
        sb: string
    • 説明
        文字列 sa と sb を比較します。 strcmpi は大文字小文字の区別をせずに 比較します。 この関数は、文字列をASCIIZとみなします。 よって、文字列の長さは 文字列の先頭から null 文字までです。
    • 戻り値
      • sa>sb の場合は 1 を返します。
      • sa<sb の場合は -1 を返します
      • sa とsb が同じ場合は 0 を返します
    • 関連項目

  • strncmp,strnicmp
    • 文法
        (strncmp sa sb length)
        (strnicmp sa sb length)
        sa: string
        sb: string
        length: integer
    • 説明
        文字列 sa と sb を長さ length 分比較します。 strnicmp は大文字小文字の区別をせずに 比較します。 この関数は、文字列をASCIIZとみなします。 よって、文字列の長さは 文字列の先頭から null 文字までです。
    • 戻り値
      • sa>sb の場合は 1 を返します。
      • sa<sb の場合は -1 を返します
      • sa とsb が同じ場合は 0 を返します
    • 関連項目

  • strcat
    • 文法
        (strcat s1 s2 ... sn)
        s1: string
        s2: string
        sn: string
    • 説明
        文字列 s1 から sn までを結合した文字列を作成します。
    • 戻り値
        結合された文字列を返します。
    • 関連項目

  • strstr,strstrex
    • 文法
        (strstr s1 s2)
        (strstrex s1 offset s2)
        s1: string
        s2: string
        offset : integr
    • 説明
        文字列 s1 の部分文字列 s2 を探します。 strstrex の場合は offset で 指定された位置から探します。
    • 戻り値
        見つかった場合は s1 の文字列の先頭からのオフセットを返します。
    • 関連項目

  • strchr,strchrex
    • 文法
        (strchr s ch)
        (strchr s offset ch)
        s2: string
        offset : integr
        ch : character
    • 説明
        文字列 s の構成文字 ch を文字列の先頭から探します。 strchrex の場合は offset で 指定された位置から探します。
    • 戻り値
        見つかった場合は文字列 s の先頭からのオフセットを返します。
    • 関連項目

  • strrchr,strrchrex
    • 文法
        (strrchr s ch)
        (strrchr s offset ch)
        s2: string
        offset : integr
        ch : character
    • 説明
        文字列 s の構成文字 ch を文字列の最後から探します。 strrchrex の場合は offset で 指定された位置から探します。
    • 戻り値
        見つかった場合は文字列 s の先頭からのオフセットを返します。
    • 関連項目

  • strupr,strlwr
    • 文法
        (strupr s)
        (strlwr s)
        s: string
    • 説明
        strupr は 文字列 s を大文字に 、strlwr 文字列 s を を小文字に変換します。
    • 戻り値
        変換された文字列を返します。
    • 関連項目

  • char-at,set-char
    • 文法
        (char-at s offset)
        (set-char s offset ch)
        s: string
        offset: integer
        ch: character
    • 説明
        char-at は文字列 s の先頭からの offset 位置に 文字を取得します。 set-char は文字列 s の先頭からの offset 位置に 文字を設定しまし。
    • 戻り値
        char-at は 取得した文字、set-char は文字列 s を 返します。
      • set-char は文字列に対して破壊的修正を加えます。
    • 関連項目

  • substr
    • 文法
        (substr s offset lengtht)
        s: string
        offset: integer
    • 説明
        文字列 s の先頭からのオフセット offset から length 分の 文字列を取得します。offset+length は   string-length    で返される範囲です、
    • 戻り値
        取得された文字列を返します。
    • 関連項目

  • repstr
    • 文法
        (repstr s sa sb offset lengtht)
        sa: string
        sb: string
        offset: integer
        length: integer
    • 説明
        文字列 sa の先頭からのオフセット offset から length 分を 文字列 sb で置き換えます。
    • 戻り値
        置き換え後の文字列を返します。
    • 関連項目

  • strtok
    • 文法
        (strtok sa sb)
        sa: string or nil
        sb: string
    • 説明
        文字列 sa からデリミタの集合 sb に含まれるいずれかの文字で 区切られたトークンを取り出します。 また、sa が nil の場合は、前回取得されたトークンの次の位置から検索します。
    • 戻り値
        取得されたトークンを返します。
      • この関数はデリミタをnull文字で置き換える為に、検索対象となった文字列に 対して破壊的修正を加えます。
    • 関連項目

  • atoi,itoa
    • 文法
        (atoi s)
        (itoa n)
        s: string
        n: number
    • 説明
        atoi は 文字列 s を 整数値に変換、itoa は 整数値 n を 文字列に変換します。
    • 戻り値
      • atoi : 変換後の整数値返します。
      • itoa : 変換後の文字列を返します。
    • 関連項目

  • itowa
    • 文法
        (itowa n)
        n: integer
    • 説明
        数値 n をユニコード文字列に変換します。
    • 戻り値
        変換後の文字列を返します。
    • 関連項目

  • toupper,tolower
    • 文法
        (toupper ch)
        (tolower ch)
        ch: character
    • 説明
        toupper は 文字 ch を大文字に、tolower は 文字 ch を小文字 に変換します。
    • 戻り値
        変換後の文字を返します。
    • 関連項目

  • ismbblead,ismbbtrail
    • 文法
        (ismbblead ch)
        (ismbbtrail ch)
        ch: character
    • 説明
        ismbblead は 文字 ch がマルチバイト文字の第一バイトか、 ismbbtrail は 文字 ch がマルチバイト文字の第2バイトかを 調べます
      • この関数は wcharacter に対しては使用できません。
    • 戻り値
        結果が YES の場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • isalpha,isdigit
    • 文法
        (isalpha ch)
        (isdigit ch)
        ch: character
    • 説明
        isalpha は 文字 ch が 'a' - 'z' , 'A' - 'Z' の範囲にあるかどうかを、 isdigit は 文字 ch が '0' - '9' の範囲にあるかどうかを調べます。
    • 戻り値
        結果が YES の場合は t 、そうでない場合は nil を返します。
    • 関連項目

  • integer->char,char->integer
    • 文法
        (integer->char n)
        (char->integer ch)
        n: integer
        ch: character
    • 説明
        integer->char は 整数値 n を 文字に、 char->integer は 文字 ch を整数値に変換します。
    • 戻り値
      • integer->char は文字を返します。
      • char->integer は整数値を返します。
    • 関連項目

  • integer->wchar,wchar->integer
    • 文法
        (integer->wchar n)
        (wchar->integer ch)
        n: integer
        ch: wcharacter
    • 説明
        integer->wchar は 整数値 n を ユニコードに、 wchar->integer は ユニコードch を整数値に変換します。
    • 戻り値
      • integer->wchar はユニコードを返します。
      • wchar->integer は整数値を返します。
    • 関連項目

  • string->wstring,wstring->string
    • 文法
        (string->wstring s)
        (wstring->string ws)
        s: string
        ws: wstring
    • 説明
        string->wstring は DBCS文字列 をユニコード文字列に wstring->string は ユニコード文字列をDBCS文字列に変換します。 この時使用されるコードページはget-codepage で戻されるコードページです。
    • 戻り値
        変換後の文字列です。
      • (set-codepage CP_UTF8)
        (wstring->string L"こんにちは")

        この例ではユニコード文字列 "こんにちは" をUTF-8文字列に変換します。

        (set-codepage 0)
        (string->wstring "こんにちは")

        この例では DBCS 文字列 "こんにちは" をユニコード文字列に変換します。
    • 関連項目

  • cast->wstring,cast->string
    • 文法
        (cast->wstring s)
        (cast->string ws)
        s: string
        ws: wstring
    • 説明
        cast->wstring は s の型を wstring に変換したものを返します。 cast->string は ws の型を string に変換したものを返します。 s 及び ws 自体の型は変化しないが、メモリ的には同じ場所を指して います。
    • 戻り値
        変換後の文字列です。
    • 関連項目

文字コード変換と調査

euc->dbcs  jis->dbcs  utf8->dbcs  dbcs->euc  dbcs->jis  dbcs->utf8  detect-string-code 

  • euc->dbcs,jis->dbcs,utf8->dbcs
    • 文法
        (euc->dbcs s)
        (jis->dbcs s)
        (utf8->dbcs s)
    • 説明
        euc->dbcs は euc 文字列を DBCS 文字列変換します。 jis->dbcs は jis 文字列を DBCS 文字列変換します。 utf->dbcs は utf-8 文字列を DBCS 文字列変換します。
      • DBCSをUTF8に変換する場合はget-codepage で戻されるコードページを使用します。

        euc や jis や utf-8 だって DBCS の一種ですが(^^;)
    • 戻り値
        変換後の文字列を返します。
    • 関連項目

  • dbcs->euc,dbcs->jis,dbcs->utf8
    • 文法
        (dbcs->euc s)
        (dbcs->jis s flag)
        (dbcs->utf8 s)
    • 説明
        dbcs->euc は DBCS 文字列を euc 文字列変換します。 dbcs->jis は DBCS 文字列を jis 文字列変換します。 dbcs->utf8 はDBCS 文字列を utf-8文字列変換します。 なお、jis->dbcs の場合 flag が t の場合は 半角カタカナを 全角のカタカナに変換します。
      • utf8をDBCSに変換する場合はget-codepage で戻されるコードページを使用します。
    • 戻り値
        変換後の文字列を返します。
    • 関連項目

  • detect-string-code
    • 文法
        (detect-string-code s)
        s : string
    • 説明
        文字列 s の文字コードを判定します。
    • 戻り値
        結果は文字列で戻されます。
        • "euc" : euc
        • "jis" : jis
        • "utf8" : utf-8
        • "dbcs" : dbcs
        • "ascii" : ascii
    • 関連項目

正規表現を使った検索

  • reg-search
    • 文法
        (reg-search code-page s pat offset range ignore-case)
        code-poage : integer
        pat : string
        offset : integer
        range : integer
        ignore-case : t or nil
    • 説明
        正規表現 pat を使って、文字列 s を検索します。
        • code-page は文字列 s と pat のコードページです。
            コードページは CP_ACP と CP_UTF8 だけです。 コードページが 0 の場合は CP_ACP とみなします。
        • pat :検索パターんです。
        • offset は文字列 s の先頭からのオフセットです。
            この位置から検索が行われます。
        • range は検索範囲です。
        • ignore-case が t の場合は大文字小文字の区別をせずに検索が行われます。
    • 戻り値
        みつからなかった場合は nil、見つかった場合は 文字列 s の先頭からのオフセットと 長さをリストで返します。
    • 関連項目

ソート

  • sort
    • 文法
        (sort list key method)
        list : consp
        key : integer
        method integer
    • 説明
        リストを並び替えます。list がリストのリストの場合は key は リストのリストの key 番目の要素で、リストではない場合は、ゼロに 設定します。method が負の値の場合は降順、正に値の場合は昇順に 並び替えます。
    • 戻り値
        並び替えたリストを返します。元のリストに変更は加えられません。
      • この関数は元のリストを破壊的に修正します。
      • (sort '(1 4 3 2 5) 0 1)
        (1 2 3 4 5)

        (sort (list-files "%windows%/*.dll") 4 1)
        (("-rwx" 49288 0 #filetime:2002/06/01 05/10/04 "appversions.dll")
        ("-rwx" 40056 0 #filetime:2002/05/05 01/13/17 "sdkhelpmsi.dll")
        ("-rwx" 301176 0 #filetime:2002/06/01 05/10/04 "sdkinst.dll")
        ("-rwx" 94832 0 #filetime:1999/12/17 12/00/00 "twain.dll")
        ("-rwx" 45328 0 #filetime:1999/12/17 12/00/00 "twain_32.dll")
        ("-rwx" 20240 0 #filetime:1999/12/17 12/00/00 "vmmreg32.dll")
        )
    • 関連項目

BASE64

b64-encode  b64-decode 

  • b64-encode
    • 文法
        (b64-encode s length)
        s : string
        length : integer
    • 説明
        文字列 s の先頭から length バイトを base64 でエンコード します。length は string-length    で返される範囲です、
    • 戻り値
        エンコードされた文字列を返します。
    • 関連項目

  • b64-decode
    • 文法
        (b64-decode s length)
        s : string
        length : integer
    • 説明
        文字列 s の先頭から length バイトを base64 でデコードします。 します。length は strlen    で返される範囲です、
    • 戻り値
        デコードされた文字列を返します。
    • 関連項目

MD5

md5-string  md5-digest 

  • md5-string
    • 文法
        (md5-string s)
        s : string
    • 説明
        文字列 s を MD5 でエンコードします。
    • 戻り値
        エンコードされた文字列を返します。
    • 関連項目

  • md5-digest
    • 文法
        (md5-string data dlen key klen)
        data : string
        dlen : integer
        key : string
        klen : integer
    • 説明
        文字列 data を 文字列 key を 使って MD5 でエンコードします。 dlen , klen はそれぞれの長さです。
    • 戻り値
        エンコードされた文字列を返します。
    • 関連項目

メールアドレスを分解

  • parse-address
    • 文法
        (parse-address s)
        s : string
    • 説明
        文字列 s で示されたメールアドレスを、名前、メールボックス、ホストに 分解します。
    • 戻り値
        分解された、名前、メールボックス、ホストをリストで返します。
      • (parse-address "ayanoakira <aa@be.to>")
        ("ayanoakira " "aa" "be.to")
    • 関連項目

Blueberry Server Server 用の特別な関数

  • search-account
    • 文法
        (search-account plugin id)
        plugin : string
        id : string
    • 説明
        Blueberry Server Server のユーザー管理で登録された。アカウントを探します。 plugin は プラグインの名前、id はユーザーIDです。
    • 戻り値
        見つかった場合はアカウント情報をリストで戻します。みつからなかった場合は nil が戻されます。リストは (ユーザーID,パスワード、コメント) になっています。
      • この関数は内部的にスレッド間の排他制御が行われてますので、 アプリケーションが排他制御を行う必要はありません。
      • (search-account "smtp server" "khf07113")
        ("khf07113" "khf1234" "none")
    • 関連項目

  • get-setting
    • 文法
        (get-setting prop)
        prop : string
    • 説明
        Blueberry Server Server の「setting]で設定された内容を取得します。

        prop は取得するプロパティで次のいずれかです。

        • "domain"
            ドメインを取得します。
        • "co-domains"
            サブドメインを取得します。
        • "ipv6"
            IPV6 の使用が有効になっているかどうかを 調べます。
        • "log"
            ログファイルの作成が有効になっているかどうかを 調べます。

    • 戻り値
        • "domain"
            ドメインを文字列で戻します。
        • "co-domains"
            サブドメインをリストで戻します。
        • "ipv6"
            t あるいは nil を返します。
        • "log"
            t あるいは nil を返します。
      • この関数は内部的にスレッド間の排他制御が行われてますので、 アプリケーションが排他制御を行う必要はありません。
    • 関連項目
連絡先

ayano-akira@vailet.pala.or.jp
khf07113@mnet.ne.jp
aa@be.to

このホームページは 綾の明 がメンテナンスしています。