Einlesen von Feldern II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

CutFields.om
PROCEDURE CutAndCopy(in: Streams.Stream;
                     out: Streams.Stream;
                     selected: SET; (* selected fields *)
                     fieldsep: CHAR) : BOOLEAN;
   VAR
      field: ARRAY 512 OF CHAR; fieldno: INTEGER;
      insertsep: BOOLEAN; fieldseps: Sets.CharSet;
BEGIN
   Sets.InitSet(fieldseps);
   Sets.InclChar(fieldseps, fieldsep);
   StreamDisciplines.SetFieldSepSet(in, fieldseps);
   LOOP
      fieldno := 0; insertsep := FALSE;
      WHILE Read.FieldS(in, field) DO
         IF fieldno IN selected THEN
            IF insertsep THEN
               Write.CharS(out, fieldsep);
            ELSE
               insertsep := TRUE;
            END;
            Write.StringS(out, field);
         END;
         INC(fieldno);
      END;
      IF in.eof THEN RETURN TRUE END;
      IF in.error THEN RETURN FALSE END;
      Read.LnS(in);
      IF in.eof THEN RETURN TRUE END;
      IF in.error THEN RETURN FALSE END;
      Write.LnS(out);
      IF out.errors > 0 THEN RETURN FALSE END;
   END;
END CutAndCopy;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005