********************************************************************* WPS-Script v1.0  wps_base.pl v1.0b 版暫定リファレンス (C)まかまか般若波羅蜜 http://www2u.biglobe.ne.jp/~hannya/ 2002/02/24  このファイルはwps_base.pl ver.1.09以降用の暫定的マニュアルです。 本ファイルはWebPetSystem 暫定マニュアル v1.03 の一部に追記した形で構成されています。本ファイルを読む前に、暫定マニュアルの方もご覧ください。  WPS-Script ver.1.09の動作にはwps.cgi ver.1.95以上が必要です。 [変更点] ver0.5  ・数値のとれる範囲が0-99999999までに  ・一時的な変数宣言tvar  ・randが変数展開できるようになった  ・goが変数展開できるようになった(数値のみ)  ・かけ算とわり算、余りの計算が可能に  ・変数の値を桁ごとに切り出す split  ・他者のユーザーデータを表示可能に usernum userlist userdata    →usernum以下の三つのコマンドは現在未完成なので、     本リファレンスでは解説しません(ver1.0以降の予定) ver0.6  ・METAタグ、Javascriptなどとの携帯を可能にする addmenuを追加 ver0.9  ・strで変数展開が出来るようになった。  ・ifコマンドの追加 例 if{$HOGE >= $FOO} mes->"ok!" ver0.92  ・処理の途中で強制的に処理を終了させる quit  ・menuの選択肢番号を変数展開できるようにした  ・途中変更用のフォーム生成コマンド chgform  ・ペットネームの途中変更 chgpn  ・パスワードの途中変更 chgpd ver0.93-0.94  ・insert  ・varの機能修正 ver0.95  ・strlgt ver1.00  ・addmenuの仕様変更(重要) ver1.01  ・call,addmenu,chgformで変数展開可能に ver1.02  ・strckの仕様変更(重要) ver1.04  ・strで$PETNAMEの文字列を変更可能に  ・input(2)でvalueに値を入れられるように  ・userokの導入 ver1.05-1.07  ・insertの変数展開を拡張  ・open,record,goで文字変数の展開を可能に ver1.08  ・recordでファイルの先頭行にデータを記録可能に ver1.08  ・recordでファイルの先頭行にデータを記録可能に ver1.09  ・strckの変数展開  ・時間変数の代入  ・randの利用方法の補足 ********************************************************************* ★4 WPS-Script v1.0 リファレンス <対応モジュールは wps_base.pl v1.09以降> 索引 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で割ったときの余り [補足 2002/02/24]  $PLTIME_HOUR などの変数はこれまで計算することができませんでしたが、v1.09から  $VAR = $PLTIME_DAY などのようにして、イコールで他の変数に代入することができるようになりました(代入だけです)。代入した変数に対する計算は通常通りですが、値が99999999を越えることはできません。 --------------------------- 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になりますので処理群の名前をつけるときに気を付けて下さい。) [追記2] go->"$Strings"が可能になりました。 例えば、 str(0)->"TEST" $var = 5 go->"$Strings0$var" は go->"TEST5" と同等。「"」を忘れずに。 --------------------------- 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) というふうに変数を代入することが可能です。 [補足 2002/02/24]  今まで説明していませんでしたが、rand(n)->$VAR とやることで、$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の値です。 input(2)->a,b,"XX"  という表記が可能。これは、ペットネームに関してのみ、入力フォームに初期値「XX」を設定できるということです。 --------------------------- 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"  指定されたファイルにユーザーデータを追加書き込みします。データの恒久保存や、リストアップなどに利用できます。 [追加] record->"FILE" 0  というふうに、スペースの後に"0"(数字のゼロ)をいれると、ファイルの先頭行にデータを記録します。これにより、新しいデータを前の方に持ってくることができます。 --------------------------- 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に「ほえほえの冒険」が代入される。 [追加]  str(-1)->"XXX" というふうに、-1を入れると、$PETNAMEを変更できます。 [追加 v1.08]  str(-1)->"$VAR" も可能に。 --------------------------- 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にリセットされる)。 [補足 2002/02/24]  v1.09より、strck($VAR)->"$HOEHOE" というように、チェックする文字列の側にも変数を利用できるようになりました。 --------------------------- 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->"