home *** CD-ROM | disk | FTP | other *** search
/ Curio City 7 / CURIO7.bin / pc / net / copergla / signup.pr_ / signup.pr
Text File  |  1996-07-03  |  12KB  |  451 lines

  1. path = "A:\\COPERWIN\\V200B3\\"
  2. TelNum = "0120-81-6058"
  3. ;=-----------------------------------------------------
  4. declare "CommandParam" "NAV.DLL" STR STR
  5.  
  6. goto Entry
  7.  
  8. ;; サブルーチン
  9.  
  10. ; ハングアップ
  11. Hangup:
  12.     wait 2
  13.     sendstr "+++"
  14.     wait 2
  15.     sendstr "ath0\r"
  16.     return  
  17.     
  18. ; logファイル(signup.log)に"*"を書き込む
  19. LogCheck:
  20.     open 3 log APPEND
  21.     write 3 "*"
  22.     close 3
  23.     return
  24.  
  25. ; 「中止」ボタンが押されたかをチェックする
  26. ; 「家族会員」登録で、かつ1人以上にIDが発行されている場合は
  27. ; 特別な中止処理(FamilyStop)を行う
  28. StopCheck:
  29.     CommandParam "signupStop" signupStop
  30.     if (signupStop != "")
  31.     then
  32.         CommandParam "target" target
  33.         if (target == "" || entryFamily == 0)
  34.         then
  35.             goto ClickedStop
  36.         else
  37.             goto FamilyStop
  38.         endif
  39.     endif
  40.     return
  41.  
  42. ; データファイルからデータを1行読み込んで送信する
  43. SendData:
  44.     read 1 string
  45.     wait 1
  46.     sendstr string
  47.     errStr = "入力内容の誤り:" + string
  48.     return
  49.  
  50.  
  51. ;; サインアップスタート
  52.  
  53. Entry:
  54.     setname "COPERNICUSオンラインサインアップ"
  55.  
  56.     ; 入出力ファイルの設定
  57.     dat = path + "signup.dat"
  58.     rsp = path + "signup.rsp"
  59.     log = path + "signup.log"
  60.     tmp = path + "signup.tmp"
  61.     inf = path + "signup.inf"
  62.  
  63.     ; 各変数の初期値設定
  64.  
  65.     ; 送信データを格納するための変数
  66.     string = ""
  67.     ; エラーメッセージ用の変数
  68.     errStr = ""
  69.  
  70.     ; 「中止」ボタンが押されたかを判断するための変数
  71.     ; 押されると "CLICKED" がセットされる
  72.     signupStop = ""
  73.     ; 登録対象が「個人会員」か「家族会員」かを判断するための変数
  74.     ; 「家族会員」の場合、"FAMILY" がセットされる
  75.     target = ""
  76.     ; 「家族会員」ですでにID発行済みの者の人数
  77.     entryFamily = 0
  78.     ; サインアップビューから登録人数を受け取るための変数
  79.     famcnt = ""
  80.     ; 実際の登録人数用のカウンター
  81.     famCount = 0
  82.     ; tmp ファイルがオープンされているかをチェックするフラグ
  83.     tmpOpen = 0
  84.  
  85.     ; famcnt の値によって、famCount の値をセットする
  86.     CommandParam "famcnt" famcnt
  87.     switch  famcnt  "1"             "2"             "3"             "4"
  88.     goto            *               SetFamilyCount2 SetFamilyCount3 SetFamilyCount4 *
  89.  
  90. SetFamilyCount1:
  91.     famCount = 1
  92.     goto FileCheck
  93.  
  94. SetFamilyCount2:
  95.     famCount = 2
  96.     goto FileCheck
  97.  
  98. SetFamilyCount3:
  99.     famCount = 3
  100.     goto FileCheck
  101.  
  102. SetFamilyCount4:
  103.     famCount = 4
  104.  
  105. FileCheck:
  106.     ; データファイルのチェック
  107.     open 1 dat READ
  108.     open 2 rsp WRITE
  109.  
  110.     open 3 log WRITE
  111.     close 3
  112.  
  113.     ; プロトコルの設定
  114.  
  115.     protocol "N81NN"
  116. ;    speed 14400
  117.  
  118. ;---------------------------------------------
  119.     ; モデムの初期化処理
  120.     InitStr = ""
  121.     CommandParam "ModemInit" InitStr
  122.     timeout 2
  123.     send "ATE1Q0V1"+CR
  124.     cases "OK"     "ERR"
  125.     goto MODEM_INIT MODEM_INIT *
  126.     timeout 3
  127.     send "+++"
  128.     cases "OK"
  129.     goto  *    L_Modem_Error
  130.     send "ATH0"+CR
  131.     cases "OK"
  132.     goto  MODEM_INIT L_Modem_Error
  133. L_Modem_Error:
  134.     errStr = "モデムの初期化に失敗しました"
  135.     goto    ErrorDetect
  136. MODEM_INIT:
  137.     print "Modem Init ..%s(%s)\r\n", InitStr, UMODEM
  138.     if strlen(InitStr) == 0 
  139.     then
  140.         send UMODEM+CR
  141.     else
  142.         send "AT"+InitStr+CR
  143.     endif
  144.     cases "OK"
  145.     goto  L_AutoDial_Start *
  146.     if InitStr == "X3" then L_Modem_Error
  147.     InitStr = "X3"
  148.     goto MODEM_INIT
  149.  
  150. L_AutoDial_Start:
  151. ;-----------------------------------------------
  152.  
  153.     loginCount = 0
  154.     errStr = "センターとの接続に失敗しました"
  155.     autodial UPBX+TelNum "" "" 5 60
  156.     goto * ErrorDetect ErrorDetect
  157.  
  158.     gosub StopCheck
  159.     gosub LogCheck
  160.  
  161.     wait 3
  162. ;;; SYSTEC6761K はテスト用なので、リリース版では無効にすること
  163. ;    sendstr "SYSTEC6761K\r"
  164.     sendstr "COSIGN\r"
  165.  
  166.     timeout 60
  167.  
  168. ;;; この download はテスト用なので、リリース版ではコメントアウトし、
  169. ;;; 後の方の download が有効であることを確認する。
  170. ;download tmp
  171.  
  172.     ; ナビによるサインアップだと OSS が判断できるように
  173.     ; 最初の入力は "2" のかわりに "CNAV2.00" を用いる
  174.     cases  "(BYE)=" "このサービスは"    "システム調整"
  175.     goto    *       CannotUseService    SystemChousei   TimeoutHost
  176.     gosub StopCheck
  177.     sendstr "CNAV2.00\r"
  178.  
  179.     gosub   LogCheck
  180.  
  181. ;サインアップデータの送信
  182. signupLoop:
  183.     cases   "(BYE)=" "(G,BYE)=" "(E,BYE)=" "下さい=" "漢字で入力して下さい。(" "(YES,E,BYE)=" "入力内容に誤り" "ご入会頂けません" "照会ができません" "大変混雑" "システム調整"
  184.     goto    *        *          *          *         PersonDataEntry            Complete       ErrorDetect      CannotEntry        CannotShoukai      Konzatsu    SystemChousei  TimeoutHost
  185.     gosub StopCheck
  186.     gosub SendData
  187.     gosub LogCheck
  188.     goto signupLoop
  189.  
  190. ; 個人(家族)情報の送信
  191. ; 家族会員の登録可能な人数は 4 - (登録済みの人数) と可変なので、
  192. ; 登録可能な人数と登録しようとしている人数の比較はマクロで行う
  193. PersonDataEntry:
  194.     ; 氏名の送信
  195.     ; famCount == 0 ならば、(登録可能な人数) > (登録しようとした人数) なので
  196.     ; 空リターンを送信して住所の登録に移る
  197.     ; famCount != 0 ならば、まだ送信する個人(家族)情報が残っているので続ける
  198.     cases   "(E,BYE)="
  199.     goto    *           TimeoutHost
  200.     gosub StopCheck
  201.     if famCount == 0
  202.     then
  203.         sendstr "\r"
  204.         gosub LogCheck
  205.         goto signupLoop
  206.     else
  207.         gosub SendData
  208.         gosub LogCheck
  209.     endif
  210.  
  211.     ; フリガナ、性別、生年月日登録ループ用のカウンタ
  212.     loopcount = 3
  213.  
  214. PersonDataLoop:
  215.     ; カウンタが 0 になるまで、すなわち、フリガナ、性別、
  216.     ; 生年月日の3つを送信するまでループする
  217.     cases   "(E,BYE)="  "入力内容に誤り"
  218.     goto    *           ErrorDetect         TimeoutHost
  219.     gosub StopCheck
  220.     gosub SendData
  221.     gosub LogCheck
  222.     loopcount = loopcount - 1
  223.     if loopcount != 0 then PersonDataLoop
  224.  
  225.     ; 1人分のデータが送信し終わったので、famCount を減ずる
  226.     famCount = famCount - 1
  227.  
  228.     cases   "漢字で入力して下さい。("  "あなたの住所を"    "入力内容に誤り"    "20才未満"
  229.     goto    PersonDataEntry             *                   ErrorDetect         Younger         TimeoutHost
  230.     ; 住所登録に移った場合のチェック
  231.     ; famCount != 0 ならば、(登録可能な人数) < (登録しようとした人数) なので
  232.     ; 余分なデータを読み飛ばす
  233.     while famCount != 0
  234.         read 1 string
  235.         gosub LogCheck
  236.         read 1 string
  237.         gosub LogCheck
  238.         read 1 string
  239.         gosub LogCheck
  240.         read 1 string
  241.         gosub LogCheck
  242.         famCount = famCount - 1
  243.     wend
  244.     goto signupLoop
  245.  
  246. ; サインアップデータの送信終了
  247. Complete:
  248.     gosub StopCheck
  249.     sendstr "YES\r"
  250.  
  251.     cases   "下さい="
  252.     goto    *           TimeoutHost
  253.     gosub StopCheck
  254.     sendstr "\r"
  255.  
  256.     ;;; この download はリリース用です。リリース版ではこれを有効にし、
  257.     ;;; 上の方の download がコメントアウトされていることを確認すること。
  258.     download tmp
  259.     tmpOpen = 1
  260.  
  261.     open 3 log APPEND
  262.     write 3 "***************************************************"
  263.     close 3
  264.  
  265.     ; 個人会員登録は Ankeito1 へ、家族会員登録は Ankeito2 へ
  266.     CommandParam "target" target
  267.     if target != "" then Ankeito2
  268.  
  269. ; 個人会員登録用アンケート
  270. Ankeito1:
  271.     cases   "ありがとうございました。" "(E,BYE)="
  272.     goto    EndAnkeito                 *          TimeoutHost
  273.     gosub StopCheck
  274.     goto Ankeito1
  275.  
  276. ; 家族会員登録用アンケート
  277. Ankeito2:
  278.     cases   "(アクセスガイド)"    "(E,BYE)="      "下さい="
  279.     goto    EndAnkeito              NoFamilyCheck   *           TimeoutHost
  280.     gosub StopCheck
  281.     cases   "下さい="
  282.     goto    *           TimeoutHost
  283.     entryFamily = entryFamily + 1
  284. NoFamilyCheck:
  285.     gosub StopCheck
  286.     goto Ankeito2
  287.  
  288. ; アンケート終了
  289. EndAnkeito:
  290.     open 3 log APPEND
  291.     write 3 "***************************************************"
  292.     close 3
  293.  
  294. postLoop:
  295.     cases   "下さい="   "(N,B,E,BYE)="  "データ中に誤り"    "登録に不備"
  296.     goto    *           LogOut          DataError           EntryError      TimeoutHost
  297.     sendstr "\r"
  298.     gosub LogCheck
  299.     goto postLoop
  300.  
  301. ; 「家族会員」登録ですでに一人以上にIDが発行されているときに
  302. ; 「中止」ボタンが押された場合の処理
  303. FamilyStop:
  304.     open 3 log APPEND
  305.     write 3 "***************************************************"
  306.     close 3
  307.     download close
  308.     tmpOpen = 0
  309.     MsgBox "「中止」ボタンが押されました" 0 0
  310.     gosub Hangup
  311.     goto LogOut1
  312.  
  313. ; サインアップ完了時の処理
  314. LogOut:
  315.  
  316.     download close
  317.     tmpOpen = 0
  318.  
  319.     sendstr "BYE\r"
  320.     cases   "NO CARRIER" "SEE YOU AGAIN"
  321.     goto    LogOut1      LogOut1         *
  322.     gosub   Hangup
  323.  
  324. LogOut1:
  325.     write 2 "OK\n"
  326.     
  327.     ; tmpファイルの中からサインアップ情報を取り出す
  328.     open 3 tmp READ
  329.     open 4 inf WRITE
  330.     
  331. ; 本来はアンケートの直前から tmp ファイルにダウンロードするので、
  332. ; そこまでは読み飛ばす。
  333. read 3 string
  334. while string != ""
  335.     str2 = left(string, 10)
  336.     if str2 == "アンケート" then
  337.         break;
  338.     else
  339.         read 3 string
  340.     endif
  341. wend
  342.  
  343.     read 3 string
  344.     while string != ""
  345.         str2 = left(string, 10)
  346.         if str2 == "*** C" then
  347.             while string != ""
  348.                 str2 = left(string, 10)
  349.                 if str2 == "リターンキ" then
  350.                     read 3 string
  351.                     break
  352.                 else
  353.                     write 4 string
  354.                     read 3 string
  355.                 endif
  356.             wend
  357.         else
  358.             read 3 string
  359.         endif
  360.     wend
  361.  
  362.     close 3
  363.     close 4
  364.  
  365.     goto Terminate  
  366.     
  367.  
  368. ;; エラー処理
  369.  
  370. TimeoutHost:
  371.     if tmpOpen == 1
  372.     then
  373.         download close
  374.         tmpOpen = 0
  375.     endif
  376.     errStr = "センターの応答がありません"
  377.     goto ErrorDetect
  378.     
  379. ClickedStop:
  380.     if tmpOpen == 1
  381.     then
  382.         download close
  383.         tmpOpen = 0
  384.     endif
  385.     errStr = "「中止」ボタンが押されました"
  386.     MsgBox "「中止」ボタンが押されました" 0 0
  387.     goto ErrorDetect
  388.  
  389. Younger:
  390.     MsgBox "20才未満は、サインアップでの加入はできません" 0 0
  391.     goto ErrorDetect
  392.  
  393. Konzatsu:
  394.     errStr = "ただ今、回線は大変混雑しております"
  395.     MsgBox "ただ今、回線は大変混雑しております"+CR+"しばらくたってからご利用下さい" 0 0
  396.     goto ErrorDetect0
  397.  
  398. SystemChousei:
  399.     errStr = "システム調整中のため、サービスを中止します"
  400.     MsgBox "システム調整のため、"+CR+"誠に申し訳ございませんがサービスを中止いたします" 0 0
  401.     goto ErrorDetect0
  402.  
  403. CannotUseService:
  404.     errStr = "現在このサービスは御利用できません"
  405.     MsgBox "現在このサービスは御利用できません" 0 0
  406.     goto ErrorDetect0
  407.  
  408. CannotEntry:
  409.     errStr = "まことに申し訳ございませんがご入会頂けません"
  410.     MsgBox "まことに申し訳ございませんがご入会頂けません" 0 0
  411.     goto ErrorDetect0
  412.  
  413. CannotShoukai:
  414.     errStr = "ただいまカード照会ができません"
  415.     MsgBox "ただいまカード照会ができません"+CR+"後ほどお申し込みいただきますようにお願いいたします" 0 0
  416.     goto ErrorDetect0
  417.  
  418. DataError:
  419.     download close
  420.     tmpOpen = 0
  421.     errStr = "ただ今の登録データ中に誤りが検知されました"
  422.     MsgBox "ただ今の登録データ中に誤りが検知されました"+CR+"登録をやり直して下さい" 0 0
  423.     goto ErrorDetect0
  424.  
  425. EntryError:
  426.     download close
  427.     tmpOpen = 0
  428.     errStr = "ユーザデータの登録に不備が発生しました"
  429.     MsgBox "誠に申し訳ございませんが、ユーザデータの登録に不備が発生しました"+CR+"登録をやり直して下さい" 0 0
  430.     goto ErrorDetect0
  431.  
  432. ErrorDetect:
  433.     gosub Hangup
  434.  
  435. ErrorDetect0:
  436.     write 2 "Error\n"
  437.     write 2 errStr "\n"
  438.     
  439.  
  440. ;; サインアップ終了
  441.  
  442. Terminate:
  443.     close 1
  444.     close 2
  445.  
  446.     open 3 log APPEND
  447.     write 3 "***************************************************"
  448.     close 3
  449.  
  450.     escape
  451.