home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Curio City 2
/
CURIO2_1.bin
/
net
/
copergla
/
signup.pr_
/
signup.pr
Wrap
Text File
|
1995-12-22
|
12KB
|
451 lines
path = "A:\\COPERWIN\\V200B3\\"
TelNum = "0120-81-6058"
;=-----------------------------------------------------
declare "CommandParam" "NAV.DLL" STR STR
goto Entry
;; サブルーチン
; ハングアップ
Hangup:
wait 2
sendstr "+++"
wait 2
sendstr "ath0\r"
return
; logファイル(signup.log)に"*"を書き込む
LogCheck:
open 3 log APPEND
write 3 "*"
close 3
return
; 「中止」ボタンが押されたかをチェックする
; 「家族会員」登録で、かつ1人以上にIDが発行されている場合は
; 特別な中止処理(FamilyStop)を行う
StopCheck:
CommandParam "signupStop" signupStop
if (signupStop != "")
then
CommandParam "target" target
if (target == "" || entryFamily == 0)
then
goto ClickedStop
else
goto FamilyStop
endif
endif
return
; データファイルからデータを1行読み込んで送信する
SendData:
read 1 string
wait 1
sendstr string
errStr = "入力内容の誤り:" + string
return
;; サインアップスタート
Entry:
setname "COPERNICUSオンラインサインアップ"
; 入出力ファイルの設定
dat = path + "signup.dat"
rsp = path + "signup.rsp"
log = path + "signup.log"
tmp = path + "signup.tmp"
inf = path + "signup.inf"
; 各変数の初期値設定
; 送信データを格納するための変数
string = ""
; エラーメッセージ用の変数
errStr = ""
; 「中止」ボタンが押されたかを判断するための変数
; 押されると "CLICKED" がセットされる
signupStop = ""
; 登録対象が「個人会員」か「家族会員」かを判断するための変数
; 「家族会員」の場合、"FAMILY" がセットされる
target = ""
; 「家族会員」ですでにID発行済みの者の人数
entryFamily = 0
; サインアップビューから登録人数を受け取るための変数
famcnt = ""
; 実際の登録人数用のカウンター
famCount = 0
; tmp ファイルがオープンされているかをチェックするフラグ
tmpOpen = 0
; famcnt の値によって、famCount の値をセットする
CommandParam "famcnt" famcnt
switch famcnt "1" "2" "3" "4"
goto * SetFamilyCount2 SetFamilyCount3 SetFamilyCount4 *
SetFamilyCount1:
famCount = 1
goto FileCheck
SetFamilyCount2:
famCount = 2
goto FileCheck
SetFamilyCount3:
famCount = 3
goto FileCheck
SetFamilyCount4:
famCount = 4
FileCheck:
; データファイルのチェック
open 1 dat READ
open 2 rsp WRITE
open 3 log WRITE
close 3
; プロトコルの設定
protocol "N81NN"
; speed 14400
;---------------------------------------------
; モデムの初期化処理
InitStr = ""
CommandParam "ModemInit" InitStr
timeout 2
send "ATE1Q0V1"+CR
cases "OK" "ERR"
goto MODEM_INIT MODEM_INIT *
timeout 3
send "+++"
cases "OK"
goto * L_Modem_Error
send "ATH0"+CR
cases "OK"
goto MODEM_INIT L_Modem_Error
L_Modem_Error:
errStr = "モデムの初期化に失敗しました"
goto ErrorDetect
MODEM_INIT:
print "Modem Init ..%s(%s)\r\n", InitStr, UMODEM
if strlen(InitStr) == 0
then
send UMODEM+CR
else
send "AT"+InitStr+CR
endif
cases "OK"
goto L_AutoDial_Start *
if InitStr == "X3" then L_Modem_Error
InitStr = "X3"
goto MODEM_INIT
L_AutoDial_Start:
;-----------------------------------------------
loginCount = 0
errStr = "センターとの接続に失敗しました"
autodial UPBX+TelNum "" "" 5 60
goto * ErrorDetect ErrorDetect
gosub StopCheck
gosub LogCheck
wait 3
;;; SYSTEC6761K はテスト用なので、リリース版では無効にすること
; sendstr "SYSTEC6761K\r"
sendstr "COSIGN\r"
timeout 60
;;; この download はテスト用なので、リリース版ではコメントアウトし、
;;; 後の方の download が有効であることを確認する。
;download tmp
; ナビによるサインアップだと OSS が判断できるように
; 最初の入力は "2" のかわりに "CNAV2.00" を用いる
cases "(BYE)=" "このサービスは" "システム調整"
goto * CannotUseService SystemChousei TimeoutHost
gosub StopCheck
sendstr "CNAV2.00\r"
gosub LogCheck
;サインアップデータの送信
signupLoop:
cases "(BYE)=" "(G,BYE)=" "(E,BYE)=" "下さい=" "漢字で入力して下さい。(" "(YES,E,BYE)=" "入力内容に誤り" "ご入会頂けません" "照会ができません" "大変混雑" "システム調整"
goto * * * * PersonDataEntry Complete ErrorDetect CannotEntry CannotShoukai Konzatsu SystemChousei TimeoutHost
gosub StopCheck
gosub SendData
gosub LogCheck
goto signupLoop
; 個人(家族)情報の送信
; 家族会員の登録可能な人数は 4 - (登録済みの人数) と可変なので、
; 登録可能な人数と登録しようとしている人数の比較はマクロで行う
PersonDataEntry:
; 氏名の送信
; famCount == 0 ならば、(登録可能な人数) > (登録しようとした人数) なので
; 空リターンを送信して住所の登録に移る
; famCount != 0 ならば、まだ送信する個人(家族)情報が残っているので続ける
cases "(E,BYE)="
goto * TimeoutHost
gosub StopCheck
if famCount == 0
then
sendstr "\r"
gosub LogCheck
goto signupLoop
else
gosub SendData
gosub LogCheck
endif
; フリガナ、性別、生年月日登録ループ用のカウンタ
loopcount = 3
PersonDataLoop:
; カウンタが 0 になるまで、すなわち、フリガナ、性別、
; 生年月日の3つを送信するまでループする
cases "(E,BYE)=" "入力内容に誤り"
goto * ErrorDetect TimeoutHost
gosub StopCheck
gosub SendData
gosub LogCheck
loopcount = loopcount - 1
if loopcount != 0 then PersonDataLoop
; 1人分のデータが送信し終わったので、famCount を減ずる
famCount = famCount - 1
cases "漢字で入力して下さい。(" "あなたの住所を" "入力内容に誤り" "20才未満"
goto PersonDataEntry * ErrorDetect Younger TimeoutHost
; 住所登録に移った場合のチェック
; famCount != 0 ならば、(登録可能な人数) < (登録しようとした人数) なので
; 余分なデータを読み飛ばす
while famCount != 0
read 1 string
gosub LogCheck
read 1 string
gosub LogCheck
read 1 string
gosub LogCheck
read 1 string
gosub LogCheck
famCount = famCount - 1
wend
goto signupLoop
; サインアップデータの送信終了
Complete:
gosub StopCheck
sendstr "YES\r"
cases "下さい="
goto * TimeoutHost
gosub StopCheck
sendstr "\r"
;;; この download はリリース用です。リリース版ではこれを有効にし、
;;; 上の方の download がコメントアウトされていることを確認すること。
download tmp
tmpOpen = 1
open 3 log APPEND
write 3 "***************************************************"
close 3
; 個人会員登録は Ankeito1 へ、家族会員登録は Ankeito2 へ
CommandParam "target" target
if target != "" then Ankeito2
; 個人会員登録用アンケート
Ankeito1:
cases "ありがとうございました。" "(E,BYE)="
goto EndAnkeito * TimeoutHost
gosub StopCheck
goto Ankeito1
; 家族会員登録用アンケート
Ankeito2:
cases "(アクセスガイド)" "(E,BYE)=" "下さい="
goto EndAnkeito NoFamilyCheck * TimeoutHost
gosub StopCheck
cases "下さい="
goto * TimeoutHost
entryFamily = entryFamily + 1
NoFamilyCheck:
gosub StopCheck
goto Ankeito2
; アンケート終了
EndAnkeito:
open 3 log APPEND
write 3 "***************************************************"
close 3
postLoop:
cases "下さい=" "(N,B,E,BYE)=" "データ中に誤り" "登録に不備"
goto * LogOut DataError EntryError TimeoutHost
sendstr "\r"
gosub LogCheck
goto postLoop
; 「家族会員」登録ですでに一人以上にIDが発行されているときに
; 「中止」ボタンが押された場合の処理
FamilyStop:
open 3 log APPEND
write 3 "***************************************************"
close 3
download close
tmpOpen = 0
MsgBox "「中止」ボタンが押されました" 0 0
gosub Hangup
goto LogOut1
; サインアップ完了時の処理
LogOut:
download close
tmpOpen = 0
sendstr "BYE\r"
cases "NO CARRIER" "SEE YOU AGAIN"
goto LogOut1 LogOut1 *
gosub Hangup
LogOut1:
write 2 "OK\n"
; tmpファイルの中からサインアップ情報を取り出す
open 3 tmp READ
open 4 inf WRITE
; 本来はアンケートの直前から tmp ファイルにダウンロードするので、
; そこまでは読み飛ばす。
read 3 string
while string != ""
str2 = left(string, 10)
if str2 == "アンケート" then
break;
else
read 3 string
endif
wend
read 3 string
while string != ""
str2 = left(string, 10)
if str2 == "*** C" then
while string != ""
str2 = left(string, 10)
if str2 == "リターンキ" then
read 3 string
break
else
write 4 string
read 3 string
endif
wend
else
read 3 string
endif
wend
close 3
close 4
goto Terminate
;; エラー処理
TimeoutHost:
if tmpOpen == 1
then
download close
tmpOpen = 0
endif
errStr = "センターの応答がありません"
goto ErrorDetect
ClickedStop:
if tmpOpen == 1
then
download close
tmpOpen = 0
endif
errStr = "「中止」ボタンが押されました"
MsgBox "「中止」ボタンが押されました" 0 0
goto ErrorDetect
Younger:
MsgBox "20才未満は、サインアップでの加入はできません" 0 0
goto ErrorDetect
Konzatsu:
errStr = "ただ今、回線は大変混雑しております"
MsgBox "ただ今、回線は大変混雑しております"+CR+"しばらくたってからご利用下さい" 0 0
goto ErrorDetect0
SystemChousei:
errStr = "システム調整中のため、サービスを中止します"
MsgBox "システム調整のため、"+CR+"誠に申し訳ございませんがサービスを中止いたします" 0 0
goto ErrorDetect0
CannotUseService:
errStr = "現在このサービスは御利用できません"
MsgBox "現在このサービスは御利用できません" 0 0
goto ErrorDetect0
CannotEntry:
errStr = "まことに申し訳ございませんがご入会頂けません"
MsgBox "まことに申し訳ございませんがご入会頂けません" 0 0
goto ErrorDetect0
CannotShoukai:
errStr = "ただいまカード照会ができません"
MsgBox "ただいまカード照会ができません"+CR+"後ほどお申し込みいただきますようにお願いいたします" 0 0
goto ErrorDetect0
DataError:
download close
tmpOpen = 0
errStr = "ただ今の登録データ中に誤りが検知されました"
MsgBox "ただ今の登録データ中に誤りが検知されました"+CR+"登録をやり直して下さい" 0 0
goto ErrorDetect0
EntryError:
download close
tmpOpen = 0
errStr = "ユーザデータの登録に不備が発生しました"
MsgBox "誠に申し訳ございませんが、ユーザデータの登録に不備が発生しました"+CR+"登録をやり直して下さい" 0 0
goto ErrorDetect0
ErrorDetect:
gosub Hangup
ErrorDetect0:
write 2 "Error\n"
write 2 errStr "\n"
;; サインアップ終了
Terminate:
close 1
close 2
open 3 log APPEND
write 3 "***************************************************"
close 3
escape