#=========================================================================
#WTMR_001.MAC V10.5
#=========================================================================
DIR00: #発言ルーチン。
PRINTCR("□書き込み指定ファイル捜査中です□")
GETMACROD(I$) #I$=D:\WT\MACRO\
CAT(I$,"_PAD_.PAD") #I$=D:\WT\MACRO\_PAD_.PAD
IFFILEY(I$) #I$=D:\WT\MACRO\_PAD_.PADがある場合。
DELFILE(I$) #D:\WT\MACRO\_PAD_.PADを削除。
GETTXUPD(D$) #D$=G:\UP_TXT\
CAT(G$,D$,&) #末尾\カットのためのダミー&追加。G$=G:\WT\UP_TXT\&。
CHANGE(G$,"\&"," >") #G$=G:\UP_TXT >
CAT(E$,"DIR ",G$) #E$=DIR G:\WT\UP_TXT >
CAT(E$,D$) #E$=DIR G:\WT\UP_TXT >G:\WT\UP_TXT\
CAT(E$,"DIR.TXT") #E$=DIR G:\WT\UP_TXT >G:\WT\UP_TXT\DIR.TXT
CHILD(E$) #E$を実行。DIR.TXT作成。既にあれば,上書き。
PICKWORD(F$,E$,">") #E$を>で区切る。E$=G:\WT\UP_TXT\DIR.TXT
DELAYM(1000) #同期調整。
G$=6 #読み込み行初期値-1
DIR:
WOPEN("_PAD_.PAD") #MACROディレクトリに,送信指定ファイル作成。
WCLOSE #いったん閉じる。WAPPENDのため。
FOPEN(E$) #DIR.TXTオープン。
DIR1:
A$=""
ADD(G$,G$,"1") #読み込み行+1
CAT(A$,G$,"") #A$=G$
FILER(E$,A$) #DIR.TXTからA行目読み込み。A$に格納。
JUMPSRCHY(A$,"ファイ",NEX) #ファイル末。NEXへ。
JUMPSRCHY(A$,"
",DIR1) #ディレクトリ行。DIR1へ戻る。
JUMPSRCHN(A$,"RES",DIR1) #拡張子がRESでないファイル行。DIR1へ戻る。
JUMPSRCHY(A$,"は",DIR1) #説明行。DIR1へ戻る。
FCLOSE #DIR.TXT閉じる。
WAPPEND("_PAD_.PAD") #追加書き込みファイルオープン。
PICKWORD(V$,A$," ") #A$= EXE 8,234 95-01-01 1:00 など。空白で区切。
JUMPSRCHN(A$,"RES",DIR1) #A$にRESがなければ,DIR1へ。あれば下の処理へ。
WRITE(V$) #_PAD_.PADに,V$=12_45 などを書き込み。
WCLOSE #_PAD_.PAD閉じる。
FOPEN(E$) #DIR.TXTオープン。
VCLEAR("AV") #A$,V$初期化。
GOTO(DIR1) #DIR1へ戻る。
NEX: #DIR.TXT読み込み終了後処理。
FCLOSE #DIR.TXT閉じる。
DELFILE(E$) #DIR.TXT削除。E$不要。
FOPEN("_PAD_.PAD") #_PAD_.PAD読み込みオープン。
UPT: #_PAD_.PAD指定内容による分岐ルーチン。
FREAD(A$,UPTEND) #A$に_PAD_.PADから一行読み込み。EOFならば,終了処理。
GETTXUPD(D$) #D$=G:\UP_TXT\
CAT(D$,A$) #D$=G:\WT\UP_TXT\12_505
CAT(D$,".RES") #D$=G:\WT\UP_TXT\12_505.RES
ROPEN(D$) #アップ文書ファイルオープン。
RREAD(K$) #K$=TITLE(アップ文書ファイル一行目)
LEFT(K$,"30") #K$=TITLE,30文字以上をカット。
JUMPSRCHY(A$,"MAR0",ML) #MAIL指定(MAR0****.RES)の場合,MLへ分岐。
#-------------------------------------------------------------------------
BS: #会議室発言の場合。
H$="_" #区切り文字。
VCLEAR("FS")
PICKWORD(J$,A$,H$) #J$=12,A$=505 or W など。
CAT(S$,J$,"") #S$=J$=12
CAT(S$,")") #現在会議室番号取得ルーチン。
CAT(F$,"D",S$) #F$=D12)
JUMPSRCHY(Z$,F$,BBSWW) #Z$は,プロンプトの行を格納している。居場所の確認。
VCLEAR("FHLSZ")
SEND(J$) #J$=12(会議室番号)送信。
SEND("\R")
CALL(LOOP0) #PROMPT待ち。
GETCRTS(H$,"2") #指定ミス等確認。ミスの場合は,RETRYへ分岐。
JUMPSRCHY(H$,"◆",RETRY)
BBSWW: #発言が,レスか,オリジナルかの分岐。
JUMPE(A$,"W",BS_0) #J$=Wの場合(オリジナル発言),BS_0へ。
CAT(L$,"RES ",A$) #L$=RES 505
VSWAP(L$,A$) #L$とA$を交換。A$=RES 505
BS_0:
SEND(A$) #レス先番号 or W 送信。
SEND("\R")
CALL(LOOP0)
GETCRTS(H$,"2") #指定ミス等確認。ミスの場合は,RETRYへ分岐。
JUMPSRCHY(H$,"◆",RETRY)
CONVERT(OFF) #制御文字非変換。
SEND(K$) #TITLE送信。
CONVERT(ON)
SEND("\R")
CALL(LOOP0)
GETCRTS(H$,"1") #TITLE入力ミスの確認。
T$="BBSW1" #この場合は,TITMIS0で使用する居場所フラグ。
JUMPSRCHN(H$,"確認",TITMIS0)
BBSW1:
SEND("\R") #TITLE確認。
T$="BBS0" #この場合は,EOFで使用する居場所フラグ。
CALL(LOOP0)
GOTO(SEND) #汎用送信ループへ。
BBS0: #/Eがない場合,/E送信後処理。EOFから。
CALL(LOOP0)
SEND("\R") #修正確認。
CALL(LOOP0)
SEND("\R") #登録確認。
BBS0_: #登録確認後。EOF_から。会議室書き込み最終処理。
RCLOSE #送信済ファイル閉じる。
CALL(LOOP0)
V$="namv -a " #NAMV.EXEを使用。
CAT(V$,D$) #V$=namv -a G:\WT\UP_TXT\12_505.RES
Q$=" $(TxtUpD)DONE\" #Q$はMAILルーチンでも使用。
CAT(V$,Q$)
CHILD(V$) #送信済ファイル移動。
VCLEAR("AJL")
GOTO(DAT_) #CHAT判断ルーチン,後_PAD_.RAD読み込み分岐へ。
#=========================================================================
ML: #A$=MAR0****。MAIL先ID。
JUMPSRCHY(Z$,"MAIL",MAIL1) #Z$はプロンプト行を格納している。MAIL MODEか否か確認。
Z$="" #Z$初期化。
SEND("M\R") #MAIL MODEへ。
CALL(LOOP0)
MAIL1:
SEND("W\R") #書き込み送信。
CALL(LOOP0)
CONVERT(OFF)
SEND(K$) #TITLE送信。TITLEはUPTでカット済。
CONVERT(ON)
SEND("\R")
CALL(LOOP0)
GETCRTS(H$,"1") #TITLE確認。ミスがあれば,TITMIS0へ。
T$="MAIL01" #TITMIS0で使用する居場所フラグ。
JUMPSRCHN(H$,"確認",TITMIS0)
MAIL01:
SEND("\R") #TITLE修正確認。
T$="MAIL0" #NEXT_で使用する居場所フラグ。
CALL(LOOP0)
GOTO(SEND) #汎用送信ループへ。
MAIL0:
CALL(LOOP0) #/E送信後。
SEND("\R") #修正確認。
MAIL0_: #修正確認後,から。
CALL(LOOP0)
SEND(A$) #A$は送信先ID,UPTで設定。宛先送信。
SEND("\R")
U$="MAIL000" #IDMISの場合の居場所フラグ。
STIMEOUT(2)
SWITCH
CASE("◆") #エラーメッセージの有無確認。
GOTO(IDMIS)
END
CALL(LOOP0)
SEND("\R") #宛先登録確認。
MAIL000: #送信済ファイル移動処理。MAIL送信最終処理。
CALL(LOOP0)
RCLOSE #送信済ファイル閉じる。
V$="namv -a "
Q$=" $(TxtUpD)DONE\"
CAT(V$,D$) #V$=namv -a G:\WT\UP_TXT\MAR*****.RES
CAT(V$,Q$)
CHILD(V$) #送信済ファイル移動。
VCLEAR("LJF") #J$,L$は会議室番号,レス先番号等で使用。
GOTO(DAT_) #CHAT判断ルーチン,後_PAD_.PAD読み込み分岐へ。
RETRY:
PRINTCR("□この会議室には書き込めません。指定ファイルをリネームします□")
RCLOSE
A$=""
CAT(A$,"REN ",D$) #A$=REN G:\WT\UP_TXT\12_505.RES
CAT(A$," *.ERR") #A$=REN G:\WT\UP_TXT\12_505.RES *.ERR
CHILD(A$) #書き込みエラーファイルの拡張子をERRにリネーム。
DELAYM(1500) #同期調整。
VCLEAR("ALJF") #J$,L$は会議室番号,レス先番号等で使用。
GOTO(DAT_)
#=========================================================================
SEND: #汎用文書送信用ルーチン。EOFとセット。
RREAD(F$,EOF) #発言ファイル読込。続きがなければ終了処理へ。
JUMPE(F$,"/E",NEXT_) #/Eがある場合,NEXT_へ分岐。
CONVERT(OFF)
SEND(F$) #発言ファイル内容一行送信。
CONVERT(ON)
SEND("\R")
GOTO(SEND) #SENDへ戻る。
EOF: #アップ文書終了処理。
SEND("/E\R") #/Eがないので,/E送信。
GOTO(T$) #指定されたT$のラベルへ。
#=========================================================================
TITMIS0: #会議室,メール,共用タイトルミス処理ルーチン。
SEND("Title つけ忘れです m(_._)m\R")
WAIT(":")
GOTO(T$) #T$は居場所フラグ。
#=========================================================================
DAT_: #CHAT判断ルーチン。
VSWITCH(R$) #LOOP0でR$を設定。
CASE("C") #フラグがCの場合。
CALL(CHAT) #CHATへ。
VCLEAR("R") #R$を初期化。
GOTO(UPT) #_PAD_.PADファイル指定読み込みルーチンへ。
ELSE #フラグがCでない場合。
GOTO(UPT) #_PAD_.PAD読み込み分岐へ。
END
#=========================================================================
UPTEND: #UPTから,_PAD_.PADのEOFを受けて,終了処理。
FCLOSE #_PAD_.PADを閉じる。
DELFILE(I$) #_PAD_.PADを削除。
CAT(X$,"$AAA") #X$は,元マクロ名。ラヴェルAAAへ復帰。
CHAIN(X$) #元マクロへ。
#=========================================================================
NEXT_: #マルチポスト指定ルーチン。SENDから,/Eがある場合。
SEND(F$) #F$=/E,/E送信。
SEND("\R")
CALL(LOOP0)
SEND("\R") #修正確認。
JUMPSRCHY(T$,"MAIL",MLO) #MAIL送信の場合,宛先送信処理,後NEXT__へ。
CALL(LOOP0)
SEND("\R") #BBS登録確認。
NEXT__: #/Eの後の続きの判断分岐。
RREAD(F$,EOF_) #ファイル末ならば終了処理へ。続きがあれば,書き込み処理。
CALL(LOOP0)
SEND("W\R") #継続書き込みコマンド送信。
LEFT(F$,"30") #TITEL読込。長さ調整。
CALL(LOOP0)
CONVERT("OFF")
SEND(F$) #TITLE送信。
CONVERT("ON")
SEND("\R")
CALL(LOOP0)
SEND("\R") #TITLE確認。
GOTO(SEND) #汎用送信ループへ戻る。
EOF_: #登録確認後の終了処理。
JUMPSRCHY(T$,"MAIL",MAIL000)
#MAILの場合。送信済ファイル移動処理へ。
GOTO(BBS0_) #会議室の場合。送信済ファイル移動処理へ。
MLO: #NEXT_から,宛先送信処理。
CALL(LOOP0)
SEND(A$) #宛先送信。
SEND("\R")
U$="NEXT__" #IDMISの場合の移動先フラグ。
STIMEOUT(2)
SWITCH
CASE("◆") #エラーメッセージの有無確認。
GOTO(IDMIS)
END
CALL(LOOP0)
SEND("\R") #宛先登録確認。
GOTO(NEXT__) #続き存否確認処理へ。
IDMIS: #居場所フラグにはU$を使用。
CALL(LOOP0)
PRINTCR("")
PRINTCR("□送信先ID or ハンドル名にミスがありましたので,貴方宛に送信します□")
SEND(W$) #W$=USER ID or ハンドル名。
SEND("\R")
CALL(LOOP0)
SEND("\R") #宛先登録確認。
GOTO(U$) #U$は居場所フラグ。指定先へ。
#=========================================================================
DO: #コマンド直接指定の場合。
CAT(L$,"$DAT_") #L$は戻り先マクロ。ラヴェルDAT_へ復帰。
JUMPE(D$,"",ERR) #コマンド指定がない場合。
SEND(D$) #指定コマンド送信。
SEND("\R")
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
#=========================================================================
DL_: #DLリスト取得指定の場合。
CAT(L$,"$DAT_") #L$は戻り先マクロ。
JUMPE(A$,"",ERR)
SEND("DL\R") #DLへ。
STIMEOUT(2)
SWITCH
CASE("◆")
GOTO(ERR3)
END
CALL(LOOP0)
SEND(A$) #DL番号送信。
SEND("\R")
STIMEOUT(2)
SWITCH
CASE("◆")
GOTO(ERR2)
END
CALL(LOOP0)
SEND("1\R") #リスト取得選択。
SWI: #DLプロンプト判断ルーチン。
SWITCH
CASE("):")
WAIT("",1,SWI)
GOTO(TSE)
CASE("\010:")
WAIT("",1,SWI)
GOTO(ESE)
ELSE
GOTO(SWI)
END
ESE: #リストが数頁ある場合。
SEND("E\R") #表示終了送信。
CALL(LOOP0)
SEND("T\R") #DLを抜ける。
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
TSE: #リストが1頁分しかない場合。
SEND("T\R") #DLを抜ける。
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
#=========================================================================
DLN: #最新DLリスト取得指定の場合。
CAT(L$,"$DAT_") #L$は戻り先マクロ。
SEND("DL\R") #DLへ。
STIMEOUT(2)
SWITCH
CASE("◆")
GOTO(ERR3)
END
CALL(LOOP0)
SEND("N\R") #最新リスト取得コマンド送信。
CALL(LOOP0)
SEND("T\R") #DLを抜ける。
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
#=========================================================================
KES: #自発言削除指定の場合。
U$=""
CAT(L$,"$DAT_") #L$は戻り先マクロ。
JUMPE(A$,"",ERR) #会議室等の指定がない場合。
PICKWORD(U$,A$,E$) #/で区切る。U$は会議室番号。
JUMPE(U$,"",ERR) #会議室指定がない場合(//となっている)。
JUMPE(A$,"",ERR) #発言番号指定がない場合。
JUMPE(U$,"1",ERR) #1番会議室を指定した場合。
SEND(U$) #指定会議室への移動送信。
SEND("\R")
STIMEOUT(2)
SWITCH
CASE("◆") #会議室に入れない場合。
GOTO(ERR3)
END
CALL(LOOP0)
SEND("DEL ") #発言削除コマンド送信。
SEND(A$) #削除発言番号送信。
SEND("\R")
STIMEOUT(2)
SWITCH
CASE("◆") #発言削除が不可能な場合。
GOTO(ERR3)
END
CALL(LOOP0)
SEND("1\R") #削除の確認。
VCLEAR("UH")
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
#=========================================================================
ERR: #汎用エラー処理ルーチン。
CHAIN(L$) #元マクロへ。
ERR2: #DLモードに入った後,指定番号DLに入れない場合。
CALL(LOOP0)
SEND("T\R") #メインプロンプトへ復帰。
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
ERR3: #LOOP0の前の場合。
CALL(LOOP0)
CHAIN(L$) #元マクロへ。
#=========================================================================
CHAT: #CHATルーチン。
WAIT("",1,CHAT) #同期調整。
SEND(C$) #通常CHAT入りコマンド送信。
CALL(CHAT0)
RETURN #CHAT判断ルーチンへ復帰。
CHAT0: #CHATから。
WAIT("",1,CHAT0) #同期調整。
VCLEAR("A") #入力状況把握のためのクリア。
INPUT(A$,"チャットは楽しいね。",705.120)
#A$にCHAT発言を格納。ウィンドウ表示。
IFE(A$,"") #入力できない状態ならば。
CALL(CHATERR)
CONVERT(OFF)
SEND(A$) #CHAT発言送信。
CONVERT(ON)
SEND("\R")
IFE(A$,"/E") #CHAT終了サインならば。
RETURN #CHATへ復帰。
GOTO(CHAT0)
CHATERR:
SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R")
CHATERR0: #CHATERR処理の続き。
WAIT("",1,CHATERR0)
A$="/E" #終了サインを格納。
RETURN #CHAT0,A$送信直前へ復帰。
#=========================================================================
LOOP0:
SWITCH
CASE("T{^。^`}ヨホホホ。") #CHATメッセージ受信。
GETCRTS(Z$,"0") #プロンプト部分を取得。Z$は,居場所フラグ。
R$="C" #R$は,CHAT判断フラグ。
RETURN
CASE("+\013\010") #TITLE書き込み桁表示。
WAIT("",1,LOOP0)
RETURN
CASE("0\013\010") #発言書き込み桁表示。
WAIT("",1,LOOP0)
RETURN
CASE("い\013\010:")
WAIT(" ",1,LOOP0)
RETURN
CASE("\010:")
WAIT("",1,LOOP0)
RETURN
CASE("\010:")
WAIT("",1,LOOP0)
RETURN
CASE("名】:")
WAIT("",1,LOOP0)
RETURN
CASE(">")
GETCRTS(Z$,"0")
WAIT("",1,LOOP0)
RETURN
CASE("):")
WAIT("",1,LOOP0)
RETURN
CASE(":")
WAIT("",1,LOOP0)
RETURN
END
RETURN
#=========================================================================