#========================================================================= #WTERM マクロプログラム 本体附属 WTMR_001.MAC v10.8 (f) #========================================================================= 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$,"MAR",ML) #MAIL指定(MAR*****.RES)の場合,MLへ分岐。 #------------------------------------------------------------------------- BS: #会議室発言の場合。 H$="_" #区切り文字。 VCLEAR("FS") B$=J$ #B$=J$(前発言指定先) J$="" PICKWORD(J$,A$,H$) #J$=12,A$=505 or W など。 JUMPE(B$,J$,BBSWW) #前発言先会議室との比較。同じならば,入力パス。 VCLEAR("FHL") SEND(J$) #J$=12(会議室番号)送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(RETRY) CASE("(BOAD") WAIT(">") END BBSWW: #発言が,レスか,オリジナルかの分岐。 JUMPE(A$,"W",BS_0) #A$=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") STIMEOUT(4) SWITCH CASE("◆") GOTO(RETRY) CASE("題名:全角16文字まで") WAIT("10----+---15-+") END CONVERT(OFF) #制御文字非変換。 SEND(K$) #TITLE送信。 CONVERT(ON) SEND("\R") T$="BBSW1" #この場合は,TITMIS0で使用する居場所フラグ。 STIMEOUT(4) SWITCH CASE("題名:全角16文字まで") GOTO(TITMIS0) CASE("確認") WAIT("(1:[OK] 2:NG)") END CALL(LOOP0) 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_から。会議室書き込み最終処理。 WAIT("−書き込んぢゃいました−") CALL(LOOP0) RCLOSE #送信ファイルを閉じる。 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("AL") GOTO(DAT_) #CHAT判断ルーチン,後_PAD_.RAD読み込み分岐へ。 #========================================================================= ML: #A$=MAR*****。MAIL先ID。 B$="MAIL" JUMPE(B$,J$,MAIL1) SEND("M\R") #MAIL MODEへ。 J$="MAIL" #次発言指定との比較変数格納。 CALL(LOOP0) MAIL1: SEND("W\R") #書き込み送信。 CALL(LOOP0) CONVERT(OFF) SEND(K$) #TITLE送信。TITLEはUPTでカット済。 CONVERT(ON) SEND("\R") T$="MAIL01" #TITMIS0で使用する居場所フラグ。 STIMEOUT(4) SWITCH CASE("題名:全角16文字まで") GOTO(TITMIS0) CASE("確認") WAIT("(1:[OK] 2:NG)") END CALL(LOOP0) 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(4) SWITCH CASE("◆") #エラーメッセージの有無確認。 GOTO(IDMIS) CASE("メールを送信します−") WAIT("登録 (1:[登録する] 2:しない)") END CALL(LOOP0) SEND("\R") #宛先登録確認。 MAIL000: #送信済ファイル移動処理。MAIL送信最終処理。 WAIT("−メール送信完了−") CALL(LOOP0) JUMPE(P$,"OVER",OVERM) #300行を越えるファイルであった場合。 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("LF") #L$はレス先番号等で使用。 GOTO(DAT_) #CHAT判断ルーチン,後_PAD_.PAD読み込み分岐へ。 RETRY: CALL(LOOP0) 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("ALF") #L$はレス先番号等で使用。 GOTO(DAT_) #========================================================================= SEND: #汎用文書送信用ルーチン。EOFとセット。 O$="5" #先送り行数。文字化けする時,0〜5で調整可。 E$="298" #300行以上の文書は送信不可能。299行まで。 SEND0: RREAD(F$,EOF) #発言ファイル読込。続きがなければ終了処理へ。 JUMPE(F$,"/E",NEXT_) #/Eがある場合,NEXT_へ分岐。 CONVERT(OFF) LEFT(F$,"80") #80文字以上をカット。 SEND(F$) #発言ファイル内容一行送信。 CONVERT(ON) SEND("\R") SUB(E$,E$,1) #E$=E$-1 JUMP<(E$,0,OVER) #300行以上の文書の場合,OVERへ。 JUMP>(O$,0,NOWAIT) #先送り行数判断。 WAIT("\010") #HOSTからの復帰文字を待つ。 GOTO(SEND0) #SENDへ戻る。 NOWAIT: SUB(O$,O$,1) #O$=O$-1 GOTO(SEND0) OVER: WAIT("\010") #HOSTからの復帰文字を待つ。 SEND("/E\R") CALL(LOOP0) #/E送信後。 SEND("\R") #修正確認。 JUMPE(T$,"BBS0",OVERB) #BBS発言の場合,OVERBへ分岐。 P$="OVER" #MAIL000で使用する居場所フラグ。 GOTO(MAIL0_) #送信先指定処理へ。 OVERM: #送信最終処理(MAIL000)から。 P$="" PRINTCR("□300行以上でしたので,分割送信します□") SEND("W\R") #続きの書き込み。 CALL(LOOP0) SEND("メールの続きです\R") #TITLEは固定。 CALL(LOOP0) SEND("\R") #TITLE確認。 CALL(LOOP0) GOTO(SEND) OVERB: #BBS発言が300行を越えた場合,修正確認後から。 CALL(LOOP0) SEND("\R") #登録確認。 WAIT("−書き込んぢゃいました−") CALL(LOOP0) PRINTCR("□300行以上でしたので,分割送信します□") SEND("W\R") CALL(LOOP0) SEND("上の発言の続きです\R") CALL(LOOP0) SEND("\R") #TITLE確認。 CALL(LOOP0) GOTO(SEND) EOF: #アップ文書終了処理。 SEND("/E\R") #/Eがないので,/E送信。 GOTO(T$) #指定されたT$のラベルへ。 #========================================================================= TITMIS0: #会議室,メール,共用タイトルミス処理ルーチン。 CALL(LOOP0) 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を削除。 CHAIN("WTMR.MAC$AAA") #元マクロへ。 #========================================================================= 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(4) SWITCH CASE("◆") #エラーメッセージの有無確認。 GOTO(IDMIS) CASE("メールを送信します−") WAIT("登録 (1:[登録する] 2:しない)") END CALL(LOOP0) SEND("\R") #宛先登録確認。 GOTO(NEXT__) #続き存否確認処理へ。 IDMIS: #居場所フラグにはU$を使用。 CALL(LOOP0) PRINTCR("□送信先ID or ハンドル名にミスがありましたので,貴方宛に送信します□") SEND(W$) #W$=USER ID or ハンドル名。 SEND("\R") CALL(LOOP0) SEND("\R") #宛先登録確認。 A$="" CAT(A$,"REN ",D$) #A$=REN G:\WT\UP_TXT\MAR9999.RES CAT(A$," *.ERR") #A$=REN G:\WT\UP_TXT\MAR9999.RES *.ERR CHILD(A$) #書き込みエラーファイルの拡張子をERRにリネーム。 DELAYM(1500) #同期調整。 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(4) SWITCH CASE("◆") GOTO(ERR3) CASE("OFF. 速攻ログアウトする") WAIT("Data>") END SEND(A$) #DL番号送信。 SEND("\R") STIMEOUT(4) SWITCH CASE("◆") GOTO(ERR2) CASE("☆ DataLib ☆") WAIT("Lib-#") 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を抜ける。 WAIT("−データライブラリを終了しました−") CALL(LOOP0) CHAIN(L$) #元マクロへ。 TSE: #リストが1頁分しかない場合。 SEND("T\R") #DLを抜ける。 WAIT("−データライブラリを終了しました−") CALL(LOOP0) CHAIN(L$) #元マクロへ。 #========================================================================= DLN: #最新DLリスト取得指定の場合。 CAT(L$,"$DAT_") #L$は戻り先マクロ。 SEND("DL\R") #DLへ。 STIMEOUT(4) SWITCH CASE("◆") GOTO(ERR3) CASE("OFF. 速攻ログアウトする") WAIT("Data>") END SEND("N\R") #最新リスト取得コマンド送信。 CALL(LOOP0) SEND("T\R") #DLを抜ける。 WAIT("−データライブラリを終了しました−") 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(4) SWITCH CASE("◆") #会議室に入れない場合。 GOTO(ERR3) CASE("(BOAD") WAIT(">") END SEND("DEL ") #発言削除コマンド送信。 SEND(A$) #削除発言番号送信。 SEND("\R") STIMEOUT(20) SWITCH CASE("◆") #発言削除が不可能な場合。 GOTO(ERR3) CASE("削除します") WAIT(":") END SEND("1\R") #削除の確認。 VCLEAR("UH") CALL(LOOP0) CHAIN(L$) #元マクロへ。 #========================================================================= ERR: #汎用エラー処理ルーチン。 CHAIN(L$) #元マクロへ。 ERR2: #DLモードに入った後,指定番号DLに入れない場合。 CALL(LOOP0) SEND("T\R") #メインプロンプトへ復帰。 WAIT("−データライブラリを終了しました−") 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$,"チャットは楽しいね。/Eで終了します。",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メッセージ受信。 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(">") WAIT("",1,LOOP0) RETURN CASE("):") WAIT("",1,LOOP0) RETURN CASE(":") WAIT("",1,LOOP0) RETURN END RETURN #=========================================================================