home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 5
/
FREESOFT.BIN
/
mopterm
/
mophost
/
boadcln.plt
< prev
next >
Wrap
Text File
|
1992-08-19
|
4KB
|
193 lines
/* BOADCLN.PLT */
/* ボード内の古い発言の削除用 オートパイロットです。 */
/* 指定した番号のボードの, 1番から指定した番号までの発言を削除し */
/* 残った, 発言を 1番からの番号に振り直し, 各ユーザの未読ポインターを */
/* 移動します。 */
/* Ver1.00 copyright (c) 1991,1992 Masahiro Kezuka */
%boadnum {5}; /* 古い発言を削除をしたいボードのNo */
%lastup {18}; /* この番号の発言まで削除を行う */
%logd {B:};
var buffer[20000];
var UserList [2000]; /* User List From USER.DAT */
var Name[16]; /* Current User Name */
var Password[8]; /* Current User Password */
var UserDir[20]; /* Current User Directoriy */
%CBoad boadnum; /* Current Boad Number of M */
var Last[100]; /* Current User Status */
var Page[5]; /* User Page Size-2 (default 20) */
var BoadList [400]; /* Last number of each boad */
/* パラメタで指定されたファイルを削除する */
%delfile{ [ filename ]
/*dispoff({Yes});*/
command({del }|filename);
dispoff({No})
};
/* パラメタで指定されたファイルを削除する */
%rename{ [ filenam1,filenam2 ]
/*dispoff({Yes});*/
command({rename }|filenam1|{ }|filenam2);
dispoff({No})
};
/* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
%setcdir2 {[dir]
%dir2 @case(@nochar(dir),
2,{im(dir|{\})},,{im(dir)});
setcdir(dir2)
};
%zerop{[num,deg]
var ans[deg];
var i[3];
i:=@nochar(num);
case(i!=deg,{Yes},
{
loop({
ans:=ans|{0};
i:=i+1;
im(i<deg)
});
im(ans | num);
},,{
im(num)
})
};
%blankp{[num,deg]
var ans[deg];
var i[3];
i:=@nochar(num);
case(i!=deg,{Yes},
{
loop({
ans:=ans|{ };
i:=i+1;
im(i<deg)
});
im( num | ans);
},,{
im(num)
})
};
%getArray{[n,st]
case(n,0,{im(@head(st,{/}))},
,{
getArray(n-1,@body(st,{/}))
})
};
%PutArray{[n,val]
var num[3];
var NLast[100];
%Last2 @getline(Last,2,1);
num:=0;
loop({
case(num == n,
{Yes},{
NLast:=NLast | val | {/};
},,{
NLast:=NLast | @getArray(num,Last2) | {/};
});
num:=num+1;
im(num<@noline(BoadList)+1)
});
Last:= @getline(Last,1,1) | NLast ;
%LastFile UserDir|{\}|{Last.dat};
delfile(LastFile);
write(LastFile,Last);
};
%SetLastNum{[LastNum]
var BoadLast[200];
%LastFile logd|{\}|{BOADLAST.DAT};
BoadLast:= @read(LastFile);
BoadLast:=@getline(BoadLast,1,CBoad-1) |
@zerop(LastNum,4)
| {\n} | @getline(BoadLast,CBoad+1);
delfile(LastFile);
write(LastFile,BoadLast);
};
%main{
var Line[80];
var num[4];
num:=1;
loop({
%delf logd | {\BOAD} | CBoad | {\UP} |
@zerop(num,3) | {.TXT};
delfile(delf);
num:=num+1;
im(num <= lastup);
});
%titleF logd | {\BOAD} | CBoad | {\BOAD.TLT} ;
buffer:=@read( titleF );
delfile(titleF);
loop({
Line:=@getline(buffer,1,1);
num:=@getchar(Line,1,3);
case(num>lastup,{Yes},{
write(titleF, @zerop(num-lastup,3) |
@getchar(Line,4,80) );
%renf logd | {\BOAD} | CBoad | {\UP} |
@zerop(num,3) | {.TXT};
rename(renf, {UP} |
@zerop(num-lastup,3) | {.TXT});
});
buffer:=@getline(buffer,2);
im(buffer<>{})
});
SetLastNum(@zerop(num-lastup,3));
};
%oneuser{
var number[10];
%up1{[n]
case(n>1,{Yes},{im(n)},,{im(1)})
};
%LastFile {Last.dat};
Last:=@read(LastFile);
number:= @getArray(CBoad,@getline(Last,2,1))+1-1;
case(@getchar(number,1,1),{*},{
PutArray(CBoad,{*} | @up1(@getchar((number,2,10)-lastup))
},,{
PutArray(CBoad,@up1(number-lastup))
});
delfile(LastFile);
write(LastFile,Last);
};
%ChangeMail{
var Line[80];
var num[5];
num:=1;
loop({
Line:=@getline(UserList,num,1);
display(Line);
case(@nochar(Line)>5,
{Yes},{
case(
@setcdir2({B:\}|@head(@tail(Line,{/}),{\n}))
,{Yes}, oneuser );
num:=num+1;
im({Yes})
},,{
im({No})
})
});
};
UserList:=@read({USER.DAT});
BoadList:=@read({BOAD.DAT});
ChangeMail;
main;