home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 5 / FREESOFT.BIN / mopterm / mophost / boadcln.plt < prev    next >
Text File  |  1992-08-19  |  4KB  |  193 lines

  1.  
  2. /*   BOADCLN.PLT                            */
  3. /* ボード内の古い発言の削除用 オートパイロットです。             */
  4. /*   指定した番号のボードの, 1番から指定した番号までの発言を削除し     */
  5. /* 残った, 発言を 1番からの番号に振り直し, 各ユーザの未読ポインターを     */
  6. /* 移動します。                                */
  7. /*    Ver1.00 copyright (c) 1991,1992 Masahiro Kezuka         */
  8.  
  9.  
  10. %boadnum {5};   /* 古い発言を削除をしたいボードのNo */
  11. %lastup  {18};  /* この番号の発言まで削除を行う */
  12.  
  13. %logd {B:};
  14. var buffer[20000];
  15. var UserList [2000];    /* User List From USER.DAT         */
  16. var Name[16];        /* Current  User Name             */
  17. var Password[8];    /* Current  User Password         */
  18. var UserDir[20];    /* Current  User Directoriy         */
  19. %CBoad boadnum;        /* Current Boad Number of M         */
  20. var Last[100];        /* Current User Status             */
  21. var Page[5];        /* User Page Size-2 (default 20)     */
  22. var BoadList [400];    /* Last number of each boad        */
  23.  
  24.  
  25. /*  パラメタで指定されたファイルを削除する */
  26. %delfile{ [ filename ]
  27.     /*dispoff({Yes});*/
  28.     command({del }|filename);
  29.     dispoff({No})
  30. };
  31. /*  パラメタで指定されたファイルを削除する */
  32. %rename{ [ filenam1,filenam2 ]
  33.     /*dispoff({Yes});*/
  34.     command({rename }|filenam1|{ }|filenam2);
  35.     dispoff({No})
  36. };
  37. /* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
  38. %setcdir2 {[dir]
  39.     %dir2 @case(@nochar(dir),
  40.         2,{im(dir|{\})},,{im(dir)});
  41.     setcdir(dir2)
  42. };
  43.  
  44. %zerop{[num,deg]
  45.     var ans[deg];
  46.     var i[3];
  47.     i:=@nochar(num);
  48.     case(i!=deg,{Yes},
  49.     {
  50.         loop({
  51.             ans:=ans|{0};
  52.             i:=i+1;
  53.             im(i<deg)
  54.         });
  55.         im(ans | num);
  56.     },,{
  57.         im(num)
  58.     })
  59. };
  60.  
  61.  
  62. %blankp{[num,deg]
  63.     var ans[deg];
  64.     var i[3];
  65.     i:=@nochar(num);
  66.     case(i!=deg,{Yes},
  67.     {
  68.         loop({
  69.             ans:=ans|{ };
  70.             i:=i+1;
  71.             im(i<deg)
  72.         });
  73.         im( num | ans);
  74.     },,{
  75.         im(num)
  76.     })
  77. };
  78.  
  79.     %getArray{[n,st]
  80.     case(n,0,{im(@head(st,{/}))},
  81.     ,{
  82.         getArray(n-1,@body(st,{/}))
  83.     })
  84.     };
  85.  
  86.     %PutArray{[n,val]
  87.     var num[3];
  88.     var NLast[100];
  89.     %Last2 @getline(Last,2,1);
  90.     num:=0;
  91.     loop({
  92.         case(num == n,
  93.         {Yes},{
  94.             NLast:=NLast | val | {/};
  95.         },,{
  96.             NLast:=NLast | @getArray(num,Last2) | {/};
  97.         });
  98.         num:=num+1;
  99.         im(num<@noline(BoadList)+1)
  100.     });
  101.     Last:= @getline(Last,1,1) | NLast ;
  102.     %LastFile  UserDir|{\}|{Last.dat};
  103.     delfile(LastFile);
  104.     write(LastFile,Last);
  105.     };
  106.  
  107. %SetLastNum{[LastNum]
  108.     var BoadLast[200];
  109.     %LastFile  logd|{\}|{BOADLAST.DAT};
  110.     BoadLast:= @read(LastFile);
  111.     BoadLast:=@getline(BoadLast,1,CBoad-1) |
  112.                 @zerop(LastNum,4)
  113.                  | {\n} | @getline(BoadLast,CBoad+1);
  114.     delfile(LastFile);
  115.     write(LastFile,BoadLast);
  116. };
  117.  
  118. %main{
  119.     var Line[80];
  120.     var num[4];
  121.     num:=1;
  122.     loop({
  123.         %delf logd | {\BOAD} | CBoad | {\UP} | 
  124.             @zerop(num,3) | {.TXT};
  125.         delfile(delf);
  126.         num:=num+1;
  127.         im(num <= lastup);
  128.     });
  129.  
  130.     %titleF logd | {\BOAD} | CBoad | {\BOAD.TLT} ;
  131.     buffer:=@read( titleF );
  132.     delfile(titleF);
  133.     loop({
  134.         Line:=@getline(buffer,1,1);
  135.         num:=@getchar(Line,1,3);
  136.         case(num>lastup,{Yes},{
  137.             write(titleF, @zerop(num-lastup,3) |
  138.                 @getchar(Line,4,80) );
  139.             %renf logd | {\BOAD} | CBoad | {\UP} | 
  140.                 @zerop(num,3) | {.TXT};
  141.             rename(renf, {UP} | 
  142.                 @zerop(num-lastup,3) | {.TXT});
  143.         });
  144.         buffer:=@getline(buffer,2);
  145.  
  146.         im(buffer<>{})
  147.     });
  148.     SetLastNum(@zerop(num-lastup,3));
  149. };
  150.  
  151. %oneuser{
  152.     var number[10];
  153.     %up1{[n]
  154.         case(n>1,{Yes},{im(n)},,{im(1)})
  155.     };
  156.  
  157.     %LastFile  {Last.dat};
  158.     Last:=@read(LastFile);
  159.     number:= @getArray(CBoad,@getline(Last,2,1))+1-1;
  160.     case(@getchar(number,1,1),{*},{
  161.         PutArray(CBoad,{*} | @up1(@getchar((number,2,10)-lastup))
  162.     },,{
  163.         PutArray(CBoad,@up1(number-lastup))
  164.     });
  165.     delfile(LastFile);
  166.     write(LastFile,Last);
  167. };
  168.  
  169. %ChangeMail{
  170.     var Line[80];
  171.     var num[5];
  172.     num:=1;
  173.     loop({
  174.         Line:=@getline(UserList,num,1);
  175.         display(Line);
  176.         case(@nochar(Line)>5,
  177.         {Yes},{    
  178.             case(
  179.             @setcdir2({B:\}|@head(@tail(Line,{/}),{\n}))
  180.             ,{Yes},    oneuser );
  181.             num:=num+1;
  182.             im({Yes})
  183.         },,{
  184.             im({No})
  185.         })
  186.     });
  187. };
  188.  
  189. UserList:=@read({USER.DAT});
  190. BoadList:=@read({BOAD.DAT});
  191. ChangeMail;
  192. main;
  193.