NifTerm ログインスクリプト仕様 第4版 1997/01/28 (C) Daytime 1.目的 NifTerm のログインスクリプトは、ROAD1〜7以外の経路でNIFTY-Serve につなぎ  NifTerm を使いたい、というご要望に応えるための機能です。NifTerm の基本機能を  拡張することを目的としていません。  注意:通信条件はノーパリティ/8ビット/1ストップビット/シフトJISに限ら  れます。この条件で接続できないネットは経由できません。 2.ログインスクリプトの内容 ログインスクリプトでは以下の部分を1個のファイルに記述します。 ・モデムから「CONNECT」が返った後、ホストから「Enter Connection-ID」が返る までの間(ログイン部分) ・ホストに「BYE」を送ったあと、回線切断までの間(ログアウト部分) 3.スクリプトファイルの作成 スクリプトファイルはシフトJIS のテキストファイルです。拡張子はLSC です。任 意のテキストエディタで作成することができます。  ご注意:エディタによっては、「名前をつけて保存」するとき指定したファイル名のう  しろに強制的に.TXTをつけて.LSC.TXTのような名前にしてしまうものがあります。エク  スプローラで拡張子を隠さないように設定してファイル名をご確認の上、.LSC.TXTにな  っていたら、.LSCにリネームしてください。 4.スクリプトファイルの使用 スクリプトファイルを使用するには、次の手順で指定します。 ・スクリプトファイルをNifTerm のデータ(SETTING.DATなど)と同じディレクトリ に置きます。 ・アクセスポイントの追加時に、ディレクトリにある拡張子「.LSC」を持つファイ ル名が「経由」の欄に候補として表示されるので、これを選びます。   ROAD*.LSC という名前は付けないでください。内蔵のROADx用スクリプトと競合する   ため選べなくなります。 5.スクリプトファイルの構成 小文字、大文字は区別されます。 全角文字は、文字列とコメントの中にのみ使用できます。 ・ラベル ラベルは、スクリプトファイルの入り口、goto 文の飛び先を示すために使います。 ラベルには、A-Z、a-z、0-9、_(下線)が使えます。 ラベルを定義するには、行のはじめに「:」を置き、その後にラベルを続けます。 例 :login ・loginラベルとlogoutラベル ログイン部分とログアウト部分の始まりを記述します。これらのラベルは必須です。 ・コメント 行の「//」以降はコメントとして扱われます。コメントは実行時に無視されます。 ・文字列 いくつかの命令は文字列をパラメータとして使用します。文字列は「"」で囲みま す。文字列中には以下の特殊文字が使用できます。 \b バックスペース \n ラインフィード \r キャリッジリターン(Enterキー) \t 水平タブ(Tabキー) \v 垂直タブ \' 文字「'」 \" 文字「"」(「""」でも同じです) \\ 文字「\」 \ooo ooo は8進数3桁で文字コードを指定 \xhh hh は16進数2桁で文字コードを指定 ・命令 命令は1行にひとつだけ記述する必要があります。複数行にまたがる命令は不可で   す。 6.命令 (1)trace 命令 書式 trace on|off 例 trace on onでトレースを始めます。off で終わらせます。 トレース中は、実行したスクリプトの行番号を「scripttr.txt」というファイルに 出力します。スクリプトのデバッグに使用します。 (2)send 命令 書式 send 文字列 例 send "OFF\r" 文字列を送信します。改行は「\r」と記述します。 (3)goto 命令 書式 goto ラベル 例 goto label1 ラベルのついた行に飛びます。 (5)end 命令 書式 end スクリプトの実行を終了します。 ログイン部分であれば、NifTerm の通常のオートパイロットに制御が移ります。 ログアウト部分であれば、オートパイロットを終了します。 (6)abort 命令 書式 abort 文字列 スクリプトの実行を異常終了します。 NifTerm はオートパイロットを終了し、文字列をエラーログに表示します。 (7)disconnect命令 書式 disconnect 回線を切断します。 (8)wait 命令 書式 wait 条件 [and 条件...] [goto ラベル] 例 wait left=="COM\r" 条件が満たされたとき、ラベルで指定された命令(ないときは次の命令、次の命   令がor命令の時はさらにその次)に移ります。 それまで先には進みません。 or 命令により、複数の条件を待つことができます。 条件には以下のものがあります。 left==文字列 受信した行の左端が文字列と一致したとき条件が満たされます。 right==文字列 受信した行の右端が文字列と一致したとき条件が満たされます。 mid==文字列 受信した行が文字列を含むとき条件が満たされます。 exact==文字列 受信した行が文字列と完全に一致したとき条件が満たされます。 elapsed 時間 wait文に入ってから、指定時間が経過したとき条件が満たされます。時間はミリ秒 で指定します(1000 = 1秒) (9)or 命令 書式 or 条件 [and 条件...] [goto ラベル] wait命令の代替条件を指定します。wait命令の直後または、or 命令の直後にしか 置けません。 wait命令の後に1個または複数のor命令を置くと、一連のwait命令または、or命令 のいずれかの条件が満たされるまで待つようにできます。 条件はwait 命令と同じです。 例: wait left=="COM" or left=="Clear" goto retry or elapsed 10000 goto error "COM" で始まる行が受信されると、or の次の行に、 "Clear" で始まる行が受信されると、「:retry」の行に、 どちらも受信されないまま10秒経つと、「:error」の行に飛びます。 7.注意事項 goto 命令でループをくむときは、間にwait 命令が入るようにしてください。 wait 命令を実行せずにループすると、Windows がハング状態になります。 受信行が終わっているか(改行しているか)確認するためには、右端が「\r」とマ ッチするかで調べてください。複数行にまたがる文字列を1個のwait命令で検出す   ることはできません。   プロンプトを待った後、文字列を送信し、さらに同じプロンプトを待つ場合は、次   の※のようにして、送った行のエコーバックを受信し終わるまで待ってください。   ※の行を入れないと、次のwait命令では前の応答済みプロンプトにヒットしてしま   います wait left=":" send "1\r" wait right=="\r"//※1\rを送ったプロンプトの行が終わるのを待つ wait left=":" 8.サンプル   実動するサンプルです。動かすときは点線の間を切り取って拡張子.LSCのファイル   にして4で説明したディレクトリに置いてください。 8.1 CIS AP用 ------------------------------------------------------------------------------ // NifTerm ログインスクリプトサンプル for CompuServe AP // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を // 助けることを目的としています。 // ログイン部分 // モデムから「CONNECT」 が返ったあと、 // ホストから「Enter Connection-ID」 が返る前までを記述します。 :login // このラベルで始める必要があります。 :login_send00 // 4秒待ちます wait elapsed 4000 // 改行 を送ります send "\r" // 化けた文字を待ちます // (化け文字は手でアクセスしたときのログ内容をYYMMDD.LOGからコピー) wait right == ":" // 化け文字が来たら次へ or elapsed 30000 goto login_error // 30 秒応答がなければ中止 // 「NIFTY」改行 をおくります send "NIFTY\r" // あとはEnter Connection-IDが来るのでスクリプトは終わり end :login_error disconnect // 回線切断 abort "ログインできません" // ログアウト部分 // NIFTY に「BYE\r」 を送ったあと、 // 回線切断までを記述します :logout // このラベルで始める必要があります // 化けた文字を待ちます // (化け文字は手でアクセスしたときのログ内容をYYMMDD.LOGからコピー) wait right == ":" // 化け文字が来たら次へ or elapsed 30000 goto logout_error // 30 秒応答がなければ中止 // 「off」改行 をおくります send "off\r" end :logout_error disconnect // 回線切断 abort "" ------------------------------------------------------------------------------ 8.2 FENICS ROAD1用 ------------------------------------------------------------------------------ // NifTerm ログインスクリプトサンプル for FENICS ROAD1 // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を // 助けることを目的としています。 // ログイン部分 // モデムから「CONNECT」 が返ったあと、 // ホストから「Enter Connection-ID」 が返る前までを記述します。 :login // このラベルで始める必要があります。 :login_send00 // 4秒待ちます wait elapsed 4000 // .00+ を送ります send ".00+" // COM を待ちます wait left == "COM" and right == "\r" // COM が来たら次へ or left == "21+" goto login_send00 // リトライ or left == "00+" goto login_send00 // リトライ or elapsed 30000 goto login_error // 30 秒応答がなければ中止 // 終わり end :login_error disconnect // 回線切断 abort "ログインできません" // ログアウト部分 // NIFTY に「BYE\r」 を送ったあと、 // 回線切断までを記述します :logout // このラベルで始める必要があります trace on wait left == "01+" // 01+ が来たら次へ or elapsed 10000 // 10秒応答がなければ次へ disconnect // 回線切断 end ------------------------------------------------------------------------------ 8.3 FENICS ROAD2用 ------------------------------------------------------------------------------ // NifTerm ログインスクリプトサンプル for FENICS ROAD2 // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を // 助けることを目的としています。 // ログイン部分 // モデムから「CONNECT」 が返ったあと、 // ホストから「Enter Connection-ID」 が返る前までを記述します。 :login // このラベルから始める必要があります。 // 4秒待ちます wait elapsed 4000 // 「@P(改行)」を送ります send "@P\r" // 「HOST NAME?」 で始まる行が終わるまで待ちます wait left=="HOST NAME?" and right=="\r" // 正常 or elapsed 30000 goto login_error // エラー :login_wait_aster // 「*」のプロンプトが出るまで待ちます wait left=="*" // 正常 or elapsed 30000 goto login_error // エラー // 「C NIF(改行)」を送ります send "C NIF\r" // COM が返るまで待ちます wait left=="COM" and right=="\r" // 正常 or left=="Clear" goto login_wait_aster // リトライ or elapsed 30000 goto login_error // エラー // 終わり end :login_error disconnect // 回線切断 abort "ログインできません。" // ログアウト部分 // NIFTY に「BYE\r」 を送ったあと、 // 回線切断までを記述します :logout // このラベルから始める必要があります wait left=="*" send "OFF\r" end ------------------------------------------------------------------------------                    -・-