********************************************************************* WebPetSystem 暫定マニュアル v1.13 2002.02.10 Copyright (C) 2000-2002 まかまか般若波羅蜜 http://www2u.biglobe.ne.jp/~hannya/ ********************************************************************* 目次:    0 WebPetSystemとは?    1 システムの構成    2 設置の仕方    3 データの作成  A B C    4 コマンドリファレンス    5 利用規約・サポートについて・その他 ********************************************************************* ★0 WebPetSystemとは?  WebPetSystem(以下WPSと略)はウェッブ上でアドベンチャーゲームや、 マスコットやペットを育てるゲームをつくるために特化されたシステムです。 ゲームのデータはWPS-Scriptと呼ばれる簡単なプログラミング言語によって 記述されます。このWPS-Scriptを使ってあなたは好きな選択肢をつくり、そ れに応じてどのようにペットが振る舞うかを自由に設定することができます。  あなたのサイトに来た人々は、あなたのつくったペットに個別に出会い、 育てることができます。  ペットやマスコットをつくる以外にもアドベンチャーゲームをつくるなど の応用もできます。WPS-Scriptは変数の設定や簡単な条件分岐など、アドベ ンチャーゲームをつくるのに必要な様々な機能を持っています。  まだまだ発展途上ですが、ぜひ一度お試しください!  ※WPSの仕組みは、「アドベンチャーゲームブック」をご存じの方は   イメージしやすいかと思いますが、選択肢に番号がふってあって、   その選択肢を選ぶとその項目へジャンプするという感じです。  WPS動作概念図  ■WPSにログイン     ↓   ユーザーデータの読み込み     ↓   スクリプトデータの読み込み        スクリプトに従って処理     ↓   結果の表示と一時データファイルへの書き出し  ■ログイン中(選択肢を選ぶこと=WPSへのアクセス)     ↓   一時データファイルの読み込み     ↓   スクリプトデータの読み込み        スクリプトに従って処理     ↓   結果の表示と一時データファイルへの書き出し  ■ログアウト     ↓   一時データファイルの読み込み     ↓   スクリプトデータの読み込み        スクリプトに従って処理     ↓   結果の表示とユーザーデータの保存 ********************************************************************* ★1 システムの構成 □はじめに  WPSは以下のファイルによって構成されます。(*がついているものは必須) wps.cgi *(WPSエンジン部分) wps_base.pl *(基本スクリプトモジュール) config.cgi *(設定ファイル) wps_img.cgi(WPS画像表示用CGI) また以下のファイルをご自分で用意してください。 ・テンポラリファイル*(空ファイル) ・ユーザデータファイル*(空ファイル) ・スクリプトデータ*(登録用データ、通常データ、追加データ) □解説: wps.cgiはWPSを動かすエンジン部分です。設定ファイル(config.cgi)を読 み込み、データファイルからデータを読み込み、最終的なデータの表示や処 理を行います。 wps_base.plはWPS-Scriptを解析・処理するモジュールです。wps.cgiはデー タファイルを読み込んだときにこのモジュールを呼び出し、データの解析と 処理をさせます。処理結果はwps.cgiによって表示されたりファイルに記録さ れたりしますが、このwps_base.cgiもまた一部そのような仕事を受け持って います。 wps_img.cgiは画像を表示するためのCGIです。このCGIがなくても画像の表示 は可能ですが、例えばブラウザで表示されるときに処理結果の文章や数値の 表示よりも先に画像を表示したときにはこのCGIを使う必要があります。 config.cgiは設定ファイルです。このファイルで様々な設定を決めることが できます。詳細は次の「2:設置の仕方」で述べます。 登録用データファイルはWPS用のデータファイルの一種です。 通常データファイルはWPS用のデータファイルの一種です。 追加データファイルはWPS用のデータファイルの一種です。 ユーザデータファイルにはユーザーのデータが格納されます。 テンポラリファイルはWPSがデータ処理するときに一時的に利用します。 ********************************************************************* ★2 設置の仕方 □設定フィルの変更 $max_user_num = 200; #ユーザー登録データの最大  登録できるユーザーの最大数です。 $max_temp_num = 50; #テンポラリの同時アクセス許可数  テンポラリファイルを利用できるユーザーの最大数です。 $timeout = 120; #処理を無効にする時間(秒)  WPSにアクセスしてから一定時間がすぎるとアクセスを無効にします。これ によってテンポラリファイルがいっぱいになることがないようになります。 単位は秒。 $deltime = 7*24; #登録自動抹消までの時間  ほっておくとユーザーデータは膨大な数になります。そこで一定期間アク セスしないユーザーの登録を抹消することになります。単位は時間。上の例 では7×24時間=一週間。 $wps_datafile = 'main.dat';  通常時に読み込まれるWPS-Scriptファイルです。登録したユーザーが wps.cgiにログインするとこのファイルが読み込まれ、処理がはじまります。 $reg_datafile = 'regist.dat';  ユーザー登録時に読み込まれるWPS-Scriptファイルです。通常用と同じで ももちろん構いませんが、ファイルサイズを小さくするためにも別にするべ きです。web.cgi?mode=regにアクセスすることによって登録データ用ファイ ルが呼び出されます。 $user_file = 'user.dat'; #ユーザーデータファイルの名前  なおファイルは各自でご用意ください。単なる空ファイルです。 $temp_file = 'temp.dat'; #テンポラリファイル  なおファイルは各自でご用意ください。単なる空ファイルです。 $img_dir = 'image/'; #画像用ファイル  画像ファイル用のディレクトリをCGI設置場所と別にする場合に便利なよう にということでこの項目があります。必要なければこの項目は削除して構い ません。 $jcode = './jcode.pl'; #jcodeの位置  日本語環境で利用する場合に必要です。別途jcode.plが必要。この項目は URLではなく、ディレクトリのパスを記入してください。 $test=0; #テストモード(通常は"0"に)  1にするとテストモードになります。2にすると動作確認モードになりま す。通常は0にします。通常WPSはブラウザの「再読み込み(リロード)」 ボタンを押したり、「戻る(Back)」ボタンを押すとエラーを出しますが、 テストモードではエラーを出さないようにしてデータづくりの便を図ってい ます。  WPSは通常モードでは選択肢の不正な選択が出来ないようになっています が、テストモードでは可能です。 $log_mode = 0; #ipアドレス記録モード  wps.cgiにアクセス者のipアドレスを記録するかどうかの設定です。0の 場合、記録せず。1にするとユーザー登録時のみ記録。2にすると登録時と ログイン時の記録を取ります。いたずら防止などに利用できるでしょう。 $log_file = 'log'; #ipアドレスの記録用ファイル  wps.cgiアクセス者のipアドレスを記録するためのファイルです。 □CGIの設置  適当なディレクトリをつくってそこに wps.cgi,wps_base.pl,wps_img.cgi, config.cgi、テンポラリファイル,ユーザデータファイル を置きます。データ ファイルはパーミッションを644にしてください(ご利用の環境によっては若干 変わることもあります)。また必要ならjcode.plを適宜設置してください。 □ファイルロック用のディレクトリの作成  WPSを設置したディレクトリにlockというサブディレクトリを作成してくだ さい。そしてパーミッションを757あるいは755にしてください(ご利用の環 境によっては若干変わることもあります)。 □動作確認  動作確認のためconfig.cgiの $test=0; を $test=2; に変更します。問題 がなかったら$test=0に元に戻してください。 ********************************************************************* ★3 データの作成 A:データ(WPS-Scriptデータの概要) □はじめに  WPSデータはテキストデータです。そしていくつかのルールがあります。 □一行目について  まず最初にデータの一行目に「#wps_base」という一文を書きます。これに よりwps_base.plの使用が可能になります。(将来wpsモジュールを拡張でき るようにするための措置です。)  また、後で説明しますがopenによって読み込まれる追加のWPS-Scriptデー タには#wps_baseはいりません。 □コマンド及びコマンドグループ  次に「コマンド」と「コマンドグループ」という概念について説明してお きます。WPSデータは「メッセージを表示しろ」とか、「選択肢を出せ」と いったひとつひとつのコマンド(命令)を順々に処理していくことによって 動作します。このひとつひとつのコマンドがいくつか集まって「グループ」 をつくります  WPSデータはグループからグループへと移動(goというコマンドを使う)す ることによって処理が進みます。そしてグループ内の一つ一つのコマンドは 上から順に実行されます。次のグループへのジャンプがない(goがないとい うこと)時点で、(あるいはendなどの明示的に処理を終了させるコマンドを 出したとき)データ処理は終了します。  グループ名は行の先頭に書きます。そしてコマンドは行の最初にタブ(TAB) を一つ入れて書きます(caseの「条件」だけはタブを2ついれます)。今のと ころ、一行につきひとつのコマンドしか書けません。 下に例を示してみます。(タブを表示する設定でみると良いでしょう) ----------------------------------------------------- #wps_base Start var->A B C $A=1 mes->"\$Aの値は$Aです。" go->Tugi Tugi rand(10) $RANDOM+1 mes->"ただいまの乱数は$RANDOMです。" case{$RANDOM} (-3) mes->"3以下の値" (4) mes->"きっかり4" (5-7)mes->"5から7の値" (8-) mes->"8以上の値" go->Owari Owari mes->"これで終了です。" -----------------------------------------------------  上は16行からなる簡単な例です。 1行目:#wps_baseと書くことによってwps_base.plを呼び出します。 2行目:行の先頭にグループ名。ここでは「Start」としています。グループ 名の次の行からはタブをひとついれてコマンドを書きます。 3行目:変数No.0,1,2に順にA,B,Cという名前をつけて使用することを宣言し ています。実際に変数を使用するときは$A,$B,$Cの形で書きます。 4行目:変数$Aに「1」を代入。WPSでは原則として変数には数値しか代入でき ません(strというコマンドで特殊な変数に文字列を代入可)。 5行目:「$Aの値は1です。」とブラウザに表示されます。$の前に\をつける ことで$を表示させることができます。 6行目:次のグループ「TUGI」に移動します。 7行目:グループ「TUGI」 8行目:0から9までの数を「予約変数$RANDOM」に代入します。 9行目:「ただいまの乱数は○です。」と表示。 11行目:条件分岐するためのコマンド"case"。下のかっこにはいっている数 字が実際の条件です。 12行目:$RANDOMが3以下の時「3以下のの値」と表示されます。 13行目:$RANDOMが4の時。 14行目:$RANDOMが5以上7以下の時。 15行目:$RANDOMが8以上の時。 16行目:グループ「Owari」に移動 17行目:グループOwari 18行目:「これで終了です。」と表示。ここでもう別のグループに移動する ことがないので処理は終了。 ※先頭の行に#をつけるとコメントとみなされます(一行目は例外)。 もう一つの例: ----------------------------------------------------- #wps_base Start select(1) go->001 select(2) go->002 go->000 000 mes->"次の選択肢を選んでください。

" menu(1)->"これは選択番号1です" menu(2)->"これは選択番号2です" 001 mes->"1番が選ばれました。

" menu(0)->"もう一度" 002 mes->"2番が選ばれました。

" menu(0)->"もう一度" ----------------------------------------------------- 上の例では 1行目:#wps_baseと書くことによってwps_base.plを呼び出します。 2行目:グループ名「Start」。 3行目:予約変数$SELECT_NUMの数値が1の時、グループ名「001」に移動。 4行目:予約変数$SELECT_NUMの数値が2の時、グループ名「002」に移動。 5行目:上の条件以外の時、グループ「000」へ移動。 6行目:グループ「000」 7行目:メッセージ表示。 8行目:選択肢「これは選択番号1です」を表示。ユーザーがこの選択肢を選 ぶと$SELECT_NUMに1が代入されます。 9行目:選択肢「これは選択番号2です」を表示。ユーザーがこの選択肢を選 ぶと$SELECT_NUMに2が代入されます。 10行目:グループ「001」 11行目:メッセージ表示。 12行目:選択肢の表示。ユーザーがこの選択肢を選ぶと$SELECT_NUMに0が代 入されます。 13行目:グループ「002」 14行目:メッセージ表示。 15行目:選択肢の表示。ユーザーがこの選択肢を選ぶと$SELECT_NUMに0が代 入されます。 □変数について  変数は半角英数字(a〜z,A〜Z,0〜9,アンダーバー"_")から構成します。WPSの予約変数がかなりあるため、小文字を推奨。  このマニュアルでは変数について詳しく説明しません。WPSにおいて変数の 代入には次の方法があります。 $HOGE=1 # $HOGEに1を代入 $HOGE+ # $HOGEに+1します $HOGE+1 # これも$HOGEに1プラス $HOGE+++ # $HOGEに3プラスします $HOGE=$FOO # $HOGEに$FOOの値を代入します $HOGE+$FOO # $HOGEに$FOOの値をたします $HOGE- # $HOGEの値から1引きます $HOGE--- # $HOGEの値から3引きます $HOGE-$FOO # $HOGEから$FOOの値を引きます  宣言された変数(予約変数以外)は0以上99999999以下の整数値しかとりませ ん。また、0以下の値になったときは強制的に0に、99999999以上の値の場合は 99999999に設定されます。  mes->"STR"など、大概のコマンドでは変数を展開することができます。 $hoge=5なら mes->"$hogeだよ" とすることで、「5だよ」となります。 ただし、mes->"$hogeDAYO!" というふうに、半角英数字アンダーバーを変数のすぐ後につづけてしまうと、WPSはそれを$hogeDAYOという変数にとってしまいます。このばあいは、変数の最後に"\"をつけることによって、その文字を変数の名前ではないとWPSに判断させます。 mes->"$hoge\DAYO!" これで「5DAYO!」という表示に。 □予約変数について  次の変数はWPSが使用するために予約された変数です。変数宣言でこれらの 名前を使うことはできませんが、スクリプト内で自由に使用することはでき ます。 $USERNAME ユーザー名(文字列)。 $PETNAME ペット名(文字列)。 $SELECT_NUM 選択肢番号が代入されます。 $CLICK_COUNT 今回WPSにアクセスしてから選択肢をクリックした回数。 $RANDOM rand()を使うとこの変数に数値が代入されます。 $IMG_NAME 画像の名前(imgコマンドで変更可能) $IMG_ALT 画像のALT属性(imgコマンドで変更可能) $IMG_WIDTH 画像の横幅(imgコマンドで変更可能) $IMG_HEIGHT 画像の縦幅(imgコマンドで変更可能) $MENU_AC 選択肢番号の不正チェック用変数 $Wps_var 使用しているWps.cgiのバージョンです。 $Wps_Script_var 使用しているWPS-Scriptモジュールのバージョンです。 $Process_end 値を1以上にすると直ちに処理を終了することができます $Wps_Mode テストモードの時、1以上の数値になります。 $Browser 使用ブラウザ $Strings_ck strckコマンドを使用した際に利用します。  $Browserは、"DoCoMo","J-PHONE","EZWEB","MSIE","Mozilla","Lynx"のいずれかを識別しますが、それ以外は"Unknown"となります。 □時間変数  予約変数の一種です。 $PTIME 現在の時間。 $STIME ユーザー登録をした時間。 $LTIME 前回のログイン時間。 $ATIME 今回のログイン時間。 ※上の「時間変数」の値は1970年1月1日からの秒数です。年月日、時分秒へ の変換は後述。 $PSTIME 登録してから現在までの時間。 $PLTIME 前回ログアウトしてから現在までの時間 $PATIME 前回の選択肢選びから現在までの時間 $ASTIME 登録してから前回の選択肢を選んだまでの時間 $ALTIME 前回ログアウトから前回の選択肢を選んだまでの時間 $LSTIME 登録してから前回アクセスまでの時間 □文字列変数 $Strings0, $Strings1...$Strings9 までの10の変数は WPS ver.1.09から予約変数となりました。 str(N)->"XXX"で $StringsN(nは対応する数字)にXXXという文字列が 代入されます。ただしこの変数はデータに記録されないので 気を付けてください。 □条件分岐について  現在、WPS-Scriptには3つの条件分岐用のコマンドがあります。 "slect"と"case"、それに"if"です。  select(N) XXX 予約変数 $SELECT_NUM と N が一致したときにコマンドXXXを実行します。  case{$HOGE} (NN)XXX $HOGEの変数を調べ、(NN)の条件設定に一致したときにコマンドXXXを実行します。NNには、0以上の整数値が入ります。 例:  (0-) 0以上の値  (0-10) 0から10の値  (5) 値はちょうど5  (-5) 5以下の値 この「条件」は行の頭からタブを二つ入れることによって認識されます。  また、ifによる比較も利用できます。  if{$A == 3} go->10 などなど。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * B;実際にデータをつくる □はじめに  データづくりは次の手順を踏みます。 1ログイン用ページの作成 2登録用データの作成 3通常データ・追加データの作成 □1 入口用のページをつくる a 登録フォーム  WPSの登録モードを起動するには以下のようなリンクをはります。 登録 b ログインフォームについて  WPSにログインするには下のようなフォームを使います。methodは、POSTで もGETでも構いませんが、POSTが利用できない環境ではGETにしなければなり ません。ユーザーの名前を入力する欄の属性NAMEは"username"に、パスワー ド欄は"password"にします。

 ←あるいはGET   お名前:
パスワード:
□2 登録用データをつくる  最初に登録モードで呼び出す「登録用データ」を作成します。この登録 モードでユーザー登録がなされ、データファイルに各ユーザーの名前やパス ワード、変数などが記録されます。  ユーザー名、パスワード名(必要ならペット名も)を入力するための フォームをつくります。フォームをつくるにはregform()を使います。 regform(n)のnの部分が選択番号となります。フォームは最後にregform(0)で 閉じます。そのため、最初のregformで選択番号0を指定することはできませ ん。入力欄はinput()を使います。サブミットボタンはsubmitを使います。  なお、登録データの一行目には#wps_baseという一行が必要です。 □3 通常用データ・追加データをつくる  ログインフォームからWPSにログインしたときに呼び出されるデータの作成 です。詳しくはサンプルデータなどを参照してください。ログインしたとき に最初に呼び出されるWPS-Scriptデータの一行目には#wps_baseという一行が 必要です。openというコマンドを使うことによって途中でデータを追加する こともできます。  WPSをログアウトするような選択肢のところでは最後にendというコマンド を使うと、ユーザーデータをファイルに記録し、テンポラリデータから一時 的に記録されていたユーザーデータを抹消します。endを使用しないと、テン ポラリデータに暫くの間ユーザーデータが残るため、その間ログインしてい る状態とみなされます。   ↓注意:必ずご覧ください   ※WPS-Scriptデータは改行をLF形式にしてください。   ※WPSは自動的にとを最後につけます。この二つのタグ    以外は利用者がmesコマンドによって出力しなければなりません。   ※データ作成時は設定ファイルで$test=1にすると便利です。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C:捕捉 □データの大きさ  WPSはスクリプトデータファイルを最大64kbまでしか読み込めません。これ は一度に読めるファイルサイズということではありません。openを使って何 度かに分けて読み込んでも総計が64kbを越えることは出来ません。  また、スクリプトデータの行数は最大2000行までに設定されています(コ メントは除く)。これも総計が2000までということです。 □ユーザー登録データの書式 $USERNAME,$PASSWORD,$PETNAME,$STIME,$LTIME,$var0,$var1,$var2.....  ユーザーデータは上のような順番で一行毎に記録されます。 □テンポラリファイルの書式 $ID,$KEY,$PETNAME,$STIME,$LTIME,$ATIME,$IMG_NAME,$CLICK_COUNT, $MENU_AC,$var0,$var1,$var2.....  テンポラリファイルには上のような順番で一時的にユーザーのデータが記 録・処理されます。$MENU_ACは、その時点で選択可能な選択肢の番号を'&'で つなげたものです。これによって不正な選択を防ぎます。 □スクリプトデータの著作権表示  スクリプトデータ(#wps_baseの行ではじまるデータ)に ^AUTHOR="XXX" という行があると、XXX部分がフッターに表示されますので、データの作者表 示などに利用すると良いでしょう。 □注意  〜割愛〜  …Tipsを参照してください。 ********************************************************************* ★4 WPS-Script v1.0 リファレンス <対応モジュールは wps_base.pl v1.02以降>  これは古いバージョンのリファレンスです。必ず最新のバージョン用の リファレンスをご覧ください。 索引 var 演算(=+-*/%) mes go menu slect rand case open regform input submit regist save del end record img str userck strck call return split tvar addmenu if chgform chgpn chgpd insert strlgt その他注意すべき点 var  データで使用する変数の設定をします。WPSでは変数を使用するさいには予めvarで変数の名前を設定する必要があります。変数の名前は半角英数文字にします。varによって設定された変数は宣言した順番にそってユーザデータに記録されます。宣言の仕方には二種類あります。 例1: var->A B C 例2: var(9)->J  例1では変数$A $B $Cが設定されます。WPSではユーザーデータに記録される変数は全て順番が固定しており(0,1,2,3...となる)、上の例ではユーザーデータファイルにはABCの順番で変数が記録されます。そのため、途中でvar->A C B などと変更するとデータが狂ってしまいます。そのためテスト段階で変数の順番を変えたり、途中に新たな変数を追加したときには、ユーザー登録しなおす必要があるでしょう。  例2(例1を実行した後の話と仮定します)では変数データ10番目に$Jが設定されます(0から数えるから)。  WPSは起動したときに、ユーザーデータを読み込みます。この時点では記録された変数は内部的に0から順番に番号がついているだけです。その後、スクリプトデータを読み込むことによって、変数に名前が与えられ、自由に変数を利用することが出来るようになります。WPSはend、save、registコマンドを実行したとき、ユーザーデータファイルに各変数の値を順番に記録します。  変数は0から99999999の整数値しか代入できません(0以下は0に、99999999以上は99999999になる)。例外は$STIME,$PTIMEなどの時間変数で、これらは99999999以上の数が代入されても問題ありません(しかし加減計算の結果は0から99999999までしかとれません)。  varで宣言できる変数は32個までです。それ以上宣言したいときはwps_base.plを改造してください(別にこれに限ったことではないですね…)。 [注意:下のリファレンスでは$VARという変数がよく登場しますが、実際には、VARではじまる変数($VAR_1 $VAR1などなど)はWPSの予約変数なので、利用できません。] [補足] var->AA BB CC var(9)->JJ KK LL var->DD EE FF というふうにやると、まず1-3番目の変数が宣言されたことになり、次に10,11,12番目の変数が宣言され、最後に4-6番目の変数が宣言されたことになります。 --------------------------- 演算(=,+,-,*,/,%)  変数の数値計算。下の例を参照。  $HOGE=1 # $HOGEに1を代入  $HOGE+ # $HOGEに+1します  $HOGE+1 # これも$HOGEに1プラス  $HOGE+++ # $HOGEに3プラス  $HOGE=$FOO # $HOGEに$FOOの値を代入  $HOGE+$FOO # $HOGEに$FOOの値をたします  $HOGE- # $HOGEの値から1引きます  $HOGE--- # $HOGEの値から3引きます  $HOGE-$FOO # $HOGEから$FOOの値を引きます ($HOGE+ が$HGOE+1であり、$HOGE++ は$HOGE+2になることに注意) かけ算とわり算、余り  $HOGE * $FOO # $HOGEに$FOOをかける  $HOGE * 10 # $HOGEを10倍する    $HOGE / 10 # $HOGEを10で割る  $HOGE / $FOO # $HOGEを$FOOで割る  [注意:小数以下は切り捨てになります!]  $HOGE % 10 # $HOGEを10で割ったときの余り  $HOGE % $FOO # $HOGEを$FOOで割ったときの余り --------------------------- mes->"xxx"  文字列を表示します。 例: mes->"もじ"  文字列は「"」で囲む必要があります。変数の$の前に\をつけると$を表示します。mes->"\$HOGE" で「$HOGE」と表示されます。もし\をつけないと$HOGEの値を表示していまいます。また、\nで改行をいれます。  mes->"[-- img --]"とすることでwps_img.cgiを呼び出します。 --------------------------- go->XXX  別の処理群に移動します。XXXの部分は半角英数・アンダーバーを使用してください。mesとちがい、ダブルクオーテーションで囲みません。 例: go->002 [追記] go->$VAR が可能になりました。 例えば、 go->$SELECT_NUM とすると、menu(200)->"HOGEHOGE" を選択したときに、"200"という 処理群へ移動することになります。 (注:$VAR=001といれて、go->$VARとしても、実際にはgo->1になりますので処理群の名前をつけるときに気を付けて下さい。) --------------------------- menu(n)->"xxx"  選択肢を表示します。選択肢番号をつける必要があります。 例: menu(5)->"クリック" 「クリック」と表示される選択肢が表示されます。この選択肢には「5」という選択肢番号がつけられます。 [追記] menu($VAR)->"文字" が可能になりました。 例えば、 $HOGE = 100 menu($HOGE)->"進む" はmenu(100)->"進む"と同等です。 --------------------------- select(n)  選択肢番号に基づいてコマンドを実行します。 例: select(5) go->003 選択肢番号5を選んだ時、go->003を実行します。 なお、これは case{$SELECT_NUM} (5) go->003 と同じ結果になります。 --------------------------- rand(n)  rand(N)で、0からN-1までの乱数を$RANDOMという変数に代入します。Nは0以上の整数です。また、rand($VAR) というふうに変数を代入することが可能です。 --------------------------- case{VAR}  case{$A}で$Aの値によって条件分岐することができます。 例: case{$A} (0-9) go->001 (10) go->002 (11-) $POINT+50 --------------------------- open->"xxx"  スクリプトデータを追加で読み込みます。 例:open->"next.dat"  next.datというスクリプトデータファイルを読み込みます。追加データには#wps_baseという一行は必要ありません。 --------------------------- regform(n)  ユーザー登録用のフォームをつくります。regform(n)で、nが1以上の値の時、nは選択肢番号となります。n=0の時、フォームの終了を意味します。 --------------------------- input(n)->a,b  データ入力用の欄をつくります。n=1の時、ユーザーネームの入力欄、n=2の時、ペットネームの入力欄、n=3の時、パスワードの入力欄、n=4の時、パスワードの確認用の入力欄になります。パスワードと確認用の入力欄は同時に使う必要があります。  aはsize、bはmaxlengthの値です。 --------------------------- submit->"xxx"  value="xxx" の submitボタンをつくります。 - - - - - - - - - - - - - - regform,input,submitの使用例: regform(3) mes->"\n" mes->"    お名前:" input(1)->16,16 mes->"
" mes->"  パスワード:" input(3)->16,16 mes->"
" mes->"確認でもう一度:" input(4)->16,16 submit->"登録" mes->"
\n" regform(0) 上の場合、登録ボタンを押すと選択肢番号3の選択肢を選んだことになります。( regform(3)だから ) --------------------------- regist  ユーザーデータファイルに登録します。登録モードでしか利用できません。 --------------------------- save  その時点でのユーザーデータをユーザーデータファイルに記録します。 --------------------------- del  ユーザー登録データから記録を削除します。 --------------------------- end  ユーザーデータファイルにデータを書き込んで、テンポラリファイルから一時ユーザーデータを削除し終了します。 --------------------------- record->"xxx"  指定されたファイルにユーザーデータを追加書き込みします。データの恒久保存や、リストアップなどに利用できます。 --------------------------- img->"xxx",a,b,"yyy"  wps_img.cgiはこのコマンドで設定された画像を表示します。xxxは画像ファイル名、aは画像の横幅、bは高さ、yyyはALTを設定します。  mes->"[-- img --]" で wps_img.cgiを呼び出します。  config.cgiの$img_dirで設定されたディレクトリにある画像を呼び出します。 --------------------------- str(N)->"XXX" (Nは0から9までの数字)  $StringN(Nは対応する数字)に文字列 XXX を代入。この変数はテンポラリファイル、ユーザーデータファイルに記録されません。他の変数同様 mes コマンドでこの変数を利用することができます。 str(0)->"ほえほえ" str(1)->"$Strings0の冒険"  $Strings0に「ほえほえ」という文字列が代入される。$Strings1に「ほえほえの冒険」が代入される。 --------------------------- userck COMMAND  あるいは userck->"FILE" COMMAND  ユーザー名登録時にこのコマンドを使うと既に他の人がその名前を使っていた場合の例外処理が出来る。サンプルデータ2 ver.3.0 を参照。 userck go->NG_SYORI  上の例は登録名が既に別の人に使われていた場合処理群「NG_SYOTI」に移動する userck->"FILE" COMMAND  上の例はFILEという名前のファイルにユーザー名が記録されていないかをチェックする。これをrecordによってログに記録されたデータファイルに対して行うことによって様々な用途が得られるかもしれない。 --------------------------- strck($STR)->"XXX" COMMAND  userckとよくにていいるコマンド。$STRに格納されている文字列をチェックし、「XXX」と一致していた場合に例外処理COMMANDを行う。かっこ内に$REG_USERNAMEという変数を入れるとユーザー登録時の例外処理userckと同等かそれ以上のことができる。例として strck($REG_USERNAME)->"ほえほえ" go->NG_SYORI とすると、ユーザー登録時に「ほえほえ」という名前を登録しようとするとNG_SYORIに移動する。  WPS-Script v1.02より、strckで文字列と一致した場合、$Strings_ckという変数に1が代入される。一度1が代入されるとその回のアクセス処理が終了するまで有効となる(アクセス処理の度に0にリセットされる)。 --------------------------- call->XXX  処理群名XXXへ処理を移動します。移動先の処理が終了すると再びcallコマンドを使用した処理群へ戻り次の行から処理を再開します。call先の処理群で再びcallを利用することはできません。 --------------------------- return  call先で利用することにより直ちにcallを呼び出した場所へ戻ります。 --------------------------- split($VAR,N)->$VAR2  変数$VARの左からN桁目の数字を別の変数$VAR2に代入します。Nの部分は変数を使っても構いません。例:split($VAR,$VAR2)->$VAR3  このコマンドを活用するには、予め特定の変数の桁数が一定になるように決めておくべきです。  また、WPSは変数を数字として扱うので、一番左の桁は0以外の数字にしないと、セーブするさいに、桁数が変わってしまいます。 例:$VAR=00100は、ユーザーデータに記録される段階で、$VAR=100に変わってしまう。そのため、$VAR=10000などとして、一番左の桁だけは、1以上にしておく必要がある。 --------------------------- tvar->VAR  ユーザーデータやテンポラリデータに記録されない変数$VARを宣言できます。宣言後は、varで宣言された変数と全く同様に扱うことができますが、データの記録はされませんので、WPS起動中の処理にしか使えません。varと違い、変数の数に制限はありません。また、var同様、tvar->VAR1 VAR2 というふうに、一度に複数宣言できます。 [注意:$VARという変数(類似のものとして、$VAR2や$VAR_1なども)は、WPSの予約変数なので、利用できません。] --------------------------- addmenu(n)  menu以外で選択肢をつくりたい場合があるでしょう(たとえば、セレクトタグなどや、Javescriptなどを利用したい場合)。そのときに、通常では、不正な選択ができないようにmenuコマンドで指定された選択肢しか選ぶことができません。そこでこのaddmenuコマンドで指定された番号も選択肢として使用できるようになります。 (例1) addmenu(10) addmenu(20) mes->"
" mes->"" mes->"" mes->"" mes->"" mes->"" mes->"" mes->"
"  通常モードではmode属性の値をselにします(登録モードでの利用では値をregに)。select_num属性の値が、選択肢の値(通常 menu(n) で表されるもの)になります。これで、通常はできないような方法で選択肢をつくったり、METAタグで一定時間たったら強制的に別の選択肢を選ばせるなどができるようになります。なお、dummyの値は好きにしてかまいません。  INPUTタグは、上の例を定型にしてしまえばよいでしょう。 (例2 登録モード時の場合) addmenu(4) addmenu(5) addmenu(6) mes->"
\n" mes->"\n" mes->"\n" mes->"\n" mes->"\n" mes->"