Fixed Makefile(s).
[yaz-moved-to-github.git] / asn / prt-arc.c
1 /*
2  * Copyright (c) 1995, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: prt-arc.c,v $
7  * Revision 1.1  1996-06-10 08:55:20  quinn
8  * Added Summary, OPAC
9  *
10  *
11  */
12
13 #include <proto.h>
14
15 /* ----------------------- Summary Record --------------- */
16
17 int z_FormatSpec(ODR o, Z_FormatSpec **p, int opt)
18 {
19     if (!odr_sequence_begin(o, p, sizeof(**p)))
20         return opt && odr_ok(o);
21     return
22         odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT,
23             1, 0) &&
24         odr_implicit(o, odr_integer, &(*p)->size, ODR_CONTEXT, 2, 1) &&
25         odr_implicit(o, odr_integer, &(*p)->bestPosn, ODR_CONTEXT, 3, 1) &&
26         odr_sequence_end(o);
27 }
28
29 int z_BriefBib(ODR o, Z_BriefBib **p, int opt)
30 {
31     if (!odr_sequence_begin(o, p, sizeof(**p)))
32         return opt && odr_ok(o);
33     return
34         odr_implicit(o, z_InternationalString, &(*p)->title, ODR_CONTEXT,
35             1, 0) &&
36         odr_implicit(o, z_InternationalString, &(*p)->author, ODR_CONTEXT,
37             2, 1) &&
38         odr_implicit(o, z_InternationalString, &(*p)->callNumber, ODR_CONTEXT,
39             3, 1) &&
40         odr_implicit(o, z_InternationalString, &(*p)->recordType, ODR_CONTEXT,
41             4, 1) &&
42         odr_implicit(o, z_InternationalString, &(*p)->bibliographicLevel,
43             ODR_CONTEXT, 5, 1) &&
44         odr_implicit_settag(o, ODR_CONTEXT, 6) &&
45         (odr_sequence_of(o, z_FormatSpec, &(*p)->format, &(*p)->num_format) ||
46             odr_ok(o)) &&
47         odr_implicit(o, z_InternationalString, &(*p)->publicationPlace,
48             ODR_CONTEXT, 7, 1) &&
49         odr_implicit(o, z_InternationalString, &(*p)->publicationDate,
50             ODR_CONTEXT, 8, 1) &&
51         odr_implicit(o, z_InternationalString, &(*p)->targetSystemKey,
52             ODR_CONTEXT, 9, 1) &&
53         odr_implicit(o, z_InternationalString, &(*p)->satisfyingElement,
54             ODR_CONTEXT, 10, 1) &&
55         odr_implicit(o, odr_integer, &(*p)->rank, ODR_CONTEXT, 11, 1) &&
56         odr_implicit(o, z_InternationalString, &(*p)->documentId,
57             ODR_CONTEXT, 12, 1) &&
58         odr_implicit(o, z_InternationalString, &(*p)->abstract, ODR_CONTEXT,
59             13, 1) &&
60         z_OtherInformation(o, &(*p)->otherInfo, 1) &&
61         odr_sequence_end(o);
62 }
63
64 /* ----------------------- Summary Record --------------- */
65
66 int z_CircRecord(ODR o, Z_CircRecord **p, int opt)
67 {
68     if (!odr_sequence_begin(o, p, sizeof(**p)))
69         return opt && odr_ok(o);
70     return
71         odr_implicit(o, odr_bool, &(*p)->availableNow, ODR_CONTEXT, 1, 0) &&
72         odr_implicit(o, z_InternationalString, &(*p)->availabilityDate,
73             ODR_CONTEXT, 2, 1) &&
74         odr_implicit(o, z_InternationalString, &(*p)->availableThru,
75             ODR_CONTEXT, 3, 1) &&
76         odr_implicit(o, z_InternationalString, &(*p)->restrictions,
77             ODR_CONTEXT, 4, 1) &&
78         odr_implicit(o, z_InternationalString, &(*p)->itemId, ODR_CONTEXT,
79             5, 1) &&
80         odr_implicit(o, odr_bool, &(*p)->renewable, ODR_CONTEXT, 6, 0) &&
81         odr_implicit(o, odr_bool, &(*p)->onHold, ODR_CONTEXT, 7, 0) &&
82         odr_implicit(o, z_InternationalString, &(*p)->enumAndChron,
83             ODR_CONTEXT, 8, 1) &&
84         odr_implicit(o, z_InternationalString, &(*p)->midspine, ODR_CONTEXT,
85             9, 1) &&
86         odr_implicit(o, z_InternationalString, &(*p)->temporaryLocation,
87             ODR_CONTEXT, 10, 1) &&
88         odr_sequence_end(o);
89 }
90
91 int z_Volume(ODR o, Z_Volume **p, int opt)
92 {
93     if (!odr_sequence_begin(o, p, sizeof(**p)))
94         return opt && odr_ok(o);
95     return
96         odr_implicit(o, z_InternationalString, &(*p)->enumeration,
97             ODR_CONTEXT, 1, 1) &&
98         odr_implicit(o, z_InternationalString, &(*p)->chronology, ODR_CONTEXT,
99             2, 1) &&
100         odr_implicit(o, z_InternationalString, &(*p)->enumAndChron,
101             ODR_CONTEXT, 3, 1) &&
102         odr_sequence_end(o);
103 }
104
105 int z_HoldingsAndCircData(ODR o, Z_HoldingsAndCircData **p, int opt)
106 {
107     if (!odr_sequence_begin(o, p, sizeof(**p)))
108         return opt && odr_ok(o);
109     return
110         odr_implicit(o, z_InternationalString, &(*p)->typeOfRecord,
111             ODR_CONTEXT, 1, 1) &&
112         odr_implicit(o, z_InternationalString, &(*p)->encodingLevel,
113             ODR_CONTEXT, 2, 1) &&
114         odr_implicit(o, z_InternationalString, &(*p)->format, ODR_CONTEXT,
115             3, 1) &&
116         odr_implicit(o, z_InternationalString, &(*p)->receiptAcqStatus,
117             ODR_CONTEXT, 4, 1) &&
118         odr_implicit(o, z_InternationalString, &(*p)->generalRetention,
119             ODR_CONTEXT, 5, 1) &&
120         odr_implicit(o, z_InternationalString, &(*p)->completeness,
121             ODR_CONTEXT, 6, 1) &&
122         odr_implicit(o, z_InternationalString, &(*p)->dateOfReport,
123             ODR_CONTEXT, 7, 1) &&
124         odr_implicit(o, z_InternationalString, &(*p)->nucCode, ODR_CONTEXT,
125             8, 1) &&
126         odr_implicit(o, z_InternationalString, &(*p)->localLocation,
127             ODR_CONTEXT, 9, 1) &&
128         odr_implicit(o, z_InternationalString, &(*p)->shelvingLocation,
129             ODR_CONTEXT, 10, 1) &&
130         odr_implicit(o, z_InternationalString, &(*p)->callNumber, ODR_CONTEXT,
131             11, 1) &&
132         odr_implicit(o, z_InternationalString, &(*p)->shelvingData,
133             ODR_CONTEXT, 12, 1) &&
134         odr_implicit(o, z_InternationalString, &(*p)->copyNumber, ODR_CONTEXT,
135             13, 1) &&
136         odr_implicit(o, z_InternationalString, &(*p)->publicNote, ODR_CONTEXT,
137             14, 1) &&
138         odr_implicit(o, z_InternationalString, &(*p)->reproductionNote,
139             ODR_CONTEXT, 15, 1) &&
140         odr_implicit(o, z_InternationalString, &(*p)->termsUseRepro,
141             ODR_CONTEXT, 16, 1) &&
142         odr_implicit(o, z_InternationalString, &(*p)->enumAndChron,
143             ODR_CONTEXT, 17, 1) &&
144         odr_implicit_settag(o, ODR_CONTEXT, 18) &&
145         (odr_sequence_of(o, z_Volume, &(*p)->volumes, &(*p)->num_volumes) ||
146             odr_ok(o)) &&
147         odr_implicit_settag(o, ODR_CONTEXT, 19) &&
148         (odr_sequence_of(o, z_CircRecord, &(*p)->circulationData,
149             &(*p)->num_circulationData) || odr_ok(o)) &&
150         odr_sequence_end(o);
151 }
152
153 int z_HoldingsRecord(ODR o, Z_HoldingsRecord **p, int opt)
154 {
155     static Odr_arm arm[] =
156     {
157         {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_HoldingsRecord_marcHoldingsRecord,
158             z_External},
159         {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_HoldingsRecord_holdingsAndCirc,
160             z_HoldingsAndCircData},
161         {-1, -1, -1, -1, 0}
162     };
163
164     if (!odr_initmember(o, p, sizeof(**p)))
165         return opt && odr_ok(o);
166     if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
167         return 1;
168     *p = 0;
169     return opt && odr_ok(o);
170 }
171
172 int z_OPACRecord(ODR o, Z_OPACRecord **p, int opt)
173 {
174     if (!odr_sequence_begin(o, p, sizeof(**p)))
175         return opt && odr_ok(o);
176     return
177         odr_implicit(o, z_External, &(*p)->bibliographicRecord,
178             ODR_CONTEXT, 1, 1) &&
179         odr_implicit_settag(o, ODR_CONTEXT, 2) &&
180         (odr_sequence_of(o, z_HoldingsRecord, &(*p)->holdingsData,
181             &(*p)->num_holdingsData) || odr_ok(o)) &&
182         odr_sequence_end(o);
183 }