home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703B.ISO / terminal / wtalkbbs / pcvan.hsc < prev    next >
Text File  |  1996-07-11  |  9KB  |  408 lines

  1. # 修正履歴
  2. # ----------+-----------------------------------------------
  3. # Ver1.1
  4. # Ver1.2    2400系で返してくる"err-33"に対応
  5. # Ver1.3    お知らせで改行が必要な場合に対応
  6. # Ver1.4    ログイン後ホスト側の準備ができるまでウェイトをいれる
  7. # Ver1.5    CONNECT後の'NO CARRER'を監視
  8. #           メニュー選択後のメッセージチェック
  9. # Ver2.0    製品番号のチェックに対応
  10. #
  11. # Ver3.0    WorldTALK V2.0対応
  12. #
  13. # 外部変数
  14. # LOGINSTATUS -2    接続出来ないで終了
  15. #             -1    エラー発生で終了
  16. #             0     実行中
  17. #             1...  アクセスポイント種別
  18. #
  19. # USERNAME    ユーザーID
  20. # PASSWORD    パスワード
  21. #
  22. 自動ログイン() :
  23. DISPLOGX('スクリプトバージョン:V3.0')
  24.  
  25.  LOGINSTATUS = 0
  26.  ONLINE      = 0
  27.  繰返回数    = 0
  28.  LOGONCOMMAND= 'WWWDIRECT'
  29.  JUMPCODE    = 'JWWWDIRECT'
  30.  ON_ERROR( エラー発生 )
  31.  MODEMPARAM(コマンド1,コマンド2,ゼロ発信,出力遅延時間,文字遅延,タイムアウト,通信ポート,ダイアル種別,ゼロ発信文字列)
  32.  IF USERNAME == "" | PASSWORD == ""
  33.   HOSTID("USERNAME","PASSWORD")
  34.  END
  35. #使用できる番号を接続グループからさがす
  36.  番号 = 1
  37. 番号検索:
  38.  定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別')
  39.  IF 定義状態 == 0
  40.    番号 = 番号 + 1
  41.    IF 番号 > 20
  42.     LOGINSTATUS = -2
  43.     RETURN
  44.    END
  45.    GOTO 番号検索
  46.  END
  47.  DISPTELNO(電話番号,アクセスポイント種別)
  48.  
  49. # オートログインタイムアウトタイマースタート
  50.  STARTTIMER()
  51. # 念のために電話を切る
  52. # DISPSTATE(1)
  53. # ONHOOK()
  54.  
  55. # 回線断の状態にする
  56.  SETLINEOFF()
  57.  
  58.  SETRECTIMEOUT(3000)
  59.  SETCHARDELAY(文字遅延)
  60.  
  61. アクセスポイント巡回:
  62.  IF 番号 > 20
  63.   LOGINSTATUS = -2
  64.   RETURN
  65.  END
  66.  繰返し = 1
  67.  定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別','通信速度','BL','SB','PA','XF','E','KA','CI','CO','RC','RW')
  68.  IF 定義状態 == 0
  69.   番号 = 番号 + 1
  70.   GOTO アクセスポイント巡回
  71.  END
  72.  繰返し回数=RC
  73.  SETCOMPARAM( 通信速度, SB, BL, PA, XF, E, KA, CI, CO )
  74.  
  75.  DISPTELNO(電話番号,アクセスポイント種別)
  76.  IF ゼロ発信
  77.   コマンド1 = コマンド1 - 'X4' + 'X3'
  78.  END
  79.  
  80.  DISPSTATE(2)
  81.  WAIT(500)
  82.  
  83.  IF 出力遅延時間 > 0
  84.   WAIT(出力遅延時間*1000)
  85.  END
  86.  
  87.  IF コマンド1 != ""
  88.   SEND(コマンド1)
  89.   受信データ = RECV()
  90.  
  91. OK待ち1:
  92.   受信データ = RECV()
  93.   IF STREXT(受信データ,0,2) != 'OK'
  94.    IF 受信データ == ''
  95.     GOTO OK待ち1
  96.    END
  97.    エラーメッセージ = "モデム初期化コマンド1でエラーが発生しました。\nコマンド("+コマンド1+')'
  98.    GOTO エラーメッセージ表示
  99.   END
  100.  
  101.   IF 出力遅延時間 > 0
  102.    WAIT(出力遅延時間*1000)
  103.   END
  104.  END
  105.  
  106.  IF コマンド2 != ""
  107.   SEND(コマンド2)
  108.   受信データ = RECV()
  109.  
  110. OK待ち2:
  111.   受信データ = RECV()
  112.   IF STREXT(受信データ,0,2) != 'OK'
  113.    IF 受信データ == ''
  114.     GOTO OK待ち2
  115.    END
  116.    エラーメッセージ = "モデム初期化コマンド2でエラーが発生しました。\nコマンド("+コマンド2+')'
  117.    GOTO エラーメッセージ表示
  118.   END
  119.  
  120.   IF 出力遅延時間 > 0
  121.    WAIT(出力遅延時間*1000)
  122.   END
  123.  END
  124.  
  125.  呼出しATコマンド = 'ATD' + ダイアル種別
  126.  IF ゼロ発信
  127.   DISPLOG('ゼロ発信:'+ゼロ発信文字列)
  128.   呼出しATコマンド = 呼出しATコマンド + ゼロ発信文字列
  129.  END
  130.  呼出しATコマンド = 呼出しATコマンド + 電話番号
  131.  
  132. ホスト呼び出し:
  133.  DISPSTATE(3)
  134.  IF 出力遅延時間 > 0
  135.   WAIT(出力遅延時間*1000)
  136.  END
  137.  SEND(呼出しATコマンド)
  138.  
  139. 着呼確認 :
  140.   受信データ = RECV()
  141.   LEN = STRLEN(受信データ)
  142.   IF LEN == 0
  143.     GOTO 着呼確認:
  144.   END
  145.   $D = STREXT(受信データ,0,4)
  146.   IF $D == 'NO D' 
  147.    DISPLOGX("モデムからの応答:"+受信データ)
  148.    エラーメッセージ = "モデムに電話回線が接続されていないようです。"
  149.    GOTO エラーメッセージ表示
  150.   END
  151.   IF $D == 'DELA' | $D == 'BLAC'
  152.    DISPLOGX("モデムからの応答:"+受信データ)
  153.    エラーメッセージ = "リダイヤル規制です。\n1分以上間隔をおいてください"
  154.    GOTO エラーメッセージ表示
  155.   END
  156.   IF $D == 'ERRO'
  157.    DISPLOGX("モデムからの応答:"+受信データ)
  158.    エラーメッセージ = "ダイヤルコマンドでエラーが発生しました。\nダイヤルコマンド("+呼出しATコマンド+')'
  159.    GOTO エラーメッセージ表示
  160.   END
  161.   IF $D == 'BUSY' | $D == 'NO C' | $D == 'HAND' | $D == 'OK'
  162.    DISPLOGX("モデムからの応答:"+受信データ)
  163.    GOTO ログイン失敗
  164.   END
  165.   IF STREXT(受信データ,0,7) != 'CONNECT'
  166.    GOTO 着呼確認
  167.   END
  168. # DIAL.LOGにホスト名、電話番号、"CONNECT XXXX"を保存
  169.  PUTCONNECTLOG(名前,電話番号,受信データ)
  170.  
  171.  DISPSTATE(4)
  172.  WAIT(2000)
  173.  
  174. #LOGIN PROCESS
  175.  SEND(LOGONCOMMAND)
  176. ログオンコマンド確認 :
  177.  受信データ=RECV()
  178.  LEN=STRLEN(受信データ)
  179.  POS=STRPOS(受信データ,'ユーザID:')
  180.  IF LEN == POS
  181.   POS=STRPOS(受信データ,'サービスを終了')
  182.   IF LEN != POS
  183.    エラーメッセージ=受信データ
  184.    GOTO エラーメッセージ表示
  185.   END
  186.   POS=STRPOS(受信データ,'ただ今')
  187.   IF LEN != POS
  188.    エラーメッセージ=受信データ
  189.    GOTO エラーメッセージ表示
  190.   END
  191.   POS=STRPOS(受信データ,'システム調整')
  192.   IF LEN != POS
  193.    エラーメッセージ=受信データ
  194.    GOTO エラーメッセージ表示
  195.   END
  196.   POS=STRPOS(受信データ,'PLEASE')
  197.   IF LEN != POS
  198.    エラーメッセージ=受信データ
  199.    GOTO エラーメッセージ表示
  200.   END
  201.   POS=STRPOS(受信データ,'err')
  202.   IF LEN != POS
  203.    エラーメッセージ='このアクセスポイントではWorldTALKを使用できないようです。別のアクセスポイントを選択してください。'
  204.    GOTO エラーメッセージ表示
  205.   END
  206.   POS=STRPOS(受信データ,'NO C')
  207.   IF LEN != POS
  208.    エラーメッセージ='回線が切断されました。もう一度接続してみてください。'
  209.    GOTO エラーメッセージ表示
  210.   END
  211.   GOTO ログオンコマンド確認
  212.  END
  213.  
  214.  SEND(USERNAME)
  215.  RECV()
  216.  
  217. ユーザー名確認:
  218.  受信データ=RECV()
  219.  IF 受信データ == ' ' | 受信データ == ''
  220.   GOTO ユーザー名確認
  221.  END
  222.  IF STREXT(受信データ,0,12) == 'IDまたはパ'
  223.    エラーメッセージ="ユーザIDを確認してください"
  224.    GOTO エラーメッセージ表示
  225.  END
  226.  
  227.  SEND(PASSWORD+','+JUMPCODE)
  228.  
  229. ログインチェック :
  230.  受信データ = RECV()
  231.  IF 受信データ == '' | 受信データ == ' '
  232.   GOTO ログインチェック
  233.  ELSE
  234.   LEN=STRLEN(受信データ)
  235.   IF STREXT(受信データ,0,12) == 'IDまたはパ'
  236.     エラーメッセージ='パスワードを確認してください'
  237.     GOTO エラーメッセージ表示
  238.   END
  239.  END
  240.  
  241. ログインメッセージ確認1:
  242.  LEN = STRLEN(受信データ)
  243.  POS=STRPOS(受信データ,'回線を切って')
  244.  IF POS != LEN
  245.    エラーメッセージ='二重ログインしているようです。'
  246.    GOTO エラーメッセージ表示
  247.  END
  248.  POS = STRPOS(受信データ,'プロファイル')
  249.  IF POS != LEN
  250.   GOTO 正常終了
  251.  ELSE
  252.   POS = STRPOS(受信データ,'リターンキーを押して下さい')
  253.   IF POS != LEN
  254.    SEND('')
  255.    受信データ=RECV()
  256.    GOTO ログインメッセージ確認1
  257.   END
  258.   POS = STRPOS(受信データ,'お知らせを')
  259.   IF POS != LEN
  260.    SEND('N')
  261.    RECV()
  262.    GOTO WWWお知らせ終了
  263.   END
  264.   POS = STRPOS(受信データ,'WWW')
  265.   IF POS != LEN
  266.    GOTO WWWサービス
  267.   END
  268.   POS = STRPOS(受信データ,'コマンド=')
  269.   IF POS != LEN
  270.    SEND('N')
  271.    GOTO WWWお知らせ終了
  272.   END
  273.   CHECKMESSAGE(受信データ)
  274.   受信データ=RECV()
  275.   GOTO ログインメッセージ確認1
  276.  END
  277.  
  278. 正常終了 :
  279. # プロファイルを修正
  280.  SEND('N')
  281.  RECV()
  282. WWWお知らせ :
  283.  受信データ = RECV()
  284.  IF STRPOS(受信データ,'お知らせを') != STRLEN(受信データ)
  285.   SEND('N')
  286.   GOTO WWWお知らせ終了
  287.  ELSE
  288.   CHECKMESSAGE(受信データ)
  289.   GOTO WWWお知らせ
  290.  END
  291. WWWお知らせ終了:
  292.  
  293. WWWサービス :
  294.  受信データ = RECV()
  295.  IF STRPOS(受信データ,'番号またはコマンド') != STRLEN(受信データ)
  296.   SEND('2')
  297.   RECV()
  298. TIMEOUTCHK:
  299.   受信データ=RECV(5)
  300.   IF 受信データ == ''
  301.     GOTO TIMEOUTCHK
  302.   END
  303.   IF 受信データ != '@TIMEOUT'
  304.    エラーメッセージ=受信データ
  305.    GOTO エラーメッセージ表示
  306.   END
  307. # 製品番号を出力
  308.   WAIT(3000)
  309.   SENDVERSION()
  310.   STATUS = GETMESSAGE()
  311.   IF STATUS != 1 
  312.     エラーメッセージ="バージョンチェックでエラーが発生しました。メッセージを確認してください。"
  313.     GOTO エラーメッセージ表示
  314.   END
  315.   SEND(USERNAME)
  316.   RECV()
  317.   GOTO WWWサービス終了
  318.  ELSE
  319.   GOTO WWWサービス
  320.  END
  321. WWWサービス終了:
  322.  
  323.  SETLINEON()
  324.  SEND('CANCEL')
  325.  RECV(5)
  326.  LOGINSTATUS = アクセスポイント種別
  327.  RETURN
  328.  
  329. ログイン失敗 :
  330.  IF ONLINE == 1
  331.   DISPSTATE(1)
  332.   ONHOOK()
  333.   ONLINE = 0
  334.  END
  335.  IF 繰返し < 繰返し回数
  336.   繰返し = 繰返し + 1
  337.   DISPLOGX('繰返し:'+STRING(繰返し)+'回目')
  338.   IF RW > 0
  339.    WAIT(RW*1000)
  340.   END
  341. # オートログインタイムアウトタイマースタート
  342.   STARTTIMER()
  343.   GOTO ホスト呼び出し
  344.  ELSE
  345.   番号 = 番号+1
  346.   DISPLOGX("次の電話番号へ")
  347. # オートログインタイムアウトタイマースタート
  348.   STARTTIMER()
  349.   GOTO アクセスポイント巡回
  350.  END
  351.  
  352. エラーメッセージ表示:
  353.  IF ONLINE == 1
  354.   DISPSTATE(1)
  355.   ONHOOK()
  356.  END
  357.  MESSAGEBOX(エラーメッセージ)
  358.  LOGINSTATUS = -1
  359. END
  360.  
  361. エラー発生() :
  362.  MESSAGEBOX("エラー発生"+_ERR_C+":"+STRING(_ERR_D))
  363.  IF ONLINE == 1
  364.   DISPSTATE(1)
  365.   ONHOOK()
  366.  END
  367.  LOGINSTATUS = -1
  368. END
  369.  
  370. CHECKMESSAGE(受信データ) :
  371.   DISPLOG(受信データ)
  372.   PUTLOG(受信データ)
  373.   RETURN 0
  374. END
  375.  
  376. GETMESSAGE() :
  377. # \MSGSを受信
  378. MSGS:
  379.   DATA = RECV()
  380.   LEN = STRLEN(DATA)
  381.   IF STRPOS(DATA,'MSGS') == STRLEN(DATA)
  382.    GOTO MSGS
  383.   END
  384.   INFOMSG = ''
  385. # \MSGEを受信
  386. MSGE:
  387.   DATA = RECV()
  388.   LEN = STRLEN(DATA)
  389.   IF STRPOS(DATA,'MSGE') == STRLEN(DATA)
  390.    IF INFOMSG != ''
  391.      INFOMSG = INFOMSG + "\n" + DATA
  392.    ELSE
  393.      INFOMSG = DATA
  394.    END
  395.    DISPLOG(DATA)
  396.    PUTLOG(DATA)
  397.    GOTO MSGE
  398.   END
  399.   DATA = RECV()
  400.   IF DATA != 'OK'
  401.    DISPSTATE(1)
  402.    ONHOOK()
  403.    MESSAGEBOX( INFOMSG )
  404.    RETURN 0
  405.   END
  406.  RETURN 1
  407. END
  408.