/[suikacvs]/perl/kanzan/kanzan.cgi
Suika

Diff of /perl/kanzan/kanzan.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by wakaba, Sat Feb 23 11:47:59 2002 UTC revision 1.5 by wakaba, Wed Nov 5 12:52:46 2003 UTC
# Line 1  Line 1 
1  #!/usr/local/bin/perl  #!/usr/bin/perl
2    
3  use strict;  use strict;
4  require Suika::CGI;  
5    for (split /[&;]/, $main::ENV{QUERY_STRING}) {
6  my %ex_point1 = (    
7    kokugo        => 54,  }
8    suugaku       => 55,  
9    eigo  => 57,  my %ex_point1 = ();
10    sekaishi      => 53,  (
11    nihonshi      => 0,    kokugo        => 54,
12    chiri => 0,    suugaku       => 55,
13    butsuri       => 54,    eigo  => 57,
14    kagaku        => 52,    sekaishi      => 53,
15    seibutsu      => 0,    nihonshi      => 0,
16    _OBJECT       => 57,    chiri => 0,
17  );    butsuri       => 54,
18      kagaku        => 52,
19  my %ex_point2 = (    seibutsu      => 0,
20    kokugo        => 53,    _OBJECT       => 57,
21    suugaku       => 55,  );
22    eigo  => 55,  
23    sekaishi      => 52,  my %ex_point2 = ();
24    nihonshi      => 0,  (
25    chiri => 0,    kokugo        => 53,
26    butsuri       => 54,    suugaku       => 55,
27    kagaku        => 51,    eigo  => 55,
28    seibutsu      => 0,    sekaishi      => 52,
29    _OBJECT       => 58,    nihonshi      => 0,
30  );    chiri => 0,
31      butsuri       => 54,
32  my %ex_haiten1 = (    kagaku        => 51,
33    kokugo        => 80,    seibutsu      => 0,
34    suugaku       => 80,    _OBJECT       => 58,
35    eigo  => 80,  );
36    sekaishi      => 40,  
37    nihonshi      => 0,  my %ex_haiten1 = ();
38    chiri => 0,  (
39    butsuri       => 40,    kokugo        => 80,
40    kagaku        => 0,    suugaku       => 80,
41    seibutsu      => 0,    eigo  => 80,
42  );    sekaishi      => 40,
43      nihonshi      => 0,
44  my %ex_haiten2 = (    chiri => 0,
45    kokugo        => 0,    butsuri       => 40,
46    suugaku       => 300,    kagaku        => 0,
47    eigo  => 150,    seibutsu      => 0,
48    sekaishi      => 0,  );
49    nihonshi      => 0,  
50    chiri => 0,  my %ex_haiten2 = ();
51    butsuri       => 150,  (
52    kagaku        => 150,    kokugo        => 0,
53    seibutsu      => 0,    suugaku       => 300,
54  );    eigo  => 150,
55      sekaishi      => 0,
56      nihonshi      => 0,
57  sub kanzan (%%%%) {    chiri => 0,
58    my ($point1, $full1, $point2, $full2) = @_;    butsuri       => 150,
59    my (%kanzaned1, %kanzaned2);    kagaku        => 150,
60    $$full1{_ALL} = 0;    seibutsu      => 0,
61    for my $subject (keys %$full1) {  );
62      next if $subject =~ /^_/;  
63      $kanzaned1{$subject} = $$point1{$subject}*$$full1{$subject}/100;  
64      $kanzaned1{_ALL} += $kanzaned1{$subject};  sub kanzan (%%%%) {
65      $$full1{_ALL} += $$full1{$subject};    my ($point1, $full1, $point2, $full2) = @_;
66    }    my (%kanzaned1, %kanzaned2);
67    $kanzaned1{_PERCENT} = 100*$kanzaned1{_ALL}/$$full1{_ALL};    $$full1{_ALL} = 0;
68    $$full2{_ALL} = 0;    for my $subject (keys %$full1) {
69    for my $subject (keys %$full2) {      next if $subject =~ /^_/;
70      next if $subject =~ /^_/;      $kanzaned1{$subject} = $$point1{$subject}*$$full1{$subject}/100;
71      $kanzaned2{$subject} = $$point2{$subject}*$$full2{$subject}/100;      $kanzaned1{_ALL} += $kanzaned1{$subject};
72      $kanzaned2{_ALL} += $kanzaned2{$subject};      $$full1{_ALL} += $$full1{$subject};
73      $$full2{_ALL} += $$full2{$subject};    }
74    }    $kanzaned1{_PERCENT} = $$full1{_ALL}==0?0:100*$kanzaned1{_ALL}/$$full1{_ALL};
75    $kanzaned2{_PERCENT} = 100*$kanzaned2{_ALL}/$$full2{_ALL};    $$full2{_ALL} = 0;
76        for my $subject (keys %$full2) {
77    my ($percent, $object_percent);      next if $subject =~ /^_/;
78    $percent = 100*($kanzaned1{_ALL}+$kanzaned2{_ALL})      $kanzaned2{$subject} = $$point2{$subject}*$$full2{$subject}/100;
79                  /($$full1{_ALL}+$$full2{_ALL});      $kanzaned2{_ALL} += $kanzaned2{$subject};
80    $object_percent = ($$point1{_OBJECT}*$$full1{_ALL}      $$full2{_ALL} += $$full2{$subject};
81                      +$$point2{_OBJECT}*$$full2{_ALL})    }
82                  /($$full1{_ALL}+$$full2{_ALL});    $kanzaned2{_PERCENT} = $$full2{_ALL}==0?0:100*$kanzaned2{_ALL}/$$full2{_ALL};
83    ($percent, $object_percent, \%kanzaned1, \%kanzaned2);    
84  }    my ($percent, $object_percent);
85      $percent = ($$full1{_ALL}+$$full2{_ALL})==0?0:
86  my (%mypoint1, %mypoint2, %haiten1, %haiten2);               100*($kanzaned1{_ALL}+$kanzaned2{_ALL})
87  if ($Suika::CGI::param{newform} ne 'no') {                  /($$full1{_ALL}+$$full2{_ALL});
88    %mypoint1 = %ex_point1;    $object_percent = ($$full1{_ALL}+$$full2{_ALL})==0?0:
89    %mypoint2 = %ex_point2;                      ($$point1{_OBJECT}*$$full1{_ALL}
90    %haiten1 = %ex_haiten1;                      +$$point2{_OBJECT}*$$full2{_ALL})
91    %haiten2 = %ex_haiten2;                  /($$full1{_ALL}+$$full2{_ALL});
92  } else {    ($percent, $object_percent, \%kanzaned1, \%kanzaned2);
93    for my $s (keys %Suika::CGI::param) {  }
94      $mypoint1{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+[^H_])1$/;  
95      $mypoint2{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+[^H_])2$/;  %Suika::CGI::param = %{__get_parameter ()};
96      $mypoint1{'_'.$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)_1$/;  my (%mypoint1, %mypoint2, %haiten1, %haiten2);
97      $mypoint2{'_'.$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)_2$/;  if ($Suika::CGI::param{newform} ne 'no') {
98      $haiten1{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)H1$/;    %mypoint1 = %ex_point1;
99      $haiten2{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)H2$/;    %mypoint2 = %ex_point2;
100    }    %haiten1 = %ex_haiten1;
101  }    %haiten2 = %ex_haiten2;
102  my ($percent, $object, $kanzan1, $kanzan2)  } else {
103   = kanzan ({%mypoint1} => {%haiten1}, {%mypoint2} => {%haiten2});    for my $s (keys %Suika::CGI::param) {
104        $mypoint1{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+[^H_])1$/;
105  print STDOUT "Content-Type: text/html; charset=euc-jisx0213      $mypoint2{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+[^H_])2$/;
106        $mypoint1{'_'.$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)_1$/;
107  ";      $mypoint2{'_'.$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)_2$/;
108  output_html (\%mypoint1 => \%haiten1 => $kanzan1,      $haiten1{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)H1$/;
109               \%mypoint2 => \%haiten2 => $kanzan2,      $haiten2{$1} = $Suika::CGI::param{$s} if $s =~ /^(.+)H2$/;
110               percent => $percent, object => $object);    }
111    }
112  sub diffmark ($) {  my ($percent, $object, $kanzan1, $kanzan2)
113    my $diff = shift;   = kanzan ({%mypoint1} => {%haiten1}, {%mypoint2} => {%haiten2});
114    return '□' if $diff < -4;  
115    return '△' if $diff < -2;  print STDOUT "Content-Type: text/html; charset=euc-jp
116    return '○' if $diff < 0;  Content-Style-Type: text/css
117    return '◎';  Content-Language: ja
118  }  
119    ";
120  sub output_html (%%%%%) {  output_html (\%mypoint1 => \%haiten1 => $kanzan1,
121    my ($p1 => $h1 => $k1, $p2 => $h2 => $k2, %misc) = @_;               \%mypoint2 => \%haiten2 => $kanzan2,
122    for my $n ($$k1{_PERCENT}, $$k2{_PERCENT}, $misc{percent}, $misc{object}) {               percent => $percent, object => $object);
123      $n = int ($n);  
124    }  sub diffmark ($) {
125    $$k1{_DIFF} = $$k1{_PERCENT}-$$p1{_OBJECT};    my $diff = shift;
126    $$k2{_DIFF} = $$k2{_PERCENT}-$$p2{_OBJECT};    return '□' if $diff < -4;
127    $misc{_DIFF} = $misc{percent}-$misc{object};    return '△' if $diff < -2;
128    $$k1{_DIFFMARK} = diffmark ($$k1{_DIFF});    return '○' if $diff < 0;
129    $$k2{_DIFFMARK} = diffmark ($$k2{_DIFF});    return '◎';
130    $misc{_DIFFMARK} = diffmark ($misc{_DIFF});  }
131    print <<EOH;  
132  <!DOCTYPE html PUBLIC "-//W3D//DTD HTML 4.01//EN">  sub output_html (%%%%%) {
133  <html lang="ja">    my ($p1 => $h1 => $k1, $p2 => $h2 => $k2, %misc) = @_;
134  <head>    for my $n ($$k1{_PERCENT}, $$k2{_PERCENT}, $misc{percent}, $misc{object}) {
135  <title>配点換算</title>      $n = int ($n);
136  <style type="text/css">    }
137  input   {width: 3em}    $$k1{_DIFF} = $$k1{_PERCENT}-$$p1{_OBJECT};
138  </style>    $$k2{_DIFF} = $$k2{_PERCENT}-$$p2{_OBJECT};
139  </head>    $misc{_DIFF} = $misc{percent}-$misc{object};
140  <body>    $$k1{_DIFFMARK} = diffmark ($$k1{_DIFF});
141  <h1>配点換算</h1>    $$k2{_DIFFMARK} = diffmark ($$k2{_DIFF});
142  <form action="kanzan" method="post" accept-charset="iso-2022-jp, iso-2022-jp-3">    $misc{_DIFFMARK} = diffmark ($misc{_DIFF});
143  <table>    print <<EOH;
144  <thead>  <!DOCTYPE html PUBLIC "-//W3D//DTD HTML 4.01//EN">
145  <tr>  <html lang="ja">
146  <th colspan="2">教科</th>  <head>
147  <th>国語</th><th>数学</th><th>英語</th>  <title>配点換算</title>
148  <th>世界史</th><th>日本史</th><th>地理</th>  <link rev="made" href="mailto:w\@suika.fam.cx">
149  <th>物理</th><th>化学</th><th>生物</th>  <link rel="contents" href="http://tomikou.net/tokshuu/kanzan.html" title="換算点算出システム
150  </tr>  ">
151  </thead>  <link rel="contents" href="/chuubu/">
152  <tbody>  <link rel="stylesheet" href="/s/default/xhtml1" media="all">
153  <tr>  <style type="text/css" media="all">
154  <th rowspan="3">一次</th><th>持ち点</th>  input   {width: 3em}
155  <td><input type="text" name="kokugo1" value="$$p1{kokugo}"></td>  </style>
156  <td><input type="text" name="suugaku1" value="$$p1{suugaku}"></td>  </head>
157  <td><input type="text" name="eigo1" value="$$p1{eigo}"></td>  <body>
158  <td><input type="text" name="sekaishi1" value="$$p1{sekaishi}"></td>  <h1>配点換算</h1>
159  <td><input type="text" name="nihonshi1" value="$$p1{nihonshi}"></td>  <form action="kanzan" method="post" accept-charset="iso-2022-jp">
160  <td><input type="text" name="chiri1" value="$$p1{chiri}"></td>  <table>
161  <td><input type="text" name="butsuri1" value="$$p1{butsuri}"></td>  <thead>
162  <td><input type="text" name="kagaku1" value="$$p1{kagaku}"></td>  <tr>
163  <td><input type="text" name="seibutsu1" value="$$p1{seibutsu}"></td>  <th colspan="2">教科</th>
164  </tr>  <th>国語</th><th>数学</th><th>英語</th>
165  <tr>  <th>世界史</th><th>日本史</th><th>地理</th>
166  <th>配点</th>  <th>物理</th><th>化学</th><th>生物</th>
167  <td><input type="text" name="kokugoH1" value="$$h1{kokugo}"></td>  </tr>
168  <td><input type="text" name="suugakuH1" value="$$h1{suugaku}"></td>  </thead>
169  <td><input type="text" name="eigoH1" value="$$h1{eigo}"></td>  <tbody>
170  <td><input type="text" name="sekaishiH1" value="$$h1{sekaishi}"></td>  <tr>
171  <td><input type="text" name="nihonshiH1" value="$$h1{nihonshi}"></td>  <th rowspan="3">一次</th><th>持ち点</th>
172  <td><input type="text" name="chiriH1" value="$$h1{chiri}"></td>  <td><input type="text" name="kokugo1" value="$$p1{kokugo}"></td>
173  <td><input type="text" name="butsuriH1" value="$$h1{butsuri}"></td>  <td><input type="text" name="suugaku1" value="$$p1{suugaku}"></td>
174  <td><input type="text" name="kagakuH1" value="$$h1{kagaku}"></td>  <td><input type="text" name="eigo1" value="$$p1{eigo}"></td>
175  <td><input type="text" name="seibutsuH1" value="$$h1{seibutsu}"></td>  <td><input type="text" name="sekaishi1" value="$$p1{sekaishi}"></td>
176  </tr>  <td><input type="text" name="nihonshi1" value="$$p1{nihonshi}"></td>
177  <tr>  <td><input type="text" name="chiri1" value="$$p1{chiri}"></td>
178  <th>換算点</th>  <td><input type="text" name="butsuri1" value="$$p1{butsuri}"></td>
179  <td>$$k1{kokugo}</td><td>$$k1{suugaku}</td><td>$$k1{eigo}</td>  <td><input type="text" name="kagaku1" value="$$p1{kagaku}"></td>
180  <td>$$k1{sekaishi}</td><td>$$k1{nihonshi}</td><td>$$k1{chiri}</td>  <td><input type="text" name="seibutsu1" value="$$p1{seibutsu}"></td>
181  <td>$$k1{butsuri}</td><td>$$k1{kagaku}</td><td>$$k1{seibutsu}</td>  </tr>
182  </tr>  <tr>
183    <th>配点</th>
184  <tr>  <td><input type="text" name="kokugoH1" value="$$h1{kokugo}"></td>
185  <th rowspan="3">二次</th><th>持ち点</th>  <td><input type="text" name="suugakuH1" value="$$h1{suugaku}"></td>
186  <td><input type="text" name="kokugo2" value="$$p2{kokugo}"></td>  <td><input type="text" name="eigoH1" value="$$h1{eigo}"></td>
187  <td><input type="text" name="suugaku2" value="$$p2{suugaku}"></td>  <td><input type="text" name="sekaishiH1" value="$$h1{sekaishi}"></td>
188  <td><input type="text" name="eigo2" value="$$p2{eigo}"></td>  <td><input type="text" name="nihonshiH1" value="$$h1{nihonshi}"></td>
189  <td><input type="text" name="sekaishi2" value="$$p2{sekaishi}"></td>  <td><input type="text" name="chiriH1" value="$$h1{chiri}"></td>
190  <td><input type="text" name="nihonshi2" value="$$p2{nihonshi}"></td>  <td><input type="text" name="butsuriH1" value="$$h1{butsuri}"></td>
191  <td><input type="text" name="chiri2" value="$$p2{chiri}"></td>  <td><input type="text" name="kagakuH1" value="$$h1{kagaku}"></td>
192  <td><input type="text" name="butsuri2" value="$$p2{butsuri}"></td>  <td><input type="text" name="seibutsuH1" value="$$h1{seibutsu}"></td>
193  <td><input type="text" name="kagaku2" value="$$p2{kagaku}"></td>  </tr>
194  <td><input type="text" name="seibutsu2" value="$$p2{seibutsu}"></td>  <tr>
195  </tr>  <th>換算点</th>
196  <tr>  <td>$$k1{kokugo}</td><td>$$k1{suugaku}</td><td>$$k1{eigo}</td>
197  <th>配点</th>  <td>$$k1{sekaishi}</td><td>$$k1{nihonshi}</td><td>$$k1{chiri}</td>
198  <td><input type="text" name="kokugoH2" value="$$h2{kokugo}"></td>  <td>$$k1{butsuri}</td><td>$$k1{kagaku}</td><td>$$k1{seibutsu}</td>
199  <td><input type="text" name="suugakuH2" value="$$h2{suugaku}"></td>  </tr>
200  <td><input type="text" name="eigoH2" value="$$h2{eigo}"></td>  
201  <td><input type="text" name="sekaishiH2" value="$$h2{sekaishi}"></td>  <tr>
202  <td><input type="text" name="nihonshiH2" value="$$h2{nihonshi}"></td>  <th rowspan="3">二次</th><th>持ち点</th>
203  <td><input type="text" name="chiriH2" value="$$h2{chiri}"></td>  <td><input type="text" name="kokugo2" value="$$p2{kokugo}"></td>
204  <td><input type="text" name="butsuriH2" value="$$h2{butsuri}"></td>  <td><input type="text" name="suugaku2" value="$$p2{suugaku}"></td>
205  <td><input type="text" name="kagakuH2" value="$$h2{kagaku}"></td>  <td><input type="text" name="eigo2" value="$$p2{eigo}"></td>
206  <td><input type="text" name="seibutsuH2" value="$$h2{seibutsu}"></td>  <td><input type="text" name="sekaishi2" value="$$p2{sekaishi}"></td>
207  </tr>  <td><input type="text" name="nihonshi2" value="$$p2{nihonshi}"></td>
208  <tr>  <td><input type="text" name="chiri2" value="$$p2{chiri}"></td>
209  <th>換算点</th>  <td><input type="text" name="butsuri2" value="$$p2{butsuri}"></td>
210  <td>$$k2{kokugo}</td><td>$$k2{suugaku}</td><td>$$k2{eigo}</td>  <td><input type="text" name="kagaku2" value="$$p2{kagaku}"></td>
211  <td>$$k2{sekaishi}</td><td>$$k2{nihonshi}</td><td>$$k2{chiri}</td>  <td><input type="text" name="seibutsu2" value="$$p2{seibutsu}"></td>
212  <td>$$k2{butsuri}</td><td>$$k2{kagaku}</td><td>$$k2{seibutsu}</td>  </tr>
213  </tr>  <tr>
214  </tbody>  <th>配点</th>
215  </table>  <td><input type="text" name="kokugoH2" value="$$h2{kokugo}"></td>
216    <td><input type="text" name="suugakuH2" value="$$h2{suugaku}"></td>
217  <table>  <td><input type="text" name="eigoH2" value="$$h2{eigo}"></td>
218  <thead>  <td><input type="text" name="sekaishiH2" value="$$h2{sekaishi}"></td>
219  <tr>  <td><input type="text" name="nihonshiH2" value="$$h2{nihonshi}"></td>
220  <th></th><th>得点率</th><th>目標点</th><th colspan="2">差</th>  <td><input type="text" name="chiriH2" value="$$h2{chiri}"></td>
221  </tr>  <td><input type="text" name="butsuriH2" value="$$h2{butsuri}"></td>
222  </thead>  <td><input type="text" name="kagakuH2" value="$$h2{kagaku}"></td>
223  <tbody>  <td><input type="text" name="seibutsuH2" value="$$h2{seibutsu}"></td>
224  <tr>  </tr>
225  <th>一次</th>  <tr>
226  <td>$$k1{_PERCENT}</td>  <th>換算点</th>
227  <td><input type="text" name="OBJECT_1" value="$$p1{_OBJECT}"></td>  <td>$$k2{kokugo}</td><td>$$k2{suugaku}</td><td>$$k2{eigo}</td>
228  <td>$$k1{_DIFF}</td>  <td>$$k2{sekaishi}</td><td>$$k2{nihonshi}</td><td>$$k2{chiri}</td>
229  <td>$$k1{_DIFFMARK}</td>  <td>$$k2{butsuri}</td><td>$$k2{kagaku}</td><td>$$k2{seibutsu}</td>
230  </tr>  </tr>
231  <tr>  </tbody>
232  <th>二次</th>  </table>
233  <td>$$k2{_PERCENT}</td>  
234  <td><input type="text" name="OBJECT_2" value="$$p2{_OBJECT}"></td>  <table>
235  <td>$$k2{_DIFF}</td>  <thead>
236  <td>$$k2{_DIFFMARK}</td>  <tr>
237  </tr>  <th></th><th>得点率</th><th>目標点</th><th colspan="2">差</th>
238  <tr>  </tr>
239  <th>合計</th>  </thead>
240  <td>$misc{percent}</td>  <tbody>
241  <td>$misc{object}</td>  <tr>
242  <td>$misc{_DIFF}</td>  <th>一次</th>
243  <td>$misc{_DIFFMARK}</td>  <td>$$k1{_PERCENT}</td>
244  </tr>  <td><input type="text" name="OBJECT_1" value="$$p1{_OBJECT}"></td>
245  </tbody>  <td>$$k1{_DIFF}</td>
246  </table>  <td>$$k1{_DIFFMARK}</td>
247    </tr>
248  <p>  <tr>
249  <input type="hidden" name="newform" value="no">  <th>二次</th>
250  <input type="submit" value="OK">  <td>$$k2{_PERCENT}</td>
251  </p>  <td><input type="text" name="OBJECT_2" value="$$p2{_OBJECT}"></td>
252  </form>  <td>$$k2{_DIFF}</td>
253  EOH  <td>$$k2{_DIFFMARK}</td>
254  }  </tr>
255    <tr>
256  1;  <th>合計</th>
257    <td>$misc{percent}</td>
258    <td>$misc{object}</td>
259    <td>$misc{_DIFF}</td>
260    <td>$misc{_DIFFMARK}</td>
261    </tr>
262    </tbody>
263    </table>
264    
265    <p>
266    <input type="hidden" name="newform" value="no">
267    <input type="submit" value="OK">
268    </p>
269    </form>
270    
271    <div class="navigation">
272    [<a href="/gate/cvs/perl/kanzan/" lang="en">source</a>]
273    </div>
274    </body>
275    </html>
276    EOH
277    }
278    
279    sub __get_parameter () {
280      my @src;
281      
282      ## Query-string of Request-URI
283      my $qs = $main::ENV{QUERY_STRING};
284      push @src, $qs if (index ($qs, '=') > -1);
285      
286      ## Entity-body
287      if ($main::ENV{REQUEST_METHOD} eq 'POST') {
288        my $mt = $main::ENV{CONTENT_TYPE};
289        if ($mt =~ m<^application/(?:x-www|sgml)-form-urlencoded\b>) {
290          my $body;
291          read STDIN, $body, $main::ENV{CONTENT_LENGTH};
292          push @src, $body;
293        }
294      }
295      
296      my %temp_params;
297      for my $src (@src) {
298        for (split /[;&]/, $src) {
299          my ($name, $val) = split '=', $_, 2;
300          for ($name, $val) {
301            tr/+/ /;
302            s/%([0-9A-Fa-f][0-9A-Fa-f])/pack 'C', hex $1/ge;
303          }
304          $temp_params{$name} = $val;
305        }
306      }
307      \%temp_params;
308    }
309    
310    
311    =head1 LICENSE
312    
313    Copyright 2001-2003 Wakaba E<lt>w@suika.fam.cxE<gt>.
314    
315    This program is free software; you can redistribute it and/or modify
316    it under the terms of the GNU General Public License as published by
317    the Free Software Foundation; either version 2 of the License, or
318    (at your option) any later version.
319    
320    This program is distributed in the hope that it will be useful,
321    but WITHOUT ANY WARRANTY; without even the implied warranty of
322    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
323    GNU General Public License for more details.
324    
325    You should have received a copy of the GNU General Public License
326    along with this program; see the file COPYING.  If not, write to
327    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
328    Boston, MA 02111-1307, USA.
329    
330    =cut
331    
332    1;      # $Date$
333    

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.5

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24