†このマニュアルは、HTML形式で配布されているものを、すぐに見られるようにWiki上に転記・一部わかりやすいよう加筆したものです。システム関数も参照してください。文字列処理を行なうためのDLLです。与えられた文字列を加工するプログラムした規則に拠って文字列を生成するといった処理を行なうことが出来ます。DLLですので、直接利用するためには、プログラミングに関する知識がある程度必要です。†Windows用です。開発のごく初期に98SE、2000、xpで動作確認しましたが、最終版はxpでしか確認を取っていません。報告をいただけると助かります。使途を限定せず自由に利用することが出来ます。配布パッケージに含まれているすべてのファイルを自由に取り扱うことが出来ます。一部のファイル、もしくはそのファイルの内容の一部を抜き出して、他の構成に含めてもかまいません。このプログラムを使用した結果、あなたに何らかの損害が発生しても、その責任を作者は負いません。ソースコードを改変して自由に異版を作成し、配布することが出来ます。その際、配布者はその意志に基づいたライセンスを独自に策定し配布物に適用することが出来ます。5の性能のあらましを簡単に理解できます。5ではShift_JISに加えてUTF-8、およびOSデフォルトの文字コードが使用可能になりました。関数の引数に数式を記述できない、代入演算子や比較演算子を式に包含できない等の制限がなくなり、自由に式を記述できるようになりました。4ではif等の判定式のために特別の書式が必要でした。5にはそのようなものは無く、単に値で判定できます。型を混在して格納可能な配列構造が追加になりました。~文字列を格納する場合でも簡易配列より高速に動作します。)で囲むと動作速度が向上します。)内はいわゆるeval風に動作するため、たとえば代入式などを文字列内に埋めることが可能になっています。ランダム選択、書式化出力など、従来不可能だった動作を実現する数々の関数が追加されています。対してforeachが使えます。4比2~3倍程度という値が出ています。4はパーサがぬるく、これに起因する種々の不安定動作が大小さまざまな不具合を引き起していました。5ではそのような不安定要因は極力排除されています。エラーログ改善ログに記録されえるエラーの内容が詳細化されました。エラー時は該当する辞書ファイル名と行番号が記録されます。4が抱える不具合や仕様の不整合を矯正することが重視されました。互換性の確保にも配慮が無かったわけではありませんが、それが足を引っ張るようならきっぱり切り捨てる方針で臨みました。以下の点で互換性が崩れています。移植の際には注意が必要です。重要で本質的な変更です。5は特別な書式が決められていない文字列をやりとりするだけです。4が持つシステム関数のうち、完全に同一機能のまま引き継がれたものは半数程度です。多くが新規追加、廃止、あるいは機能変更されています。詳細はシステム関数リファレンスで確認して下さい。注意を要するのは文字列処理系の関数です。STR*系(文字数単位)STR*系関数が残されましたが、動作はMSTR*系のものになっています。これは内部処理がUNICODE化されたためです。システム変数全廃_argv、_argc以外のシステム変数は廃止されました。同等機能を持つシステム関数が追加されています。4では空の文字列と値無しの区別が不明確でした。5ではこれが厳格に区別されます。4では使用可能でした(そもそも12hourというシステム変数があったほどです)。5では禁止となりました。考えた結果、とりあえず未実装としました。4のパーサが弱かったおかげで見逃されていたエラーが顕在化する可能性があります。文は以下の公開された関数を持っています。文を利用するプログラムは、文をLoadLibrary?した後にこれらの関数を実行して所望の処理を行ないます。len)文に初期化を指示します。文をLoadLibrary?して使用を開始する直前に、この関数を一度だけ必ず実行してください。hには「文がカレントとして認識するディレクトリ絶対パス」を、lenはhの長さを渡してください。hの領域開放は文側で行ないますので、呼び出し側では使い放しでかまいません。unload()文に終了を指示します。文をFreeLibrary?する直前に一度だけ実行してください。*len)文に処理を指示し、結果を得ます。hには処理対象の文字列を、*lenにhの長さを渡してください。渡したhの領域開放は文側で行ないますので、呼び出し側では使い放しでかまいません。処理結果は戻り値で得られます。処理結果の長さは*lenに格納されています(つまりこの値は書き換えられます)。戻り値を取得した後、領域を*lenで示されるサイズで開放(GlobalFree?)してください。インタフェース規格と完全に同一のものです。ver.5のデフォルトのDLLファイル名は「aya5.dll」です。主ファイル名「aya5」は他の名前に自由に変更することができます。文を動作させるためには「基礎設定ファイル」と呼ばれるファイルが必ず必要となります。基礎設定ファイルのファイル名は「主ファイル名.txt」です。デフォルトでは「aya5.txt」となります。「hoge.dll」に変更したなら、基礎設定ファイルは「hoge.txt」です。基礎設定ファイルはテキストファイルで、実行されるOSのデフォルトの文字コードで解読されます。国際化に関して考慮しなければならないなら、マルチバイト文字コードに関する問題を回避するため、基礎設定ファイルはASCIIコードのみで記述するべきです。16設定はコマンドとパラメータをカンマで区切って指定します。空行(改行のみの行)、"//"以降、および"/*"と"*/"で囲まれた領域はコメントと見なされます。コマンドとその意味は以下の通りです。標準の文字コードを設定します。以下の予約値からいずれかを指定します。指定が無い場合はShift_JISとして扱われます。SJISシフトJISコード。UTF-8UTF-8。default実行OSのデフォルト文字コード。辞書ファイルfilenameをロードします。辞書ファイルは文スクリプトが記述されたプログラムソースファイルで、文はここのプログラムされた内容を元に動作します。辞書ファイルはいくつでも指定し、読み込むことができます。filenameはloadで指定されたパス位置からの相対パスで指定します。標準の辞書ファイルはcharsetで指定した文字コードで記述されたプレーンテキストファイルです。暗号化ファイルを読み込むことができます。†ログに記録されるエラーメッセージ類の言語を選択します。以下の予約値からいずれかを指定します。指定が無い場合はjapaneseとして扱われます。japanese日本語。実行ログをファイルlogfilenameに記録します。charsetで指定した文字コードで書き込まれます。logfilenameはloadで指定されたパス位置からの相対パスで指定します。†load、unload、request実行時の入出力文字列と処理時間をログに記録するかを設定します。デフォルトではonになっていますので、不要の場合にoffとしてください。関数呼び出しの深さ上限を数値で指定します。デフォルト値は32です。最低値は2で、これより小さな値や不正な値を指定した場合も2として扱われます。文スクリプトの書式はC言語のそれを踏襲しています。したがってあらかじめC言語、およびC言語に類似する言語を習得していると理解が早いです。World"という文字列を返すプログラムコードの全体を以下に示します。loadとunloadも同様です。loadとunloadは値を返さないので、出力文字列を書いても意味がありません。unloadには逆にその後始末をするコードを書きます。必要な関数だけ書けばよいです。不要なものは省けます。上の例ではloadとunloadは書いていませんが、これはエラーとはなりません。極端な例を挙げるなら、辞書ファイルがまったく無くてもエラーにはなりません。requestは空の文字列を返します。loadとrequestはひとつの引数を持っています。これは変数で取り出せます。変数の名前は_argcと_argvで、これはC言語のmain関数のインタフェースと類似しています。loadとrequestでは引数はひとつの文字列ですから1となります。unloadは引数を持たないので、この値は0となります。引数の実体が格納されています。これは_argc個の要素を持つ配列です。各要素へのアクセスは演算子[i]で行います。序数iは0オリジン指定です。_argcが1の場合は_argv[0]が使用可能で、ここに引数が格納されていることになります。~これまでの説明を踏まえて読んでみてください。World!"が得られます。空行(改行のみの行)、"//"以降、および"/*"と"*/"で囲まれた領域はコメントと見なされます。1行の終わりがスラッシュ("/")の場合は、次の行がこの行の後ろに結合されます。行頭、および単語間には自由に空白文字を入れることが出来ます。空白文字は空白、およびタブ文字です。複数のステートメントを1行に詰めて書きたい場合は、セミコロン(";")で区切ることが出来ます。Worldコードは以下のように1行に詰めて書くことが出来ます。