#========================================================================= #WTERM マクロプログラム ビギナー会員専用 WTMR_B.MAC V10.5 #========================================================================= START: #WTMR.MACから。 CALL(LOOP0) SEND("\R") CALL(LOOP0) LOGOPEN("MAR") GETCRTS(M$,"15") #ビギナー会員の場合には表示行数が多い。 GETCRTS(N$,"16") #未読確認のための変数格納。 C$="C\R" WAIT("") SEND("ESC OFF\R") CALL(LOOP0) SEND("NAP OFF\R") CALL(LOOP0) #========================================================================= 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$,Y) #末尾\カットのためのダミーY追加。G$=G:\WT\UP_TXT\Y。 CHANGE(G$,"\Y"," >") #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読み込み分岐へ。 #========================================================================= 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__: #UPT処理内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を削除。 GOTO(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(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$は居場所フラグ。指定先へ。 #========================================================================= AAA: #PAD指定処理開始。 S$="MAR.PAD" #MAR.PADは行動指定ファイル。 E$="/" #MAR.PAD内区切り文字。 O$="_" #MAR.PAD内区切り文字。 P$="." #MAR.PAD内区切り文字。 GETTXUPD(I$) #I$=G:\WT\UP_TXT\ CAT(B$,I$,S$) #B$=G:\WT\UP_TXT\MAR.PAD。PAD処理中はB$は固定。 ROPEN(B$,READ0) #MAR.PADがなければ,READ0へ。 RREAD(A$) #MAR.PADから一行,A$へ読み込み。 VSWAP(A$,X$) #A$とX$を交換。 IFE(X$,"") #X$はMAR.PADの一行目,一行伝言。ほぼ固定。 X$="/E" #一行伝言が改行のみの場合は,/Eとする。 CAT(I$,"MAR.WRK") #I$=G:\WT\UP_TXT\MAR.WRK WOPEN(I$) #MAR.WRK作成。 WCLOSE #WAPPENDのために,いったん閉じる。 WAPPEND(I$) #MAR.WRKオープン。 WRITE("") #一行伝言部分を削除して空白を書き込む。 WCLOSE #MAR.WRKを閉じる。 #========================================================================= DAT_: #>に戻って,CHATに入るかどうかを決めるルーチン。 D$="" VSWITCH(R$) #LOOP0でR$を設定。 CASE("C") #CHATメッセージがあった場合,R$=C。 CALL(CHAT) #CHATへ。 VCLEAR("R") #CHATから復帰。 GOTO(DAT1) #MAR.PADファイル指定読み込みルーチンへ。 ELSE #R$がCでない場合。 GOTO(DAT1) END #========================================================================= DAT1: #MAR.PAD内指定読み取りルーチン。 RREAD(A$) #MAR.PADから二行目以降をA$へ読み込み。 JUMPE(A$,"",DAT1) #空白のみの行の場合,DAT1へ戻る。 J$=A$ #J$はWAPPEND書き込み用変数。 U$=A$ LEFT(U$,"1") JUMPE(U$,"#",DAT1) #「#」で始まるコメント行の場合,DAT1へ戻る。 VSWITCH(A$) CASE("SEL") #MENU SELECTER へ。 U$="READ" #U$は移動先フラグ。 GOTO(DAT3) CASE("OFF") #自動一行伝言書き込み終了へ。 U$="READ2" GOTO(DAT3) CASE("BYE") #手動一行伝言書き込み終了へ。 U$="READ1" GOTO(DAT3) CASE("PAS") #未読処理をせずに,MENU SELECTERへ。 U$="SELECT0" GOTO(DAT3) ELSE GOTO(DAT2) END #------------------------------------------------------------------------- DAT2: #「/」指定の分岐。 JUMPE(A$,"DLN/",DLN) #最新DLリスト取得指定の場合。 PICKWORD(D$,A$,E$) #/で区切った内容を分離。 JUMPE(D$,"B",DAT1) #旧版指定の場合。 JUMPE(D$,"M",DAT1) #旧版指定の場合。 JUMPE(D$,"C",DAT1) #ハンドル名変更指定。 JUMPE(D$,"R",DAT1) #BC読み指定。 JUMPE(D$,"W",DAT1) #BC書き指定。 JUMPE(D$,"U",DAT1) #UPLOAD指定。 JUMPE(D$,"D",DOWN) #DWONLOAD指定。 JUMPE(D$,"P",PRO) #プロフィール取得指定。 JUMPE(D$,"L",DL_) #DLリスト取得指定の場合。 JUMPE(D$,"K",KES) #発言削除指定の場合。 JUMPE(A$,"",DO) #直接コマンド入力指定の場合。 #------------------------------------------------------------------------- DAT3: WAPPEND(I$) #追加書き込みに,MAR.WRKをオープン。 WRITE(J$) #MAR.PAD内容をMAR.WRKに書き込む。 DAT4: #読み込み行以下をMAR.WRKに書き込むルーチン。 RREAD(J$,DAT5) #MAR.PADから読み込み。EOFならば,DAT5へ。 WRITE(J$) #MAR.WRKに書き込み。 GOTO(DAT4) DAT5: #MAR.PAD最終処理ルーチン。 WCLOSE #MAR.WRKを閉じる。 RCLOSE #MAR.PADを閉じる。 A$="" CAT(A$,"DEL ",B$) #A$=DEL G:\WT\UP_TXT\MAR.PAD CHILD(A$) #MAR.PAD削除。 DELAYM(1500) #同期調整。 CHANGE(B$,"MAR.PAD","MAR.WRK") A$="" CAT(A$,"REN ",B$) #A$=REN G:\WT\UP_TXT\MAR.WRK CAT(A$," MAR.PAD") #A$=REN G:\WT\UP_TXT\MAR.WRK MAR.PAD CHILD(A$) #MAR.WRKを,MAR.PADに改名。 DELAYM(1500) #同期調整。 GOTO(U$) #DAT1で格納した移動先へ。 #========================================================================= DOWN: #DOWNLOAD指定。 PICKWORD(D$,A$,E$) #D$はDL番号。A$=23/***.LZH PICKWORD(H$,A$,E$) #H$はDOWNLOADデータ番号。A$はデータ名。 JUMPE(A$,"",DAT_) #指定ミスの場合。 JUMPE(D$,"",DAT_) JUMPE(H$,"",DAT_) U$=A$ SEND("DL\R") #DLへ。 STIMEOUT(2) SWITCH CASE("◆") GOTO(DAT_) #DLに入れない場合。 END CALL(LOOP0) SEND(D$) #DL番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS) #指定DLに入れない場合。 END CALL(LOOP0) SEND("3\R") #DOWNLOAD選択。 STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS) #DOWNLOAD不可能の場合。 END CALL(LOOP0) SEND(H$) #DOWNLOADデータ番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(DWMIS1) #DOWNLOAD番号エラー。 END CALL(LOOP0) SEND("1\R") #確認。 CALL(LOOP0) SEND("1\R") #受信方法選択。 DELAYM(4000) #同期調整。 DOWNLOAD(4,U$,ERROR) #F-Xmodemによる受信。 DELAYM(500) #同期調整。 SEND("\R") #同期調整のための改行送信。 CALL(LOOP0) SEND("T\R") #DLを抜ける。 VCLEAR("HU") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- DWMIS1: #データ番号ミスの場合。 CALL(LOOP0) SEND("\R") #リターン送信で,DOWNLOADを抜ける。 DWMIS: #DLに入れない場合。DWONLOAD不可能の場合。 CALL(LOOP0) SEND("T\R") #メインプロンプトへ。 CALL(LOOP0) VCLEAR("HU") GOTO(DAT_) #========================================================================= READ0: #MAR.PADが存在しない場合,一行伝言を設定。 X$="また来るねぇ〜 (^^)/゚" READ: U$="SELECT0" GOTO(R1) READ1: U$="OFF4" GOTO(R1) READ2: U$="OFF1" #------------------------------------------------------------------------- R1: JUMPSRCHN(N$,"あります",R2) #メール未読があれば,READ000へ。 GOTO(READ000) R2: JUMPSRCHN(M$,"あります",U$) #会議室未読がなければ,U$へ。 #------------------------------------------------------------------------- READ000: PRINTCR("□未読状況を調査しています□") LOGOPEN("TEMP") #会議室未読状況書き込み作業ログファイル作成。 SEND("B\R") #会議室未読状況取得コマンド。 CALL(LOOP0) GETLOGD(I$) #I$=G:\WT\LOG\ CAT(I$,"TEMP.LOG") #I$=G:\WT\LOG\TEMP.LOG LOGCLOSE #TEMP.LOG閉じる。 LOGOPEN("MAR") FOPEN(I$) #作業ログファイル読みだしオープン。 FREAD(A$) #TEMP.LOGの一行目のBを捨てる。 READC: #作業ログファイル読みだしルーチン。 FREAD(A$,READG) #作業ログファイルから読み込み。 JUMPSRCHY(A$,"S)31",READDD) #(BBS)31は会議室数上限。 JUMPSRCHY(A$,"手紙",READF) #未読のメールがある場合。 JUMPSRCHN(A$,"未読数 0",READD) #未読 0,がない場合(会議室未読がある場合)。 GOTO(READC) READDD: #31番会議室未読有無確認。 JUMPSRCHN(A$,"未読数 0",READFF) #未読 0,がない場合(会議室未読がある場合)。 GOTO(READG) #31番会議室未読がない場合は終了処理へ。 READD: #会議室未読がある場合。 LEFT(A$,"7") #作業ログファイルの一行を,左7バイト取り出し。 RIGHT(A$,"2") #取り出したものの,右2バイト取り出し。 DELSPACE(H$,A$) #取り出したものから空白を除去。 SEND(H$) #H$は会議室番号。 SEND("\R") CALL(LOOP0) SEND("/N\R") #会議室未読の処理。/ALLは使えない。 CALL(LOOP0) F$="READC" #F$はSELECT_で使用する,移動先フラグ。 GOTO(SELECT_) #チャットサイン有無確認ループへ。 READF: #未読のメールがある場合。 SEND("M\R") CALL(LOOP0) SEND("/N\R") #未読処理コマンド。 CALL(LOOP0) F$="READC" #F$はSELECT_で使用する,移動先フラグ。 GOTO(SELECT_) #チャットサイン有無確認ループへ。 READFF: #31番会議室に未読がある場合の処理。 SEND("31\R") CALL(LOOP0) SEND("/N\R") #会議室未読の処理。/ALLは使えない。 CALL(LOOP0) F$="READG" #F$はSELECT_で使用する,移動先フラグ。 GOTO(SELECT_) #チャットサイン有無確認ループへ。 READG: #未読処理作業終了処理ルーチン。 FCLOSE DELFILE(I$) #作業ログファイルの削除。 VSWITCH(R$) #CHATサイン有無判断ルーチン。 CASE("C") CALL(CHAT) R$="" GOTO(U$) #U$は移動先フラグ。 ELSE GOTO(U$) END #========================================================================= SELECT_: #CHAT信号判断ルーチン。 VSWITCH(R$) CASE("C") CALL(CHAT) R$="" GOTO(F$) ELSE GOTO(F$) END #------------------------------------------------------------------------- SELECT0: H$="GAMEをします。 GAME内は,自由行動です。+未読ポインター移動を行います。" I$="他にも色々できるよ。+未読情報を表示します。" J$="ログアウトします。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") PRINTCR(" MACRO STOP! SEE YOU AGAIN! (^o^)/゚") EXIT CASE("1") GOTO(GAME) CASE("2") GOTO(ETC) CASE("3") GOTO(OFF1) CASE("4") GOTO(HAND) CASE("5") Y$="BST" GOTO(ETC1) ELSE GOTO(SELECT0) END ETC: H$="各種 RANK表示をします。+もっと,いろいろできるよ。" I$="誰がアクセスしてるかな?+一行伝言デフォルト内容の確認をします。" J$="今日はどんな日かな?+一行伝言をデフォルトで入力してログアウトします。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") GOTO(ETC01) CASE("2") Y$="LOG" GOTO(ETC1) CASE("3") Y$="DAY" GOTO(ETC1) CASE("4") GOTO(ETC2) CASE("5") GOTO(DEF) CASE("6") GOTO(OFF4) ELSE GOTO(ETC) END ETC01: H$="所有GOLD RANKINGを表示します。+発言回数RANKINGを表示します。" I$="書き込み率RANKINGを表示します。" J$="アクセス回数RANKINGを表示します。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(ETC) CASE("1") Y$="GRNK" GOTO(ETC1) CASE("2") Y$="RRNK" GOTO(ETC1) CASE("3") Y$="ARNK" GOTO(ETC1) CASE("4") Y$="WRNK" GOTO(ETC1) ELSE GOTO(ETC01) END ETC2: H$="50,000GOLD取得者を表示します。+規約等を読みます。" I$="PROFIELを表示します。" J$="自由行動します。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") Y$="KING" GOTO(ETC1) CASE("2") Y$="PROF" GOTO(PROF) CASE("3") GOTO(ETC4) CASE("4") GOTO(ETC3) ELSE GOTO(ETC2) END ETC3: H$="規約を読みます。+SYSOPとチャットをします。抜ける時は「/E」を入れてね。" I$="郵送規約を読みます。" J$="会議室とボードチャットの一覧を見ます(MAP)。" SMENU(H$,I$,J$) VSWITCH(H$) CASE("0") GOTO(SELECT0) CASE("1") Y$="規約" GOTO(ETC1) CASE("2") Y$="郵送" GOTO(ETC1) CASE("3") Y$="MAP" GOTO(ETC1) CASE("4") GOTO(CHATS) ELSE GOTO(ETC2) END #========================================================================= HAND: F$="SELECT0" INPUT(H$,"ポインター移動をする会議室番号を入力して下さい:","705.60") JUMPE(H$,"",SELECT_) #入力がない場合。 SEND(H$) SEND("\R") CALL(LOOP0) DELAYM(500) #同期調整。 GETCRTS(A$,"2") #会議室移動確認。 JUMPSRCHY(A$,"◆",SELECT_) INPUT(H$,"移動ポインター数を入力して下さい:","705.60") JUMPE(H$,"",SELECT_) #入力がない場合。 SEND("RP ") SEND(H$) SEND("\R") CALL(LOOP0) DELAYM(500) #同期調整。 GOTO(SELECT_) #========================================================================= ETC4: INPUT(H$,"コマンドを正確に入力して下さい:","705.60") JUMPE(H$,"",SELECT0) SEND(H$) SEND("\R") CALL(LOOP0) F$="ETC2" GOTO(SELECT_) #========================================================================= PRO: #MAR.PAD指定から。 JUMPE(A$,"",DAT1) SEND("PROF ") SEND(A$) SEND("\R") CALL(LOOP0) GOTO(DAT_) #------------------------------------------------------------------------- PROF: #SELECTERから。 INPUT(H$,"ID or ハンドル名を正確に入力して下さい:","705.60") JUMPE(H$,"",SELECT0) #ID等の指定がない場合。 CAT(Y$," ") CAT(Y$,H$) SEND(Y$) SEND("\R") CALL(LOOP0) DELAYM(1500) #同期調整。 F$="SLECT0" GOTO(SELECT_) #========================================================================= DEF: PRINTCR("") PRINTCR("一行伝言に設定されているのは----") PRINTCR(X$) PRINTCR("----です。") F$="ETC" GOTO(SELECT_) #プロンプト表示は待たない。 #========================================================================= ETC1: SEND(Y$) SEND("\R") CALL(LOOP0) F$="SELECT0" GOTO(SELECT_) ETC01: SEND(Y$) SEND("\R") CALL(LOOP0) F$="ETC3" GOTO(SELECT_) #========================================================================= GAME: SEND("GAME\R") F$="GAME0" GAME0: L$=")>" CALL(LOOP1) GOTO(SELECT0) #========================================================================= OFF1: SEND("OFF\R") L$="\013\010:" F$="OFF2" C$="/C\R" CALL(LOOP1) SEND("\R") CALL(LOOP1) OFF2: INPUT(A$,"一行伝言を入力して下さい。",705.120) CONVERT(OFF) SEND(A$) CONVERT(ON) SEND("\R") JUMPE(A$,"",OUT) JUMPE(A$,"/E",OUT) WAIT("\010:") SEND("\R") GOTO(OUT) #------------------------------------------------------------------------- OFF4: SEND("OFF\R") L$="\013\010:" F$="OFF5" C$="/C\R" CALL(LOOP1) SEND("\R") CALL(LOOP1) OFF5: CONVERT(OFF) SEND(X$) CONVERT(ON) SEND("\R") JUMPE(X$,"/E",OUT) WAIT("\010:") SEND("\R") GOTO(OUT) #------------------------------------------------------------------------- OUT: WAIT("切断します−") PRINTCR("") PRINTCR("") PRINTCR(" MACRO STOP! SEE YOU AGAIN! (^o^)/゚") PRINTCR("") PRINTCR(" また来てね! ") LOGCLOSE EXIT #マクロ終了。 #========================================================================= LOOP0: SWITCH CASE("T{^。^`}ヨホホホ。") GETCRTS(Z$,"0") R$="C" RETURN CASE("+\013\010") 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 #------------------------------------------------------------------------- LOOP1: SWITCH CASE("\013\010:CHAT{^。^`}ヨホホホ。") CALL(CHA) CASE(":CHAT{^。^`}ヨホホホ。") CALL(CHA) CASE("e:CHAT{^。^`}ヨホホホ。") CALL(CHA1) CASE("T{^。^`}ヨホホホ。") GETCRTS(Z$,"0") CALL(CHAT) CASE(L$) GETCRTS(Z$,"0") WAIT("",1,LOOP1) RETURN END RETURN #========================================================================= CHA1: SEND("0\R") WAIT(")>") CALL(CHAT) RETURN CHAT: DELAYM(1000) SEND(C$) CALL(CHAT0) RETURN CHAT0: WAIT("",1,CHAT0) VCLEAR("A") INPUT(A$,"チャットは楽しいね。",705.60) IFE(A$,"") CALL(CHATERR) CONVERT(OFF) SEND(A$) CONVERT(ON) SEND("\R") IFE(A$,"/E") RETURN GOTO(CHAT0) CHATERR: SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R") CHATERR0: WAIT("",1,CHATERR0) A$="/E" RETURN CHATS: WAIT("",1,CHATS) SEND("C\R") CHATS0: WAIT("",1,CHATS0) INPUT(R$,"チャットは楽しいね。",705.120) CONVERT(OFF) SEND(R$) CONVERT(ON) SEND("\R") JUMPE(R$,"/E",CHATS1) JUMPE(R$,"/e",CHATS1) GOTO(CHATS0) CHATS1: WAIT("",1,CHATS1) GOTO(SELECT0) #========================================================================= DO: JUMPE(D$,"",DAT1) SEND(D$) SEND("\R") CALL(LOOP0) GOTO(DAT_) #========================================================================= KES: #自発言削除指定の場合。 JUMPE(A$,"",DAT_) #会議室等の指定がない場合。 PICKWORD(U$,A$,E$) #/で区切る。U$は会議室番号。 JUMPE(U$,"",DAT_) #会議室指定がない場合(//となっている)。 JUMPE(A$,"",DAT_) #発言番号指定がない場合。 JUMPE(U$,"1",DAT_) #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) GOTO(DAT_) #========================================================================= DL_: #DLリスト取得指定の場合。 JUMPE(A$,"",DAT1) SEND("DL\R") #DLへ。 STIMEOUT(2) SWITCH CASE("◆") GOTO(ERR3) END CALL(LOOP0) SEND(A$) #DL番号送信。 SEND("\R") STIMEOUT(2) SWITCH CASE("◆") GOTO(ERR2) #DLを抜けてメインプロンプトへ戻る処理へ。 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) GOTO(DAT_) TSE: #リストが1頁分しかない場合。 SEND("T\R") #DLを抜ける。 CALL(LOOP0) GOTO(DAT_) #========================================================================= DLN: #最新DLリスト取得指定の場合。 SEND("DL\R") #DLへ。 STIMEOUT(2) SWITCH CASE("◆") GOTO(ERR3) END CALL(LOOP0) SEND("N\R") #最新リスト取得コマンド送信。 CALL(LOOP0) SEND("T\R") #DLを抜ける。 CALL(LOOP0) GOTO(DAT_) #========================================================================= ERR2: #DLモードに入った後,指定番号DLに入れない場合。 CALL(LOOP0) SEND("T\R") #メインプロンプトへ復帰。 CALL(LOOP0) GETCRTS(Z$,"0") GOTO(DAT1) ERR3: #LOOP0の前の場合。 CALL(LOOP0) GETCRTS(Z$,"0") GOTO(DAT1) #========================================================================= 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__) #=========================================================================