home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
OLS
/
Winnt
/
HTNT306
/
HTNT306.LZH
/
NIF.SCR
< prev
next >
Wrap
Text File
|
1996-02-14
|
28KB
|
1,066 lines
; Nifty-Serve ROAD1~ROAD5、telnet接続兼用スクリプト
; さらに、世界各地のCompuServeアクセスポイントからも、このスクリプトで
; NIFTYに接続できます!!!
; CompuServeアクセスポイント経由の場合は、ホストプロパティで「7bitで通信」
; をONにしてください。
;
; ユーザIDとパスワードは一番最初に接続した時に聞いてきます。
; その時入力したIDとパスワードは永久的変数に記憶されるので2回目以降
; はもう聞いてこなくなります。
; IDとパスワードを書き換えたい場合は、「スクリプト・変数一覧」で、
; %NifIDと%%NifPasswordを削除してください。
; 自動巡回機能が含まれています。詳しくはJunkai:サブルーチンのコメントを参照
; してください。
; 以下の場合は自動巡回は実行されません。
; - MYFORUM.TXTが見つからない場合
; - 現在の日付が前回自動巡回した時と同じ場合
; その他、詳しくは所々にあるコメントを参照してください。
gethostname #HostName
if( #HostName == "" )
question "スクリプトのセットアップをしますか?"
if( yes )
goto ScriptSetup
endif
endif
afterhangup Atoshimatsu ; ハングアップ後にAtoshimatsu:に
; 行くように指定します。
timeout 4 ; うまくログインしない場合はここを大きくする
switch
case "Enter Connection-ID --->"
goto EnterConnectionID
case "HOST NAME?"
wait "*"
send "C NIF^M"
case timeout
timeout 1
send "." ; うまくログインしない場合はここをコメントにする
wait "."
if( timeout )
send " P^M"
else
send "00+"
endif
endswitch
endif
##ThroughCIS = 0
WaitConnectionID:
timeout 50
switch
case "Host Name: "
send "NIFTY^M"
##ThroughCIS = 1
goto WaitConnectionID
case "^M^J*"
beginloop
send "C NIF^M"
switch
case " Enter Connection-ID --->"
breakloop
case "^M^J*"
question "センターが接続要求を拒否しました。再試行しますか?"
if( no ) hangup
case timeout
goto エラー
endswitch
endloop
case " Enter Connection-ID --->"
if( ##ThroughCIS != 0 )
port parity=none data=8
endif
; 続く
case timeout
goto エラー
endswitch
EnterConnectionID:
send "SVC^M"
wait " Enter User-ID --->"
if( timeout ) goto エラー
if( %NifID == "" )
input "ユーザIDを入力してください。", %NifID
if( cancel )
hangup
endif
endif
EnterUserID:
send %NifID + "^M"
switch
case " Enter Password --->"
; 次に進む
case " User-ID Error"
#mes = %NifID + "はエラーです。正しいユーザIDを入力してください。"
input #mes, %NifID
if( cancel ) hangup
goto EnterUserID
case timeout
goto エラー
endswitch
#mes = "パスワードを入力してください。"
EnterPassword:
if( %%NifPassword == "" )
secretinput #mes, %%NifPassword
if( cancel )
hangup
endif
endif
#temp = %%NifPassword
if( #temp == "毎回入力する" )
secretinput #mes, #temp
if( cancel )
hangup
endif
endif
send #temp + "^M"
switch
case "^M^J前回"
; 次に進む
case " Password ERROR"
#mes = #temp + "はエラーです。正しいパスワードを入力してください。"
if( %%NifPassword != "毎回入力する" )
%%NifPassword = ""
endif
goto EnterPassword
case timeout
if( %%NifPassword != "毎回入力する" )
%%NifPassword = ""
message "入力したパスワードをクリアーしました。"
endif
goto エラー
endswitch
timeout 0
getline #lastlog
;************* 未読メールを自動で読みます。
;************* 必要ない方はコメントにしてください。
; switch
; case "未読分"
; #mailread = "yes"
; wait ">"
; case ">"
; ;
; endswitch
keyboard on
;************* NIFTY用のキー割り当てを設定します。
;************* 必要ない方はコメントにしてください。
call SetNifKeyAssign
;******************* 自動するかどうかを聞いてきます。
;******************* うっとおしい方はコメントにしてください。
;******************* 単に#junkau = "yes"にすると巡回します。
; chdir upload
; if( existfile( "MYFORUM.TXT" ) )
; restoredir
; getdate #date
; if( #date != %JunkaiDate )
; %JunkaiDate = #date
; question "自動巡回をしますか?"
; if( yes ) #junkai = "yes"
; endif
; endif
; restoredir
;************* 前回ログイン日付・時間をチェックします。
;************* もし日付・時間が違っていた場合は他人がIDを
;************* 盗用した可能性も有ります。
call CheckAccessDate #lastlog
#lastlog = ""
if( #mailread == "yes" ) call AutoMailRead
if( #junkai == "yes" ) call Junkai
;******************* NIFTY用のログの作成を開始します。
call BeginLog
WaitLogOff:
timeout 0
loopswitch
case "^M^J ご利用誠にありがとうございました。^M^J"
breakloop
case "のユーザーからのメッセージです-^M^J"
readbuffer 1, #line
timeout 3
wait "^M^J"
if( timeout ) goto WaitLogOff
millitimeout 500
getchar #ch
if( not timeout ) goto WaitLogOff
play "!"
timeout 0
##i = 2
beginloop
readbuffer ##i, #line
if( search( #line, "メッセージです" ) != "" )
#id = part( search( #line, "-" ), 2, 8 )
input #id + "に送り返すメッセージ", #message
if( cancel ) breakloop;
if( #message == "" ) breakloop;
send "SEND " + #id + " " + #message + "^M"
breakloop
endif
##i = ##i + 1
if( ##i > 10 )
breakloop
endif
endloop
endloop
##c = 0
timeout 10
loopswitch
case "^M^J"
##c = ##c + 1
if( ##c >= 10 ) goto WaitLogOff
case "--->"
goto WaitLogOff
case postmilliidle(500) "+", postmilliidle(500) "*"
hangup
case postidle(1) ">", postidle(1) "CCS(N)>"
goto WaitLogOff
case ""
hangup
case timeout
goto WaitLogOff
endloop
hangup
エラー:
afterhangup ErrorHangup
hangup
ErrorHangup:
message "エラーが発生したので電話を切りました。"
return
;************** ログを作成するサブルーチンです。
;************** 好きなように直して使ってください。
BeginLog:
if( %NifLogStyle == "" )
menu "ログの作成方法を指定してください。", \
"&1 NIFTY.LOGというファイルに作成する。500Kバイトごとにバックアップする。", \
"&2 NIFmmdd.LOGというファイルに作成する。mmは月、ddは日", \
"&3 NIFyymm.LOGというファイルに作成する。yyは年、mmは月"
if( result == -1 or result == 0 )
%NifLogStyle = 0
else
%NifLogStyle = result
endif
endif
if( value(%NifLogStyle) == 1 )
log "NIFTY.LOG", 500 ; サイズ制限500KBで作成します。
elseif( value(%NifLogStyle) == 2 )
getdate #date
log "NIF" + part( #date, 2, 4 ) + ".LOG"
else
getdate #date
log "NIF" + part( #date, 0, 4 ) + ".LOG"
endif
return
;***************************************
;**** パスワード変更処理 **********
;***************************************
ChangePassword:
if(%%NifPassword == "毎回入力する")
secretinput "現在のパスワードを入力して下さい。", %%NifPasswordNow
if(cancel)
%%NifPasswordNow = ""
message "中止します。"
return
endif
else
%%NifPasswordNow = %%NifPassword
endif
message "新しいパスワードを入力して下さい。(合計6~8文字)^M^Jアルファベット (最低1文字以上) と数字か記号 (最低1文字以上)^M^JただしIDと同一の文字列は不可。"
input "使用可能文字:^M^J A-Z a-z 0-9^M^J ! ^" # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~", %%NifPasswordNew
if(cancel)
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
return
else
question "新しいパスワードに変更してよろしいですか?"
if(no)
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
return
endif
endif
readbuffer 0,#line
if( #line != "現パスワードの入力" )
readbuffer 1,#line
if( #line != "現パスワードの入力" )
send "GO PASSWORD^M"
wait "^M^J:"
endif
endif
send %%NifPasswordNow + "^M"
loopswitch
case "^M^J◆パスワードが間違っています◆","^M^J◆パスワードの入力形式が誤っています◆"
question "現在のパスワードが間違っています。^M^Jもう一度入力しますか?"
if(yes)
input "現在のパスワードを入力して下さい。", %%NifPasswordNow
if(cancel)
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
send "^M"
return
endif
else
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
send "^M"
return
endif
send %%NifPasswordNow + "^M"
loopagain
case "^M^J新パスワードの入力^M^J:"
breakloop
endloop
send %%NifPasswordNew + "^M"
loopswitch
case "^M^J◆パスワードの入力形式が誤っています◆"
question "新しいパスワードの形式が間違っています。もう一度入力しますか?"
if(yes)
input "新しいパスワードを入力して下さい。", %%NifPasswordNew
if(cancel)
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
send "^M"
return
endif
else
%%NifPasswordNow = ""
%%NifPasswordNew = ""
message "中止します。"
send "^M"
return
endif
send %%NifPasswordNew + "^M"
case "^M^J新パスワードの再入力^M^J:"
send %%NifPasswordNew + "^M"
case "^M^Jパスワードは変更されました。"
message "パスワードは正常に変更されました。新しいパスワードは「" + %%NifPasswordNew + "」です。忘れないでください。"
breakloop
endloop
if(%%NifPassword != "")
question "変更したパスワードを秀Termに記憶させますか?^M^J記憶させない場合はアクセスの際に入力を求めます。"
if(yes)
%%NifPassword = %%NifPasswordNew
else
%%NifPassword = "毎回入力する"
endif
endif
%%NifPasswordNow = ""
%%NifPasswordNew = ""
return
AutoMailRead2:
call AutoMailRead
call AutoMailDelete
send "BYE^M"
return
;***************************************
;**** 未読メール処理 **********
;***************************************
AutoMailRead:
readbuffer 0,#line
if( #line != "MAIL>" )
readbuffer 1,#line
if( #line != "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)" )
send "MAIL^M"
wait "^M^J>", "^M^JMAIL>"
endif
endif
send "READ NEW^M"
wait "^M^J"
;******************** メール専用のログを作成します。
log "NIFMAIL.LOG", 500
loopswitch
case postmilliidle(200) "続き (改行で表示 E:終了)^M^J>" \
, postmilliidle(200) "続き (改行で次頁 S:次文書 E:終了)^M^J>"
send "^M"
case postmilliidle(200) "受信後 (1:削除 2:保存 3:返信 4:返信+削除 5:転送 6:転送+削除 E:終了)" \
+ "^M^J:", \
postmilliidle(200) "受信後 (1:削除 2:保存 *:返信 *:返信+削除 5:転送 6:転送+削除 E:終了)" \
+ "^M^J:"
send "2^M"
case postmilliidle(200) "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)" \
+ "^M^J>"
breakloop
case postmilliidle(200) "^M^Jaction:", postidle(2) "action:"
send "sav^M"
case postmilliidle(500) "^M^JMAIL>", postidle(2) "MAIL>"
breakloop
endloop
;***************** NIFのログに戻ります。
call BeginLog
return
;***************************************
;**** メール削除処理 **********
;***************************************
AutoMailDelete:
readbuffer 0,#line
if( #line != "MAIL>" )
readbuffer 1,#line
if( #line != "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)" )
send "MAIL^M"
wait "^M^J>", "^M^JMAIL>"
endif
endif
send "DEL 1-^M"
loopswitch
case "^M^J:"
readbuffer 2,#line
if( part( #line, 0, 1 ) == "*" )
send "1^M"
else
send "2^M"
endif
case postmilliidle(500) ">", postmilliidle(500) "MAIL>"
breakloop
endloop
return
;**************************
;*Download Name の自動拾得*
;**************************
; by 青い雷殿 (のを斉藤秀夫が自分風にしました)
AutoDNSelect:
##i = 0
#name = ""
while( #name == "" )
##i = ##i + 1
if( ##i > 500 )
message "ダウンロードデータ名が見つかりませんでした"
return
endif
readbuffer ##i,#buf
#name = search( #buf,"データ名:" )
endwhile
#name = part( #name, 10, 255 ) ; "データ名:"を取り除く
if( search( drop( #name, " " ), "." ) == "" )
; ".LZH"と、その前に空白が入っている場合の処理
#name = drop( #name, " " ) + drop( search( #name, "." ), " " )
else
#name = drop( #name, " " ) ; ファイル名の後ろを取り除く
endif
setchat #name
return
; ファイル名入力(アップロード用)
SendFileName:
chdir upload
inputfilename "ファイル名", #name
restoredir
if( enter )
send #name + "^M"
endif
return
;************ チャットモードにします
ChatMode:
keyassign f1, "F1", string, ""
keyassign f2, "F2", string, ""
keyassign f3, "F3", string, ""
keyassign f4, "F4", string, ""
keyassign f5, "F5", string, ""
keyassign f6, "F6", string, ""
keyassign f7, "F7", string, ""
call "CSC.SCR"
call SetNifKeyAssign
return
;**************** ファイルに入っているIDを全部送信します *******
; by 秀まるお
; 第1パラメタでメールのファイル名を指定でき、
; 第2パラメタでIDの入っているファイル名を指定できます。
; ファイルはアップロード用のディレクトリにないといけません。
; 秀Termの登録ユーザの方にメールを送るために作りました。
SendID:
if( #1 == "" )
input "メールのファイル名を指定してください。", #1
if( cancel ) return
endif
if( #2 == "" )
input "ユーザIDの入っているファイル名を指定してください。", #2
if( cancel ) return
endif
input "題名を指定してください。", #title
if( cancel ) return
readbuffer 0, #line
if( #line == "FORUM>" )
#smail = "yes"
endif
if( not #smail )
send "MAIL^M"
timeout 20
switch
case "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)^M^J>"
;
case timeout, "番号"
message "電子メールに行けませんでした。"
return
endswitch
timeout 0
endif
chdir upload
openfile #2
restoredir
if( no )
message "ユーザIDファイルのオープンに失敗しました。"
return
endif
##count = 0
call GetID #2
if( #return == "" )
message #2 + "にはユーザIDがありません。"
closefile #2
return
endif
SendID_ReSend:
if( #smail )
send "SMAIL^M"
else
send "2^M"
endif
wait "本文(300 行まで 終了は行頭で/E)^M^J"
##cID = 1
##count = ##count + 1
send "TO:" + #return + "^M"
while( ##cID < 10 )
call GetID #2
if( #return == "" ) breakloop;
##count = ##count + 1
send "TO:" + #return + "^M"
##cID = ##cID + 1;
endwhile
upload #1, none
if( no )
closefile #2
message "中止します"
return
endif
loopswitch
case "修正 (1:修正する 2:しない)^M^J:"
send "2^M"
case "題名 (漢字で20文字まで)^M^J:"
send #title + "^M"
wait "^M^J:" ; 確認
send "1^M"
case "宛先 (IDか同報グループ名 改行で終了)^M^J:" \
, "宛先 (IDか同報グループ名又は FAX番号 改行で終了)^M^J:"
breakloop
case "-送信完了-^M^J"
; 高速化
; if( #smail )
; wait "FORUM>"
; else
; wait "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)^M^J>"
; endif
call GetID #2
if( #return != "" )
goto SendID_ReSend
else
closefile #2
message ##count + "人にメールを送りました。"
return;
endif
endloop
beginloop
##count = ##count + 1
send #return + "^M"
wait "^M^J:" ; 確認
send "1^M"
switch
case "宛先 (IDか同報グループ名 改行で終了)^M^J:" \
, "宛先 (IDか同報グループ名又は FAX番号 改行で終了)^M^J:"
call GetID #2
if( #return == "" )
send "^M"
wait "送信 (1:送信する 2:しない)^M^J:"
send "1^M"
breakloop
endif
case "送信 (1:送信する 2:しない)^M^J:"
send "1^M"
if( #smail )
wait "FORUM>"
else
wait "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)^M^J>"
endif
call GetID #2
if( #return != "" )
goto SendID_ReSend
else
breakloop
endif
case "-送信完了-"
if( #smail )
wait "FORUM>"
else
wait "電子メール(1:受信 2:送信 3:送信簿 0:その他 E:終了)^M^J>"
endif
call GetID #2
if( #return != "" )
goto SendID_ReSend
else
breakloop
endif
endswitch
endloop
closefile #2
message ##count + "人にメールを送りました。"
return
; ファイルからユーザIDを取り出す
; call GetID ファイル名 で呼び出すこと。
; ファイル名で指定するファイルはあらかじめopenfileされてないといけない
;
GetID:
beginloop
readfile #1, #line
if( no ) return "" ; ファイルの最後まで行ったら""を返す
if( #line == "" ) goto GetID
##len = length(#line) - 8
if( search( #line, "PCV>" ) != "" )
return part( search( #line, "PCV>" ), 4, 8 );
endif
if( search( #line, "INET:" ) != "" )
#line = search( #line, "INET:" );
##i = 5
beginloop
#a = part( #line, ##i, 1 )
if( #a <= " " or #a >= "^080" or #a == "," ) breakloop
##i = ##i + 1
endloop
return part( #line, 0, ##i );
endif
##i = 0
while( ##i <= ##len )
#id = part( #line, ##i, 1 )
if( #id < "A" or #id > "Z" ) goto GetIDContinue
#id = part( #line, ##i + 1, 1 )
if( #id < "A" or #id > "Z" ) goto GetIDContinue
#id = part( #line, ##i + 2, 1 )
if( #id < "A" or #id > "Z" ) goto GetIDContinue
#id = part( #line, ##i + 3, 1 )
if( #id < "0" or #id > "9" ) goto GetIDContinue
#id = part( #line, ##i + 4, 1 )
if( #id < "0" or #id > "9" ) goto GetIDContinue
#id = part( #line, ##i + 5, 1 )
if( #id < "0" or #id > "9" ) goto GetIDContinue
#id = part( #line, ##i + 6, 1 )
if( #id < "0" or #id > "9" ) goto GetIDContinue
#id = part( #line, ##i + 7, 1 )
if( #id < "0" or #id > "9" ) goto GetIDContinue
return part( #line, ##i, 8 )
GetIDContinue:
##i = ##i + 1
endwhile
endloop
return
CheckAccessDate:
if(%%LastLogDate == "")
writebuffer2 "^M^JNIF.SCR よりのお知らせ:前回アクセスの日付情報は登録されていません。^M^J"
else
#a = part(#1, 8, 255)
##len = length(#a) - 1
if(part(#a, ##len, 1) == "^M")
#a = part(#a, 0, ##len)
endif
if(#a == %%LastLogDate)
writebuffer2 "^M^JNIF.SCR よりのお知らせ:前回アクセスの日付情報チェックはOKでした。^M^J"
else
writebuffer2 "^M^JNIF.SCR よりのお知らせ:前回LOG OUT時間が記録内容と違っています。このスクリプトを使わずにアクセスした覚えが無い場合,パスワード漏出など最悪の事態を想定して,パスワードを変更することをお薦めします。^M^J"
endif
endif
%%LastLogDate = ""
return
KeepAccessDate:
beginloop
readbuffer ##i, #a
if(search(#a, "LOG OUT --- ") != "")
breakloop
endif
##i = ##i + 1
if(##i > 20)
#a = ""
breakloop
endif
endloop
if(#a != "")
%%LastLogDate = part(#a, 23, 255)
endif
return
;************ 各種キー割当て処理
SetNifKeyAssign:
keyassign f1, "未読メール", script, AutoMailRead
keyassign f2, "巡回", script, Junkai
keyassign f3, "メール削除", script, AutoMailDelete
keyassign f4, "ファイル名探し", script, AutoDNSelect
keyassign f5, "ファイル名入力", script, SendFileName
keyassign f6, "UST2", string, "UST2^M"
keyassign f7, "ID送信", script, SendID
keyassign f8, "チャット", script, ChatMode
keyassign f9, "パスワード変更", script, ChangePassword
keyassign f10, "セットアップ", script, ScriptSetup2
keyassign f11, "メール読んで落ち", script, AutoMailRead2
return
;**************** 後始末処理です *******************
Atoshimatsu:
call KeepAccessDate
savebuffer
; #hour = part( #1, 0, 2 )
; #minute = part( #1, 2, 2 )
; #second = part( #1, 4, 2 )
; #mes = "通話時間は"
; if( #hour != "00" )
; #mes = #mes + #hour + "時間"
; endif
; #mes = #mes + #minute + "分" + #second + "秒でした"
; message #mes
; closehideterm ・・・ 秀Termを自動終了させる場合はここにclosehideterm
; コマンドを入れましょう。
return
;***************************************************************************
; フォーラムの会議室を自動で読むスクリプトのサブルーチンです。
; とある方からの要望でつくりました。
;
; 機能は、
; - 読みたい会議室の名前を複数指定できる
; - 各フォーラムごと、または各会議室ごとに別々のログが取れる
; - フォーラム内の特定の会議室だけを指定できる
; - それらの指定はアップロード用の所の"MYFORUM.TXT"に入れておけばよい
;
; "MYFORUM.TXT"の作り方
; - MYFORUM.TXTは、アップロード用のディレクトリに作成してください。
; メール編集で編集できます。
; - 1行に、「フォーラム名」、「ログのファイル名」、「会議室番号」を
; 指定してください。指定の方法は、以下のとうりです。
;
; フォーラム名, ログのファイル名, 番号, 番号,・・・
;
; ログのファイル名または(会議室の)番号は省略できます。
; ログのファイル名を省略すると、ログは各会議室ごとに、フォーラム名
; と会議室番号をくっつけた名前で作成されます。拡張子は".LOG"になりま
; す。ファイル名が8+3文字を越えると適当に縮められます。
; 番号を一つも指定しないでおくと、全ての会議室を読みます。
; 例:
; FPSY
; FFMPRO , FFMPRO.LOG
; FNEC98 , FNEC98.LOG , 1,2,3,4,5
; FIBMPRO, , 1,3,4,5
;
; 同じフォーラムの各会議室ごとにログの名前を指定したい場合は、次の
; ように指定してください。
;
; FNEC98, FNECDL.LOG, 1
; FNEC98, FNEC.LOG, 9
; FNEC98, FNECWS.LOG, 12
;
; 普通はMREコマンドを使って会議室を見ていきますが、DOW NEW コマンド
; を使ってBPLUSで高速にダウンロードすることもできます。
; BPLUSでダウンロードするには、最後にコンマとBPLUSを付けてください。
; 例:
; FMEC98, BPLUS
; FIBMPRO, FIBMPRO.LOG, BPLUS
; FNEC98, FNECWS.LOG, 12, BPLUS
;
; フォーラムのリストの最後にBYEを入れておくと最後に電話を切ります。
; 例:
; FNEC98
; FC
; BYE
;
Junkai:
#file = "MYFORUM.TXT"
chdir upload
openfile #file
restoredir
if( no )
message "MYFORUM.TXTが見つかりません。"
return
endif
beginloop
JunkaiLoop:
readfile #file, #line
if( no ) breakloop
; #lineの中の空白を除去する
##i = 0
beginloop
#p = part( #line, ##i, 1 )
if( #p == "" ) breakloop
if( #p <= " " )
#line = part( #line, 0, ##i ) + part( #line, ##i + 1, 255 )
else
##i = ##i + 1
endif
endloop
##i = 0
beginloop
#p = part( #line, ##i, 1 )
if( #p == "" or #p == "," ) breakloop
##i = ##i + 1
endloop
#forum = part( #line, 0, ##i )
if( #forum == "" ) goto JunkaiLoop
if( #forum == "BYE" )
send "BYE^M"
goto WaitLogOff
endif
#line = part( #line, ##i, 255 )
if( part( #line, 0, 1 ) == "," )
#line = part( #line, 1, 255 )
endif
if( #line == "" or part( #line, 0, 1 ) == "," )
#log = ""
#line = part( #line, 1, 255 )
else
##i = 0
beginloop
#p = part( #line, ##i, 1 )
if( #p == "" or #p == "," ) breakloop
##i = ##i + 1
endloop
#log = part( #line, 0, ##i )
#line = part( #line, ##i, 255 )
endif
#bplus = "no"
if( toupper(#log) == "BPLUS" )
#log = ""
#bplus = "yes"
endif
if( part( #line, 0, 1 ) == "," )
#line = part( #line, 1, 255 )
endif
#meslist = ""
#line = toupper( #line )
while( #line != "" )
if( part( #line, 0, 5 ) == "BPLUS" )
#bplus = "yes"
breakloop
endif
beginloop
#p = part( #line, 0, 1 )
if( #p < "0" or #p > "9" ) breakloop
#meslist = #meslist + #p
#line = part( #line, 1, 255 )
endloop
if( #line != "" )
#meslist = #meslist + ","
if( part( #line, 0, 1 ) != "," )
message "MYFORUM.TXTの会議室番号がおかしいです。^M" \
+ "フォーラム名:" + #forum
closefile #file
return
endif
#line = part( #line, 1, 255 )
endif
endwhile
if( #forum != #prevforum )
call GoForumMes #forum
#yetlist = #return
endif
if( #meslist == "" )
#meslist = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30"
endif
call Intersect #yetlist, #meslist
#list = #return
if( #bplus == "yes" )
call DownloadMes #list, #log, #forum
else
call ReadMes #list, #log, #forum
endif
#prevforum = #forum
endloop
closefile #file
call BeginLog
return
GoForumMes:
timeout 60
send "GO "+#1+"^M"
loopswitch
case "続き (改行で表示 E:終了)^M^J>", \
"more>"
send "^M"
case "^M^JFORUM>", postidle(1) "^M^J>"
breakloop
case "◆番号又はコマンドを入力して下さい◆", timeout
message #1 + "に行けませんでした"
return
endloop
send "MES^M"
wait "^M^J番号 発言 (未読) 最新 会議室名^M^J"
#list = ""
beginloop
getchar #a
if( #a == ">" )
breakloop
elseif( #a == "m" ) ; "more>"
wait ">"
send "^M";
wait "^M^J"
loopagain;
endif
getline #line
#line = #a + #line
if( part( #line, 0, 4 ) == "番号" )
wait ">"
send "^M"
wait "^M^J"
loopagain;
endif
if( part( #line, 13, 3 ) != " 0" )
if( part( #line, 0, 1 ) == " " )
#list = #list + part( #line, 1, 1 ) + ","
else
#list = #list + part( #line, 0, 2 ) + ","
endif
endif
endloop
return #list
; #1と#2の共通部分を計算します
Intersect:
#1 = "," + #1 + ","
while( #2 != "" )
#num = drop( #2, "," )
#2 = part( search( #2, "," ), 1, 255 )
if( search( #1, "," + #num + "," ) != "" )
#result = #result + #num + ","
endif
endwhile
return #result
; 指定されたフォーラムの特定の会議室の内容を読む。
; パラメタ1: 会議室のリスト
; パラメタ2: ログの名前(例:FFMPRO.LOG)
; 指定なしの場合はログは取られない。
; パラメタ3: 会議室の番号をコンマで区切る(例:"1,2,3")
; パラメタ3が指定されない場合は全ての会議室となる
;
; 例: ReadMes "1,2,3", "FFMPRO.LOG", "FFMPRO"
; ReadMes "1,2,3,4", "", "FIBMPRO"
; ReadMes "1,10"
; ReadMes "1,10", "FFMPRO.LOG"
;
ReadMes:
if( #1 == "" ) return
#3 = part( #3, 0, 6 )
readbuffer 0, #line0
readbuffer 1, #line1
if( #line0 == "CCS(N)>" \
or ( #line0 == ">" \
and #line1 == "電子会議 (1:発言 改行のみ: 読む) 通常モード" ) )
send "MES^M"
wait postidle(1) ">"
endif
if( #2 != "" ) log #2, 500
while( #1 != "" )
#room = drop( #1, "," )
#1 = part( search( #1, "," ), 1, 255 )
if( #2 == "" )
log #3 + #room + ".LOG", 500
endif
send "MRE ROOM:" + #room + "^M"
wait postidle(1) "^M^J>"
endwhile
log
return
DownloadMes:
if( #1 == "" ) return
#3 = part( #3, 0, 6 )
openreg "CURRENTUSER", "Software\Hidemaruo\Hideterm95\Config"
getreg "LogPath", #logpath
if( part( #logpath, length(#logpath) - 1, 1 ) != "\" )
#logpath = #logpath + "\"
endif
port autobplus = off
while( #1 != "" )
#room = drop( #1, "," )
#1 = part( search( #1, "," ), 1, 255 )
send "MES " + #room + "^M"
wait "^M^J>", "^M^JCCS(N)>"
send "DOW NEW PROT:BPL^M"
switch
case "^M^J:"
; 続き
case "^M^JCCS(N)>", "^M^J>"
; ブレーク信号が送信された
return
endswitch
if( #2 == "" )
#filename = #logpath + #3 + #room + ".LOG"
else
#filename = #logpath + #2
endif
send #filename + "^M"
wait "^E"
download #filename, bplus, append
wait "^M^J>", "^M^JCCS(N)>"
endwhile
port autobplus = on
return
ScriptSetup2:
message "NIF.SCRのセットアップは、どことも通信してない状態で「スクリプト・スクリプト実行...」でNIF.SCRを実行することでも行う事ができます。"
ScriptSetup:
menu "NIF.SCRセットアップメニュー(Escで終了)", 0, "ユーザIDの変更", "パスワードの変更", "ログ作成方法の変更"
switch result
case 0
goto ScriptSetup
case 1
input "新しいユーザIDを入力して下さい。", %NifID
if( cancel ) goto ScriptSetup
input "新しいパスワードを入力して下さい。ログイン毎に入力したい場合は何も入力せずにOKして下さい。", %%NifPassword
if( %%NifPassword == "" )
%%NifPassword = "毎回入力する"
endif
goto ScriptSetup
case 2
input "新しいパスワードを入力して下さい。ログイン毎に入力したい場合は何も入力せずにOKして下さい。", %%NifPassword
if( %%NifPassword == "" )
%%NifPassword = "毎回入力する"
endif
goto ScriptSetup
case 3
menu "ログの作成方法を指定してください。", \
"&1 NIFTY.LOGというファイルに作成する。500Kバイトごとにバックアップする。", \
"&2 NIFmmdd.LOGというファイルに作成する。mmは月、ddは日", \
"&3 NIFyymm.LOGというファイルに作成する。yyは年、mmは月"
if( result == -1 or result == 0 )
; nothing to do
else
%NifLogStyle = result
endif
goto ScriptSetup
endswitch
exit