Import of revision 19971210+
[mspang/plceo1.git] / delterm.pl
1 #!/usr/bin/perl
2
3 # $Id: delterm.pl,v 1.1 1996/11/21 19:01:32 nborisov Exp $
4 # $Log: delterm.pl,v $
5 # Revision 1.1  1996/11/21 19:01:32  nborisov
6 # Initial revision
7 #
8 #
9 # deletes a term of membership for a specified user
10 # ie. sell back a term of membership (without any
11 # monetary accounting)
12 #
13
14 require 'database.pl';
15
16 $MEMDB = "memdb.new";
17
18 do { print <<USAGE; exit 1; } unless $#ARGV >= 1;
19 Usage:
20   $ARGV[0] memnum terms...
21  or
22   $ARGV[0] memnum term-term
23 USAGE
24
25
26 dbmtie($MEMDB, \%MEM) || die;
27
28 $memnum = shift @ARGV;
29
30 if (!defined $MEM{$memnum}) {
31         dbmuntie(\%MEM);
32         die;
33 }
34
35 if ($ARGV[0] =~ /([SWF]\d\d)-([SWF]\d\d)/i) {
36         $first = $1;
37         $last = $2;
38         $first =~ y/A-Z/a-z/;
39         $last =~ y/A-Z/a-z/;
40 # ranges with the first term greater than next aren't allowed
41         die "Invalid range" if CmpTerm($first, $last) > 0;
42         for($term = $first; $term ne $last; &IncTerm($term)) {
43                 push(@terms, $term);
44         }
45         push(@terms, $last);
46         #print "Term range resulted in @terms\n";
47 } else {
48         @terms = @ARGV;
49 }
50
51
52 @recs = split(/;/, $MEM{$memnum});
53
54 foreach $term (@terms) {
55         $term =~ y/A-Z/a-z/;
56
57         @mems = split(/,/, $MEM{$term});
58         @newmem = grep ($_ != $memnum, @mems) ;
59         $MEM{$term} = join(',', @newmem);
60
61         $recs[7] =~ s/$term,?//;
62 }
63
64 $MEM{$memnum} = join(';', @recs);
65
66 untie(%MEM);
67
68 exit 0;
69
70 sub IncTerm
71 {
72         $_[0] =~ y/wWsSfF/sSfFwW/;
73         local($tm, $yr) = $_[0] =~ /^([wWsSfF])(\d+)$/;
74         if ($tm =~ /[wW]/)
75         {
76                 $yr++;
77                 $yr %= 100;
78                 $yr = "0$yr" if $yr < 10;
79                 $_[0] = "$tm$yr";
80         }
81 }
82
83 sub CmpTerm
84 {
85         local($tm0, $yr0) = $_[0] =~ /^([wWsSfF])(\d+)$/;
86         local($tm1, $yr1) = $_[1] =~ /^([wWsSfF])(\d+)$/;
87         $tm0 =~ y/wWsSfF/001122/;
88         $tm1 =~ y/wWsSfF/001122/;
89         $yr0 += 100 if $yr0 < 90;
90         $yr1 += 100 if $yr1 < 90;
91         "$yr0.$tm0" <=> "$yr1.$tm1";
92 }
93