Indicator field moved in MARC structure. The FML list representation
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 10 Feb 1995 16:52:08 +0000 (16:52 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 10 Feb 1995 16:52:08 +0000 (16:52 +0000)
of a MARC record has changed.

fml/fmlmarc.c
fml/marc.fml

index 0db5ee3..8ed4382 100644 (file)
@@ -2,7 +2,11 @@
  * FML interpreter. Europagate, 1995
  *
  * $Log: fmlmarc.c,v $
- * Revision 1.1  1995/02/10 15:50:56  adam
+ * Revision 1.2  1995/02/10 16:52:08  adam
+ * Indicator field moved in MARC structure. The FML list representation
+ * of a MARC record has changed.
+ *
+ * Revision 1.1  1995/02/10  15:50:56  adam
  * MARC interface implemented. Minor bugs fixed. fmltest can
  * be used to format single MARC records. New function '\list'
  * implemented.
@@ -18,6 +22,7 @@
 
 #include "fmlp.h"
 
+#if 0
 struct fml_node *marc_to_fml (Fml fml, Iso2709Rec rec)
 {
     struct fml_node *ptr_0 = NULL, *ptr_1;
@@ -53,7 +58,7 @@ struct fml_node *marc_to_fml (Fml fml, Iso2709Rec rec)
     }
     return ptr_0;
 }
-
+#endif
 
 static void add_string (const char *str, char **buf, int *max, int *size)
 {
@@ -88,23 +93,21 @@ char *marc_to_str (Fml fml, Iso2709Rec rec)
     {
         struct iso2709_field *fields;
 
-        add_string ("{", &buf, &max, &size);
+        add_string ("{\'", &buf, &max, &size);
         add_string (dir->tag, &buf, &max, &size);
+        add_string ("\'",&buf, &max, &size);
+        if (dir->indicator)
+        {
+            add_string ("\'", &buf, &max, &size);
+            add_string (dir->indicator, &buf, &max, &size);
+            add_string ("\'", &buf, &max, &size);
+        }
+        else
+            add_string ("{}", &buf, &max, &size);
         add_string ("{", &buf, &max, &size);
-        
         for (fields = dir->fields; fields; fields=fields->next)
         {
             add_string ("{", &buf, &max, &size);
-            
-            if (fields->indicator)
-            {
-                add_string ("\'", &buf, &max, &size);
-                add_string (fields->indicator, &buf, &max, &size);
-                add_string ("\'", &buf, &max, &size);
-            }
-            else
-                add_string ("{}", &buf, &max, &size);
-            add_string (" ", &buf, &max, &size);
             if (fields->identifier)
             {
                 add_string ("\'", &buf, &max, &size);
@@ -113,11 +116,9 @@ char *marc_to_str (Fml fml, Iso2709Rec rec)
             }
             else
                 add_string ("{}", &buf, &max, &size);
-            add_string (" ", &buf, &max, &size);
-            add_string ("\'", &buf, &max, &size);
+            add_string (" \'", &buf, &max, &size);
             add_string (fields->data, &buf, &max, &size);
-            add_string ("\'", &buf, &max, &size);
-            add_string ("}", &buf, &max, &size);
+            add_string ("\'}", &buf, &max, &size);
         }
         add_string ("}}\n", &buf, &max, &size);
     }
index bb86797..524efe6 100644 (file)
@@ -1,25 +1,14 @@
 # Fml scripts to display MARC records
-# $Id: marc.fml,v 1.1 1995/02/10 15:50:57 adam Exp $
-\func display rec {
-       Record\n 
-       \foreach line {\rec} {
-               \line \index 1 \ 
-               \foreach field {\line \index 2} {
-                       \field \index 1 
-                       \ $\field \index 2 
-                       \field \index 3
-               }
-               \n
-       }
-}
-
+# $Id: marc.fml,v 1.2 1995/02/10 16:52:08 adam Exp $
 \func f0 rec {
        \foreach line {\rec} {
                \line \index 1 \ 
-               \line \index 2 \index 1 \index 1
-               \foreach field {\line \index 2} {
-                       \ $\field \index 2\ 
-                       \field \index 3
+               \line \index 2 
+               \foreach field {\line \index 3} {
+                       \if {\field \index 1} {
+                               \ $\field \index 1\ 
+                       }
+                       \field \index 2
                }
                \n
        }