Minor changes.
[egate.git] / fml / marc5.fml
1 # FML marc rutines - with passing of code and regular expressions
2 #
3 # $Id: marc5.fml,v 1.1 1995/03/02 08:06:12 adam Exp $
4 \func case tag indicator identifier \code max {
5         \if {\match \tag {\line\index 1}} {
6         \if {\match \indicator {\line\index 2}} {
7                 \foreach field {\line \index 3} {
8                         \if{\match \identifier \field\index 1} {
9                                 \set info {\field \index 2}
10                                 \if {{\strlen \info}\gt \max}
11                                 {
12                                         \set info {\strsub \info 0 50 ..}
13                                 }
14                                 \code
15                         }
16                 }
17         } }
18 }
19
20 \func casx tag identifier \pre \mid \end {
21         \set no {}
22         \if {\match \tag {\line\index 1}} {
23                 \foreach field {\line \index 3} {
24                         \if {\match \identifier \field\index 1} {
25                                 \set info {\field \index 2}
26                                 \if {\no} {
27                                         \mid
28                                         \incr \no
29                                 }
30                                 \else {
31                                         \set no 1
32                                         \pre
33                                 }
34                         }
35                 }
36         } 
37         \if {\no} {
38                 \end
39         }
40 }
41
42 \func marc rec \code {
43         \foreach line {\rec} {\code}
44 }
45
46 \func f0 record {
47         \marc {\record} {
48                 \case 245 .. [a] { \info } 60
49                 \case 260 .. c { - \info} 9
50         }
51         \n
52 }
53
54 \func f1 record {
55         \foreach line {\record} {
56                 \case 245 .. [ab] {\info\ } 400
57                 \casx 260 [abc] {\n\ \ \info} {\ \info} {}
58                 \casx 300 [ab] {- \info} {\ \info} {}
59         }
60         \n
61         \foreach line {\record} {
62                 \casx 700 a {\info} {\ ,\info} {\n}
63         }
64         \foreach line {\record} {
65                 \case 020 .. a {ISBN: \info\n} 50
66                 \case 022 .. a {ISSN: \info\n} 50
67                 \casx 050 [ab] {LC: \info} {\info} {\n}
68         }
69         \n
70 }