Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 4 Nächste Version anzeigen »


Allgemeine Informationen

Stand der Validation:

14.02.2023 (CBS-Release 01.2023)

Code für die Validationen im CBS

Changelog
/*  jo 20-04-2010   gnd   
    cz 16-12-2010   messages syntactic: messages 2-101 ergaenzt
    jo 20-07.2011   Weitere Ueberarbeitung, sonstige Normdaten
    jo 18-11-2011   039G und 070A/B erlaubte Felder
    jo 06-12-2011   Pruefung fuer 008@ erweitert, 047A/00 Bezeichnung neu
    cz 08-03-2012   Pruefungen VAL_BIB, VAL_REST auskommentiert (s. Mail Stefan Grund 06.03.2012)
                    VAL_GND: Pruefung auf 002@ Laenge > 2 entfernt
                    VAL_GND: ERLAUBTE_ZEICHEN_AN_POS nur, wenn 002@ Laenge > 2 
    cz 09-05-2012   VAL_GND: 008A Teilbestandskennzeichen "g" zugelassen fuer DBSM
    jo 14-06-2012   Einbinden von Code-Listen, offene Anforderungen, Ergaenzungen
    jo 06-08-2012   Validation fuer iln 6 ausschalten und Systematik 3 zulassen (#ILT-2837)
    cz 12-09-2012   table entitaetencodes: "kip" statt "kib"
    cz 18-09-2012   Aenderungen fuer Bibliotheksdatei (VAL_BIB)
    cz 19-09-2012   table tagset_Tp_Pflicht: 028R neu (ILT-2873)
    jo 31-10-2012   #ILT-2856 ($ in URL) und #ILT-2892 "uiz"
    cz 05-12-2012   table sprachencodes: "srp" neu (ILT-2925)
    cz 14-12-2012   VAL_BIB: 008H etc. nicht wiederholbar; 035E Pflichtfeld (ZDBANFORDERUNGEN-495)
    cz 21-12-2012   VAL_KLASS, VAL_CROSS, VAL_VERLEGER neu (ILT-2904)
    jo 07-02-2013   #ILT-2969 Tq zulassen, #ILT-1048 URL pruefen, #ILT-2780 Pflicht-Subf. 028*,
                    #ILT-2913 039G $a, #ILT-2928 039G/I schliessen sich aus
    cz 28-02-2013   table klasskennz: "kk" eingefuegt (ILT-2967)
    cz 19-03-2013   039G: Pflichtpruefung $a (vorlaeufig?) auskommentiert (ILT-2913)
    cz 25-03-2013   table klasskennz: "xw" statt "kk" eingefuegt (ILT-3018)
    cz 07-05-2013   Tn-Saetze: Liste nicht erlaubter Felder (ILT-2911)
    jo 29-07-2013   in 039G ist $a Pflicht, #ILT-3168 Anpassung 037H
    cz 04-09-2013   table typ_einrichtung erweitert (ILT-3178)
    cz 27-09-2013   PRUEF_ALL: Pruefung fuer 0**P neu (ILT-3183)
    cz 03-01-2014   VAL_BIB: Preufung fuer 035E $l neu (ILT-3242)
    cz 10-01-2013   PRUEF_ALL: Pruefung MODULO11 neu (ILT-3348)
    cz 10-01-2013   MODULO11: 10-stellige IDNs mit "0" an Pos.1 nicht erlaubt (ILT-3348)
    jo 08-05-2014   Neues Feld 010E
    cz 15-08-2014   Personenfelder allgemein: $6 eingefuegt (ILT-3611)
                    Bevorzugte Benennungen (0**A): Pruefung auf Pflichtsubfield $a neu (ILT-3611)
                    Verweisungen (0**@): Pruefung auf Pflichtsubfield $a neu (ILT-3611)
                    Hinweissatz: 041O $a oder $9 Pflicht (ILT-3611)
                    Relationierte Felder allgemein: $a oder $6 oder $9 Pflicht in 022R/029R/030R/041R/065R (ILT-3611)
                    Geo-Koordinaten GND (ILT-3607):
                    - 037H $2 neu
                    - 037H Pruefung $A Pos.1-3
                    - 037H Pruefung gemeinsames Vorkommen $defg
                    - 037H Pruefung Inhalt $u
    cz 30-09-2014   table entitaetencodes: "wid" neu (ILT-3707)
                    table transliteration_codes neu (ILT-3677)
 jo/cz 17-10-2014   Verweisungen/Bevorzugte Benennungen in einem anderen
                    Datenbestand: inhaltliche Pruefung $L/$U neu (ILT-3677)
    jo 24-11-2014  Felder 008A, 042A, 042B, 050F sind jetzt wiederholbar und
                   werden von anschliessender Onlineroutine zusammengepackt.
                   #ILT-3742 030@ auch bei 029A möglich.
    jo 02-12-2014  008A, 042A, 042B, 050F sind auch fuer 008A $s wiederholbar
    cz 15-12-2014  function VAL_KLASS: Abfrage auf Inhalt 008A $a geaendert (ILT-3695)
                   Tq-Saetze werden wie Tk-Saetze validiert (ILT-3695)
    jo 02-02-2015  #ILT-3859 010E ist nicht wiederholbar
    cz 21-09-2015  table entitaetencodes: "saf", "sad", "sam" neu (ILT-3948)
    jo 29-10-2015  #ILT-3936 Jahresangaben, #ILT-3928 032M/N/@ NICHT ERLAUBT
    cz 27-11-2015  table entitaetencodes: kif, kiv, kir, kim, sab, sag neu (ILT-4145)
                   function UNERLAUBTE_ZEICHENFOLGE_IN_SUBF neu; Pruefung auf unerlaubtes ", " in 028* $P (ILT-4146)
    jo 23.02.2016  #ILT-4270 Erweiterung 060R der Pruefung fuer $d
    cz 15-06-2016  VAL_GND: Pruefung 006Y mit table standardidentifier neu (ILT-3860)
    cz 21-06-2016  VAL_GND: Pruefungen 042B auf Pflichtfeld in Abhaengigkeit zu 008A entfernt(ILT-4467)
                   VAL_GND: Neue Pruefung auf Pflichtfeld 042B in Abhaengigkeit 002@ $0 Tb, Tf, Tg, Tp (ILT-4467)
    cz 01-07-2016  VAL_GND: temporaere Pruefung fuer 050C (ILT-4555)
    cz 04-07-2016  VAL_GND: temporaere Pruefung fuer 050C: "Bearbeitungssperre!" (ILT-4555)
    cz 07-07-2016  VAL_GND: Pruefung auf Pflichtfeld 042B nicht fuer 002@ $0 Tp (ILT-4467)
    cz 03-08-2016  DOL4_liste: "akti", "ortm", "obmo" entfernt (ILT-4571)
    cz 19-08-2016  VAL_GND: inhaltliche Pruefung 028R/029R/030R in Tu* neu (ILT-4496)
    cz 25-10-2016  VAL_GND: 022* $h und $l nicht wiederholbar (ILT-4471)
                   table tagset_GND_felder: 032M und 032N neu (ILT-4617)
                   tagset_Tp_Pflicht: 039G und 039I neu (ILT-4605)
    cz 25-01-2017  VAL_GND: Pruefung auf Pflichtfeld 042B auch fuer 002@ $0 Tp (ILT-4467)
    cz 21-04-2017  VAL_GND: Pruefung URL auf unerlaubte strings (ILT-4800)
    cz 24-05-2017  table entitaetencodes: "wil" entfernt (ILT-4963)
    cz 08-06-2017  MODULO11 in CHECK_IDN umbenannt (ILT-5010)
                   CHECK_IDN: Pruefung Ziffer oder "X" n $9 an letzter Position neu (ILT-5010)
                   message 16 korrigiert
    cz 11-08-2017  060R$4 "datw" auch bei Tb* zugelassen (ILT-5080)
    cz 21-08-2017  050G $b kein Pflichtunterfeld mehr (ILT-4591)
    cz 31-08-2018  008H $a: Pruefung Pos.8 (ILT-5688)
    cz 09-11-2018  060R$4: "datv" auch bei Ts* und 004B "sih" zugelassen (ILT-5573)
    cz 22-11-2018  060R$4: GENAU_EIN_SUBF_VON_X_PFLICHT neu (ILT-5665)
    cz 16-07-2019  semantic message 7 neu; 008A mit error 7 (ILT-6145)
    cz 18-07-2019  046G: P3-Bezeichnung geaendert: 672 statt 692 (ILT-6241)
    cz 14-11-2019  035Q neu + inhaltliche Pruefung $a $b (ILT-6245)
    cz 04-03-2020  table sprachencodes: "cnr" neu (ILT-6487)
    cz 10-07-2020  037H $u: https statt http (ILT-6586)
                   006Y: $S und $0 verpflichtend (ILT-6514)
                   006Y $0: muss mit alphanum. Zeichen beginnen, nicht "http" (ILT-6514)
                   DOL4_liste: "funk" entfernt (ILT-6555)
    cz 18-08-2020  table standardidentifier erweitert (MARC-Source-Code-Liste) (ILT-6748)
                   041R: wenn $4 "akad -> kein $9 (ILT-6749)
                 CBS-Release 06.2020
    cz 12-11-2020  DOL4_liste: "affi" entfernt (ILT-6747)
                   0**R: "affi" in $4 fuer 029R/030R zugelassen (ILT-6747)
    cz 19-11-2020  table standardidentifier: "ecli" und "ror" neu; "arid"->"arkid" (ILT-6867)
    cz 14-12-2020  046G nur in Tb, Tf, Tg, Tp (ILT-6819)
                 CBS-Release 03.2021
    cz 20-05-2021  table crosskennz: "ca" und "ce" neu (ILT-7084)
                 CBS-Release 04.2021
    cz 21-06-2021  0**P: $9 in Liste der Pflichtunterfelder neu (ILT-6918)
    cz 01-07-2021  table standardidentifier:"geprishisp", "knpam", "it-acnp" neu (ILT-7142)
                   060R$4: Pruefungen jetzt von Satzart ausgehend (ILT-7040)
    cz 16-08-2021  Allgemeine Feldpruefung: keine Pruefungen, wenn 682/039I $9 vorhanden (ILT-7147)
    cz 27-08-2021  060R: Pruefung Lebensdaten in $a und $b neu (ILT-6843)
    cz 15-09-2021  002@: "X" an Pos.2 zugelassen
    cz 23-09-2021  0**P: Pruefung EIN_SUBF_VON_X_PFLICHT nicht fuer Tc (ILT-7309)
                 CBS-Release 06.2021
    cz 02-11-2021  0**@: Pruefung Inhalt $4 fuer einzelne Felder (ILT-7021)
    cz 16-12-2021  028P: $9 in Liste der Pflichtunterfelder neu (ILT-6918)
                 CBS-Release 02.2022
    cz 20-03-2022  table crosskennz: erweitert (ILT-7456)
    cz 24-03-2022  table standardidentifier erweitert (ILT-7496)
                   050H in Tp, Tb, Tf, Tu, Tg nicht erlaubt (ILT-7413)
                   function tagname: 050H -> 677 statt 679
                   messagesi semantic: Text 3 geäert (ILT-7413))
                   Pruefung fuer 022R $4 nach Satzart neu (ILT-7344)
                   Pruefung fuer 030R $4 nach Satzart neu (ILT-7343)
    cz 11-04-2022  table DOL4_30R_Tf_liste korrigiert (ILT-7343)
                   messages semantic: 19 neu (ILT-7343)
                 CBS-Release 03.2022
    cz 02-05-2022  Pruefung 010E $e und $f neu (ILT-7566)
                   Abhaengigkeit von 060R $4 zu 004B (ILT-7565): teilweise
    cz 16-05-2022  046G: Pruefungen fuer $a,$f,$w,$0 neu (ILT-7350)
                 CBS-Release 04.2022
    cz 20-06-2022  DOL4_22at_liste: "tmzu" neu (ILT-7659)
    cz 07-07-2022  046G: Pruefungen fuer $0 neu (ILT-7350)
                 CBS-Release 05.2022
    cz 24-08-2022  046G: CHECK_STANDARDIDENTIFIER neu (ILT-7350)
                   table standardidentifier: "bdrc", "lmhl", "nlg" neu;
                                             "arkid" entfernt (ILT-7767)
                 CBS-Release 01.2023
    cz 09-02-2023  VAL_CROSS: Pruefung 0**P $u neu (ILT-7085)
Syntaktische Fehlermeldungen
 1  : "Verpflichtendes Unterfeld %2o$ in %1N# fehlt"                     "%1# V"
 2  : "%1N#: Unbekanntes Feld"                                           "%1# U"
 3  : "Feldbezeichnung %1N# zu kurz"                                     "%1# U"
 4  : "%1N#:Blank zwischen Feldbezeichnung und Inhalt fehlt"             "%1# I"
 5  : "Exemplarkategorie %1N# braucht vorausgehende 70XY"                "%1# E"
 6  : "Fehlerhafte Unterfeldstruktur in Feld %1N#: '%2s'"                "%1# I"
 7  : "Syntaxfehler in %1N#: Text erscheint auf Position %2n"            "%1# I"
 8  : "Unterfeld $%2s verpflichtend in %1N# hinter '%3s'"                "%1# I"
 9  : "Interpunktionq '%2s' verpflichtend in %1N# hinter '%3s'"          "%1# I"
 10 : "Unterfeld $%2s verpflichtend in %1N# vor '%3s'"                   "%1# I"
 11 : "korrektes Unterfeld (z.B. '%2s') fehlt in %1N# vor '%3s'"         "%1# I"
100 : "Feld %1N# darf nicht benutzt werden"                              "%1# O"
101 : "Feld %1N# darf nicht hinzugefuegt werden"                         "%1# O"
Semantische Fehlermeldungen
1  : "Feld %-1N# ist obligatorisch"                                      "%-1# V"
2  : "Feld %-1N# ist nicht wiederholbar"                                 "%-1# W"
3  : "Feld %-1N# ist bei dieser Satzart nicht erlaubt"                   "%-1# U"
4  : "Verpflichtendes Subfeld in Feld %-1N# fehlt"                       "%-1# V"
5  : "Feld %-3N# ist nicht erlaubt"                                      "%-3# U"
6  : "Unterfeldstruktur von Feld %-1N# ist nicht korrekt"                "%-1# U"
7  : "Feld %0N# ist obligatorisch"                                       "%0# V"

10 : "Subfeld '%-1$' in %-2N# ist inhaltlich nicht korrekt "             "%-2# I"
11 : "Die Laenge von Subfeld '%-1$' in %-2N# ist nicht korrekt"          "%-2# L"
12 : "Subfeld '%-1$' ist verpflichtend in %-2N# "                        "%-2# V"
13 : "Unzulaessige Feldwiederholung von Subfeld '%-1$' in %-2N# "        "%-2# Y"
14 : "Datum in Subfeld '%-1$' in %-2N# nur in Form JJJJ-MM-TT gueltig"   "%-2# I"
15 : "Subfeld '%-1$' in %-2N# muss mit 'http://', 'https://' oder 'ftp://' beginnen"  "%-2# I"
16 : "'%-1s' in %-2# muss numerisch mit richtiger Pruefziffer sein"      "%-2# I"
17 : "Datum oder Jahr '%-1s' in '%-2N#' ist nicht korrekt"               "%-2# I"
18 : "Subfeld '%-1$' ist nicht erlaubt in %-2N#"                         "%-2# U"
19 : "Subfeld '%-1$' in %-3N# ist inhaltlich nicht korrekt "             "%-2# I"
20 : "Subfeld '%-2$' in %-3N# ist inhaltlich nicht korrekt "             "%-2# I"
21 : "Falscher Standardidentifier in Subfeld '%-4$' in %-4N# "           "%-2# I"
27 : "Pos.%-2n von '%-3s' in %-3# muss numerisch oder '%-1s' sein "      "%-3# I"

30 : "'%-1s' innerhalb von Subfeld '%-2$' in %-3N# nicht erlaubt "       "%-3# I"
31 : "Eines der Subfelder '%-1$' oder '%-2$' in %-3N# ist Pflicht"       "%-3# I"
32 : " Subfelder '%-1$' und '%-2$' in %-3N# schliessen einander aus "    "%-3# I"

40 : "'%-1s' in Subfeld '%-2$' in %-3N# an Pos. %-4n  nicht erlaubt "    "%-3# I"

50 : "Nur eines der Felder %-1tN# ist erlaubt und muss vorkommen "       "%-1# V"
51 : "Eines der Felder %-1tN# ist Pflicht "                              "%-1# V"

88 : "Dieser Datensatz darf aus redaktionellen Gr\uenden nicht korrigiert oder erg\aenzt werden "   "X"
Tabelle mit aufgelöster Form der Feldbezeichnungen
 "001A",,,,, : "'Ersterfassung'",
 "001B",,,,, : "'Letzte \Aenderung'",
 "001D",,,,, : "'Status'",
 "002@",,,,, : "'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz'",
 "003@",,,,, : "'Interne Identifikationsnummer'",
 "003U",,,,, : "'URI'",
 "004B",,,,, : "'Entit\aetencodierung (Feld 008)'",
 "006Y",,,,, : "'Sonstige Standardnummer'",
 "007K",,,,, : "'GND-Nummer (Feld 035)'",
 "007N",,,,, : "'Alte Normnummer'",
 "007W",,,,, : "'SWD-Nr. aus ehemaligen GKD-Satz'",
 "007R",,,,, : "'GKD-Nummer aus ehemaligem SWD-Satz'",
 "007S",,,,, : "'PND-Nummer'",
 "008@",,,,, : "'\Aenderungscodierung'",
 "008A",,,,, : "'Teilbestandskennzeichen'",
 "008B",,,,, : "'Nutzungskennzeichen'",
 "008H",,,,, : "'Bibliothekskennung, -kennzeichen (Feld 092)'",
 "022@",,,,, : "'Variante Namen - Werk'",
 "022A",,,,, : "'Ansetzung - Werk'",
 "022R",,,,, : "'Relationiertes Werk'",
 "022P",,,,, : "'Alternative Vorzugsbenennung - Werk (Feld 730)'",
 "028@",,,,, : "'Variante Namen - Person (Feld 400)'",
 "028A",,,,, : "'Ansetzung - Person (Feld 100)'",
 "028R",,,,, : "'Relationierte Person (Feld 500)'",
 "028P",,,,, : "'Alternative Vorzugsbenennung - Person (Feld 700)'",
 "029@",,,,, : "'Variante Namen - K\oerperschaftsname (Feld 410)'",
 "029A",,,,, : "'Ansetzung - K\oerperschaftsname (Feld 110)'",
 "029R",,,,, : "'Relationierte K\oerperschaft (Feld 510)'",
 "029P",,,,, : "'Alternative Vorzugsbenennung - K\oerperschaft (Feld 710)'",
 "030@",,,,, : "'Variante Namen - Kongressname (Feld 411)'",
 "030A",,,,, : "'Ansetzung - Kongressname (Feld 111)'",
 "030R",,,,, : "'Relationierter Kongress (Feld 511)'",
 "030P",,,,, : "'Alternative Vorzugsbenennung - Kongress (Feld 711)'",
 "032L",,,,, : "'Content Type (Feld 336)'",
 "032M",,,,, : "'Media Type (Feld 337)'",
 "032N",,,,, : "'Carrier Type (Feld 338)'",
 "032Q",,,,, : "'Field of Activity (Feld 372)'",
 "032T",,,,, : "'Geschlechtsangabe (Feld 375)'",
 "032W",,,,, : "'Form Werk/Expression (Feld 380)'",
 "032X",,,,, : "'Besetzung Musik (Feld 382)'",
 "032Y",,,,, : "'Werkz\aehlung Musik (Feld 383)'",
 "032Z",,,,, : "' Tonart (Feld 384)'",
 "037G",,,,, : "'DDC-Notation (Feld 083)'",
 "037H",,,,, : "'Koordinaten'",
 "037I",,,,, : "'Veraltete DDC-Notation (Feld 089)'",
 "039I",,,,, : "'IDN des Zielsatzes bei Umlenkung (Feld 682)'",
 "039G",,,,, : "'Aufspaltung (Feld 689)'",
 "041@",,,,, : "'Variante Namen - Sachbegriff (Feld 450)'",
 "041A",,,,, : "'Ansetzung -  Sachbegriff (Feld 150)'",
 "041R",,,,, : "'Relationierter Sachbegriff (Feld 550)'",
 "041P",,,,, : "'Alternative Vorzugsbenennung - Sachbegriff (Feld 750)'",
 "041O",,,,, : "'Zu verkn\uepfende Deskriptoren (Feld 260)'",
 "042A",,,,, : "'GND Systematik (Feld 065)'",
 "042B",,,,, : "'L\aendercode (Feld 043)'",
 "042C",,,,, : "'Sprachencode (Feld 377)'",
 "046G",,,,, : "'Werke der Person (Feld 672)'",
 "047A",00,,,, : "'Allgemeine Kommentare'",
 "047A",01,,,, : "'Mailbox'",
 "047A",03,,,, : "'Katalogisierende Institution'",
 "047C",00,,,, : "'Bisherige Ansetzungsform der PND, GKD, SWD'",
 "047C",09,,,, : "'Fehlermeldungen aus maschineller Umsetzung'",
 "050C",,,,, : "'Redaktionelle Bemerkungen (Feld 667)'",
 "050D",,,,, : "'Benutzungshinweise (Feld 680)'",
 "050E",,,,, : "'Quellenangaben (Feld 670)'",
 "050F",,,,, : "'Negativ eingesehene Quellen (Feld 675)'",
 "050G",,,,, : "'Biografisch/historische Angaben (Feld 678)'",
 "050H",,,,, : "'Definition (Feld 677)'",
 "060R",,,,, : "'Relationierte Zeit (Feld 548)'",
 "065@",,,,, : "'Variante Namen - Geografikum (Feld 451)'",
 "065A",,,,, : "'Ansetzung - Geografikum (Feld 151)'",
 "065R",,,,, : "'Relationiertes Geografikum (Feld 551)'",
 "065P",,,,, : "'Alternative Vorzugsbenennung - Geografikum (Feld 751)'",
 "070B",09,,,, : "'Fehlermeldung'",
tagsets
table tagset_GND_entry       = "028A", "029A", "030A", "022A", "041A", "065A" ;

table tagset_Tp_Pflicht      = "028R", "029R", "030R", "041R", "060R", "065R",
                               "039G", "039I", "042C", "046G", "050G", "041O" ;

table tagset_BIB_Pflicht     = "029A", "035E" ;

table tagset_Tn_nicht_erlaubt = "004B", "028R", "029R", "030R", "032T", "041O", "041R", "042B", "042C", "050G", "060R", "065R" ;

table tagset_Tbfgpu_nicht_erlaubt = "050H" ;


table tagset_URL  = "050E", "050G",
                    "028P", "029P", "030P", "022P", "041P", "065P"
Liste der Entitätencodes
table entitaetencodes    = "gib", "gif", "gik", "gil", "gin", "gio",
                           "gir", "giv", "giw", "gix", "giz", "gxz",
                           "kif", "kim", "kio", "kip", "kir", "kiv", "kiz", "kxz", 
                           "pif", "pik", "pip", "pis", "piz", "pxg", "pxl", "pxs",
                           "saf", "sad", "sam", "saz", "sie", "sif", "sih", "sip", "sis", "siu",
                           "sab", "sag", "siw", "siz", "slz", "snz", "sxz", "szz",
                           "uiz",
                           "vie", "vif",
                           "wid", "wie", "wif", "wim", "win", "wip", "wis", "wit"
Liste der Sprachencodes
table sprachencodes =  "aar", "abk", "ace", "ach", "ada", "ady", "afa", "afh", "afr",
                       "ain", "aka", "akk", "alb", "ale", "alg", "alt", "amh",
                       "ang", "anp", "apa",
                       "ara", "arc", "arg", "arm", "arn", "arp", "art", "arw",
                       "asm", "ast", "ath", "aus", "ava", "ave", "awa", "aym", "aze", 
                       "bad", "bai", "bak", "bal", "bam", "ban", "baq", "bas", "bat",
                       "bej", "bel", "bem", "ben", "ber", "bho", 
                       "bih", "bik", "bin", "bis", "bla", "bnt", "bos", "bra", "bre", 
                       "btk", "bua", "bug", "bul", "bur", "byn",
                       "cad", "cai", "car", "cat", "cau", "ceb", "cel",
                       "cha", "chb", "che", "chg", "chi", "chk", "chm", "chn", "cho",
                       "chp", "chr", "chu", "chv", "chy", "cmc", "cnr", "cop", "cor", "cos",
                       "cpe", "cpf", "cpp", "cre", "crh", "crp", "csb", "cus", "cze", 
                       "dak", "dan", "dar", "day",
                       "del", "den", "dgr", "din", "div",  "doi", "dra", "dsb",
                       "dua", "dum", "dut", "dyu", "dzo",
                       "efi", "egy", "eka", "elx", "eng", "enm",
                       "epo", "est", "ewe", "ewo",
                       "fan", "fao", "fat", "fij", "fil", "fin", "fiu",
                       "fon", "fre", "frm", "fro", "frr", "frs", "fry", "ful", "fur",
                       "gaa", "gay", "gba", "gem", "geo", "ger", "gez", "gil",
                       "gla", "gle", "glg", "glv", "gmh", "goh", "gon", "gor", "got",
                       "grb", "grc", "gre", "grn", "gsw", "guj", "gwi", 
                       "hai", "hat", "hau", "haw", "heb", "her", "hil", 
                       "him", "hin", "hit", "hmn", "hmo", "hrv", "hsb", "hun", "hup",
                       "iba", "ibo", "ice", "ido", "iii", "ijo", "iku", "ile", "ilo", 
                       "ina", "inc", "ind", "ine", "inh", "ipk", "ira", "iro", "ita", 
                       "jav", "jbo", "jpn", "jpr", "jrb",
                       "kaa", "kab", "kac", "kal", "kam", "kan",
                       "kar", "kas", "kau", "kaw", "kaz", "kbd", 
                       "kha", "khi", "khm", "kho", "kik", "kin", "kir", "kmb",
                       "kok", "kom", "kon", "kor", "kos", "kpe", 
                       "krc", "krl", "kro", "kru", "kua", "kum", "kur", "kut",
                       "lad", "lah", "lam", "lao", "lat", "lav", "lez", 
                       "lim", "lin", "lit", "lol", "loz", "ltz",
                       "lua", "lub", "lug", "lui", "lun", "luo", "lus",
                       "mac", "mad", "mag", "mah", "mai", "mak", "mal",
                       "man", "mao", "map", "mar", "mas", "may",
                       "mdf", "mdr", "men", "mga", "mic", "min", "mis", "mkh",
                       "mlg", "mlt", "mnc", "mni", "mno", "moh", "mol", "mon", "mos", 
                       "mul", "mun", "mus", "mwl", "mwr", "myn", "myv", 
                       "nah", "nai", "nap", "nau", "nav", "nbl", "nde", "ndo", "nds", 
                       "nep", "new", "nia", "nic", "niu", "nno", 
                       "nob", "nog", "non", "nor", "nqo", "nso", "nub", "nwc",
                       "nya", "nym", "nyn", "nyo", "nzi",
                       "oci", "oji", "ori", "orm", "osa", "oss", "ota", "oto", 
                       "paa", "pag", "pal", "pam", "pan", "pap", "pau",
                       "peo", "per", "phi", "phn", "pli",
                       "pol", "pon", "por", "pra", "pro", "pus",
                       "que", 
                       "raj", "rap", "rar", "roa", "roh", "rom", "rum", "run", "rup", "rus",
                       "sad", "sag", "sah", "sai", "sal", "sam", "san", "sas", "sat", 
                       "scc", "scn", "sco", "scr", "sel", "sem", "sga", "sgn", "shn",
                       "sid", "sin", "sio", "sit", "sla", "slo", "slv", 
                       "sma", "sme", "smi", "smj", "smn", "smo", "sms",
                       "sna", "snd", "snk", "sog", "som", "son", "sot", 
                       "spa", "srd", "srn", "srp", "srr", "ssa", "ssw",
                       "suk", "sun", "sus", "sux", "swa", "swe", "syc", "syr",
                       "tah", "tai", "tam", "tat", "tel", "tem", "ter", "tet",
                       "tgk", "tgl", "tha", "tib", "tig", "tir", "tiv", "tkl",
                       "tlh", "tli", "tmh", "tog", "ton", "tpi",
                       "tsi", "tsn", "tso", "tuk", "tum", "tup", "tur", "tut", 
                       "tvl", "twi", "tyv",
                       "udm", "uga", "uig", "ukr", "umb", "und", "urd", "uzb", 
                       "vai", "ven", "vie", "vol", "vot",
                       "wak", "wal", "war", "was", "wel", "wen", "wln", "wol",
                       "xal", "xho",
                       "yao", "yap", "yid", "yor", "ypk",    
                       "zap", "zbi", "zen", "zha","znd", "zul", "zun", "zxx", "zza"
Liste der GND-Felder
table tagset_GND_felder  = "001A", "001B", "001D", "001E", "001U", "001X",
                           "002@", "003@", "003U", "004B", "006Y",
                           "007K", "007N", "007R", "007W",
                           "008@", "008A", "008B", "009B", "010E",
                           "022@", "022A", "022R", "022P",
                           "028A", "028@", "028R", "028P",
                           "029A", "029@", "029R", "029P",
                           "030A", "030@", "030R", "030P",
                           "032L", "032M", "032N",
                           "032T", "032W", "032X", "032Y", "032Z",
                           "037G", "037H", "037I", "038L", "039I", "039G",
                           "041A", "041@", "041R", "041P", "041O",
                           "042@", "042A", "042B", "042C",
                           "046Z", "046G", "047C", "047A",
                           "050C", "050D", "050E", "050F", "050G", "050H",
                           "060R", "065A", "065@", "065R", "065P",
                           "070A", "070B"
Liste aller $4-Codes für alle Normdaten
table DOL4_liste =

"abku", "adel", "adre", "adue", "akad", "anla", "anno", 
"arch", "arra", "aust", "aut1", "auta", "autf", "autg", "autw", "autz",

"bauh", "bear", "befr", "berc", "beru", "besi", "bete", "beza",
"bezb", "bezf", "bilh", "bubi",

"chre", "comp", 

"datb", "datf", "datj", "datl", "dats", "datu", "datv", "datw",
"datx", "datz", "desi", "dich", "druc", 

"erfi",

"feie", "foto",

"geoa", "geow", "gest", "grav", "grue",

"hers", "hrsg",

"illu", "istm", "istr",

"kame", "kart", "kom1", "koma", "komg", "komm", "komw", "komz",
"kopi", "korr", "kue1", "kueg", "kuen", "kuew", "kuez", "kura",

"leih", "libr", "lith", 

"malr", "mitg", "musi", 

"naaf", "nach", "nafr", "nasp", "nauv",
"navo", "nawi", "nazw", "ngkd", "nswd", 

"obal", "obge", "obin", "obpa", "orta", "ortb",
"ortc", "ortf", "ortg", "orth", "orts", "ortv", "ortw", "ortx",

"pseu", "punk",

"radi", "reda", "regi", "rela", "rest",

"saen", "saml", "skri", "spio", "spon", "spra",
"spre", "stif", "stud",

"them",

"uebe", "urhe",

"vbal", "vera", "verr", "vfrd", "vorg", "vorl", 

"werk", "widm" 
Liste der $4-Codes für einzelne Felder und/oder Satzarten
table DOL4_22at_liste =
"abku", "nafr", "nasp", "tmzu"
 ;

table DOL4_28at_liste =
"nafr", "nasp", "navo", "nawi", "pseu"
 ;

table DOL4_29at_liste =
"abku", "nafr", "nasp", "nauv", "ngkd", "nswd", "spio"
 ;

table DOL4_30at_liste =
"abku", "nafr", "nasp", "nauv", "ngkd", "nswd"
 ;

table DOL4_65at_liste =
"abku", "naaf", "nafr", "nasp", "nauv", "ngkd", "nswd", "spio"
 ;

table DOL4_22R_Tb_liste =
"rela", "them", "vbal"
 ;

table DOL4_22R_Tf_liste =
"anla", "rela", "them", "vbal"
 ;

table DOL4_22R_Tg_liste =
"anla", "rela", "vbal"
 ;

table DOL4_22R_Tp_liste =
"rela", "them", "vbal"
 ;

table DOL4_22R_Ts_liste =
"obal", "rela", "them", "vbal"
 ;

table DOL4_22R_Tu_liste =
"anla", "nach", "obpa", "rela", "them", "vbal", "vorg", "vorl", "werk"
 ;

table DOL4_30R_Tb_liste =
"adue", "befr", "besi", "korr", "rela", "them", "vbal"
 ;

table DOL4_30R_Tf_liste =
"adue", "affi", "korr", "nach", "nazw", "obpa", "rela", "them", "vbal", "vorg"
 ;

table DOL4_30R_Tg_liste =
"befr", "besi", "rela", "vbal"
 ;

table DOL4_30R_Tp_liste =
"affi", "korr", "rela", "vbal"
 ;

table DOL4_30R_Ts_liste =
"befr", "besi", "grue", "rela", "them", "vbal"
 ;

table DOL4_30R_Tu_liste =
"aut1", "auta", "befr", "besi", "bete", "rela", "them", "vbal"
Liste der Codes für 010E $e
table DOLe_10E =
"kids", "rak", "rakwb", "rda", "rna"
Liste der Notationen der GND-Systematik
table systematik =
        "00", "00p", "00m",
        "1",
        "2.1", "2.1p", "2.2", "2.2p", "2.3", "2.3p",
        "3", "3.1", "3.1p", "3.2", "3.2a", "3.2aa", "3.2b", "3.2ba", "3.2p",
        "3.3", "3.3a", "3.3b", "3.3c", "3.4a", "3.4b", "3.4c",
        "3.5", "3.5a", "3.5ba", "3.5bb", "3.5ca", "3.5cb",
        "3.6", "3.6a", "3.6b", "3.6c", "3.6p",
        "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "4.7", "4.7p",
        "5.1a", "5.1b", "5.2", "5.3", "5.4", "5.5", "5.5p", "5.6", "5.7", "5.7p",
        "6.1a", "6.1b", "6.1p", "6.2a", "6.2b", "6.3a", "6.3b",
        "6.4", "6.4p", "6.5", "6.6", "6.7", "6.7p", "6.8", "6.8p",
        "7.1a", "7.1b", "7.2", "7.2a", "7.2b", "7.2c",
        "7.3", "7.4", "7.5a", "7.5b", "7.5c", "7.5d", "7.5e", "7.5f",
        "7.6a", "7.6b", "7.6c", "7.7a", "7.7b", "7.8a", "7.8b", "7.9a", "7.9b",
        "7.10a", "7.10b", "7.11a", "7.11b", "7.11c",
        "7.12", "7.12a", "7.12b", "7.12c", "7.12d", "7.12e", "7.13", "7.14", "7.14p",
        "7.15a", "7.15b", "7.15p",
        "8.1", "8.1p", "8.2a", "8.2b", "8.3", "8.4", "8.4p",
        "9.1", "9.1a", "9.1b", "9.1c", "9.2", "9.2a", "9.2b",
        "9.3a", "9.3b", "9.3c", "9.3d", "9.3e", "9.4a", "9.4ab", "9.4b",
        "9.5a", "9.5b", "9.5c", "9.5p",
        "10.1", "10.1a", "10.1b", "10.1c", "10.1p",
        "10.2a", "10.2aa", "10.2ab", "10.2ac", "10.2b", "10.2c",
        "10.2d", "10.2da", "10.2db", "10.2dc", "10.2dp",
        "10.2e", "10.2ea", "10.2eb", "10.2ep",
        "10.3a", "10.3b", "10.3c", "10.3d", "10.3p",
        "10.4", "10.4p", "10.5", "10.5p", "10.6a", "10.6b", "10.6p",
        "10.7a", "10.7b", "10.7p", "10.8a", "10.8b", "10.8p",
        "10.9a", "10.9b", "10.9c", "10.9p", "10.10", "10.10p",
        "10.11a", "10.11b", "10.11c", "10.11d", "10.11e", "10.11f", "10.11g", "10.11h",
        "10.11i", "10.11m", "10.11p", "10.12", "10.12a", "10.12b", "10.12p",
        "10.13a", "10.13b", "10.13p", "10.14", "10.14p", "10.15", "10.15p",
        "11.1a", "11.1b", "11.1c", "11.2a", "11.2b", "11.2c", "11.2p",
        "11.3a", "11.3b", "11.3c", "11.3d",
        "12.1a", "12.1b", "12.1p", "12.2a", "12.2b", "12.2p", "12.3",
        "12.4", "12.4p", "12.4y",
        "13.1a", "13.1b", "13.1bp", "13.1c", "13.1cp", "13.1cy", "13.2", "13.2p",
        "13.3", "13.4", "13.4p", "13.5", "13.5p", "13.6", "13.6p", "13.7", "13.7p",
        "14.1", "14.2", "14.3", "14.4", "14.4p",
        "15.1", "15.1p", "15.2", "15.2p", "15.3", "15.3p", "15.4", "15.4p",
        "16.1", "16.1p", "16.2", "16.3", "16.4", "16.4a", "16.4b", "16.4c", "16.4d",
        "16.5", "16.5p", "17.1", "17.2", "17.3", "17.4", "17.4p",
        "18", "18p",
        "19", "19.1a", "19.1b", "19.1c", "19.1d", "19.1dp", "19.2", "19.2p",
        "19.3", "19.3p", "19.4a", "19.4b", "19.4c", "19.4d", "19.4p", "19.5", "19.5p",
        "20", "20p",
        "21.1", "21.2", "21.3", "21.4", "21.5", "21.5p",
        "22.1", "22.2", "22.3", "22.4", "22.5", "22.5p",
        "23.1a", "23.1b", "23.2", "23.3", "23.4", "23.4p",
        "24.1", "24.2", "24.2a", "24.2b", "24.3", "24.3p",
        "25.1", "25.2", "25.2a", "25.2b", "25.3", "25.3p",
        "26", "26p",
        "27.1a", "27.1b", "27.2", "27.3a", "27.3b", "27.3c", "27.3d", "27.3e",
        "27.4", "27.5", "27.6", "27.7", "27.8a", "27.8b",
        "27.9", "27.9a", "27.9b", "27.9c", "27.9d", "27.9e", "27.9f",
        "27.10", "27.11", "27.12", "27.13", "27.14", "27.15", "27.16", "27.17",
        "27.18", "27.19", "27.20", "27.20p", "27.21",
        "28", "28p",
        "29", "29p",
        "30", "30m", "30p",
        "31.1a", "31.1b", "31.1c", "31.1d", "31.1e", "31.2", "31.3a", "31.3ab",
        "31.3b", "31.3p", "31.4", "31.5", "31.6", "31.7", "31.8a", "31.8b",
        "31.9a", "31.9b", "31.10", "31.11", "31.12", "31.13", "31.14", "31.15",
        "31.16", "31.16p",
        "32.1a", "32.1b", "32.2", "32.3", "32.4", "32.5", "32.6", "32.7", "32.8",
        "32.9", "32.10", "32.10p",
        "33.1", "33.2", "33.3", "33.3p",
        "34.1", "34.2", "34.3", "34.3p",
        "35", "35p",
        "36", "36p"
Liste der Codes für 037H $2
table karto_quelle =  "aadcg", "acgms", "ahcb", "bcgnis", "bound",
                                "cbf", "cga", "cgndb", "cgotw", "csa", "cwg",
                                "dkcaw", "erpn", "esriarc", "edm", "fnib",
                                "gbos", "geoapn", "geobase", "geogndb", "geonames",
                                "geonet", "gettytgn", "ghpn", "glogaz", "gnis",
                                "gnrnsw", "goj", "gooearth", "gpn", "gufn",
                                "inmun", "knab", "lwip", "mapland", "mwgd",
                                "natmap", "nlaci", "nsgn", "ntpnr", "nzggn", "nzpnd",
                                "other", "peakbag", "pnosa", "pwme", "qpns",
                                "rsd", "sagns", "taw", "usdp", "volwrld", "vow",
                                "wdpa", "whl", "wikiped", "wld", "wpntpl"
Liste der Schriftcodes
table transliteration_codes = 
"Afak",
"Aghb",
"Ahom",
"Arab",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Bass",
"Batk",
"Beng",
"Blis",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Cirt",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Dupl",
"Egyd",
"Egyh",
"Egyp",
"Elba",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Gran",
"Grek",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hans",
"Hant",
"Hatr",
"Hebr",
"Hira",
"Hluw",
"Hmng",
"Hrkt",
"Hung",
"Inds",
"Ital",
"Java",
"Jpan",
"Jurc",
"Kali",
"Kana",
"Khar",
"Khmr",
"Khoj",
"Knda",
"Kore",
"Kpel",
"Kthi",
"Lana",
"Laoo",
"Latf",
"Latg",
"Latn",
"Lepc",
"Limb",
"Lina",
"Linb",
"Lisu",
"Loma",
"Lyci",
"Lydi",
"Mahj",
"Mand",
"Mani",
"Maya",
"Mend",
"Merc",
"Mero",
"Mlym",
"Modi",
"Mong",
"Moon",
"Mroo",
"Mtei",
"Mult",
"Mymr",
"Narb",
"Nbat",
"Nkgb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Palm",
"Pauc",
"Perm",
"Phag",
"Phli",
"Phlp",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Qaaa",
"Qabx",
"Rjng",
"Roro",
"Runr",
"Samr",
"Sara",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sidd",
"Sind",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Syre",
"Syrj",
"Syrn",
"Tagb",
"Takr",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Teng",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Tirh",
"Ugar",
"Vaii",
"Visp",
"Wara",
"Wole",
"Xpeo",
"Xsux",
"Yiii",
"Zinh",
"Zmth",
"Zsym",
"Zxxx",
"Zyyy"
Liste der Standardidentifier
table standardidentifier = 
"agorha",
"agrovoc",
"allmovie",
"allmusic",
"allocine",
"amnbo",
"ansi",
"archinl",
"archinpe",
"archinpr",
"archna",
"archns",
"ark",
"artsy",
"artukart",
"artukaw",
"atg",
"balat",
"bbcth",
"bdrc",
"bdusc",
"belvku",
"belvwrk",
"benezit",
"bew",
"bfi",
"bibbi",
"bigenc",
"bnfcg",
"bpn",
"bsi",
"cabt",
"cana",
"cantic",
"cbwpid",
"cerl",
"cgndb",
"clara",
"cnbksy",
"csfdcz",
"danacode",
"darome",
"datoses",
"discogs",
"dkfilm",
"dma",
"doi",
"dpb",
"ean",
"ecli",
"eidr",
"emlo",
"fast",
"fidecp",
"filmaff",
"filmport",
"findagr",
"fisa",
"freebase",
"fuoc",
"gacsch",
"gec",
"geogndb",
"geonames",
"geprishisp",
"gettyaat",
"gettyart",
"gettyobj",
"gettytgn",
"gettyulan",
"gnd",
"gnis",
"goodra",
"gtaa",
"gtin-14",
"hdl",
"iaafa",
"ibdb",
"iconauth",
"idref",
"imdb",
"isan",
"isbn",
"isbn-a",
"isbnre",
"isbnsbn",
"isfdbau",
"isfdbaw",
"isfdbma",
"isfdbpu",
"isil",
"ismn",
"isni",
"iso",
"isrc",
"issn",
"issn-l",
"issue-number",
"istc",
"iswc",
"it-acnp",
"itar",
"kda",
"kdw",
"kinopo",
"knpam",
"kulturnav",
"lattes",
"lccn",
"lcmd",
"lei",
"libaus",
"lmhl",
"local",
"margaz",
"matrix-number",
"mesh",
"mocofo",
"moma",
"morana",
"moviemetf",
"moviemetr",
"munzing",
"muscl",
"music-plate",
"music-publisher",
"musicb",
"nacat",
"nagb",
"natgazfid",
"nga",
"ngva",
"ngvw",
"nipo",
"nlg",
"nndb",
"npg",
"nzggn",
"odnb",
"ofdb",
"onix",
"opensm",
"orcid",
"orgnr",
"oxforddnb",
"pcadbu",
"pcadpe",
"pcadpf",
"permid",
"picnypl",
"pleiades",
"pnta",
"porthu",
"prabook",
"rbmsbt",
"rbmsgt",
"rbmspe",
"rbmsppe",
"rbmspt",
"rbmsrd",
"rbmste",
"rid",
"rkda",
"ror",
"s2a3bd",
"saam",
"scholaru",
"scope",
"scopus",
"sici",
"smgp",
"snac",
"spotify",
"sprfbsb",
"sprfbsk",
"sprfcbb",
"sprfcfb",
"sprfhoc",
"sprfoly",
"sprfpfb",
"ssaut",
"stock-number",
"strn",
"stw",
"svfilm",
"tatearid",
"theatr",
"tpce",
"trove",
"unescot",
"upc",
"uri",
"urn",
"vd16",
"vd17",
"vd18",
"vgmdb",
"viaf",
"videorecording-identifier",
"wikidata",
"wndla",
"xgamea",
"zbaut"
Verbotene Textstrings bei URLs
table forbidden_strings_URL =
"http://http://",
"http://https://"
Allgemeine Funktionen: Felder
      --------  allgemeine Funktionen: Felder       -----------------      
 */


function PFLICHT_1_MAL(feld : string) = 
    E(0 to 1)(tag:#****: TAGCODE(tag) = feld)                  error 2
 &  E(1)(tag:#****: TAGCODE(tag) = feld)                       error 1 
;

function NICHT_WIEDERHOLBAR(feld : string) =
    E(0 to 1)(tag:#****: TAGCODE(tag) = feld)                  error 2
;

function LISTE_PFLICHFELDER(tagset : table) =
    E(1 to)(x:#****: TAGCODE(x) in tagset)                     error 51
;

function LISTE_FELDER_NICHT_ERLAUBT(tagset : table) =
    A(x:#****: tagset(TAGCODE(x)) = 0                          error 3) 
;

function LISTE_PFLICHFELDER_EINMAL(tagset : table) =
    E(1)(x:#****: TAGCODE(x) in tagset)                        error 50
;

function PFLICHT_WIEDERHOLBAR(feld : string) =
    E(1 to 50)(x:#****: TAGCODE(x) = feld)                     error 1
Allgemeine Funktionen: Subfelder
      --------  allgemeine Funktionen: Subfelder       -----------------     
  */



function PFLICHT_SUBF(tag : #, subfcode : string) =
    E(s:$* in tag: SUBFCODE(s) = subfcode)                       error 12
;

function FORBID_SUBF(tag : #, subfcodes : string) =
    A(s:$* in tag: !(SUBFCODE(s) in subfcodes)) error 18
;

function UNERLAUBTE_ZEICHEN_IN_SF(tag : # , subf : $, str : string) =
    !(str in subf)                                               error 30   
;

function SUBF_NICHT_WIEDERHOLBAR(tag : # , subf : $) =
      count(x:$* in tag:SUBFCODE(subf) = SUBFCODE(x))  < 2       error 13
;

function JAHR_PRUEFUNG (s : string) =
               (((s(1) != "v") => (LEN(s) < 5) 
                 & (s(1) = "v") => (LEN(s) < 6))                error 11)
             & ((LEN(s) = 1 => s = "\d")
                & (LEN(s) > 1 => (s(1) in "vX\d"))
                & A(pos: number 2 to LEN(s):s(pos) in "X\d") )   error 17
;

function DATUM_PRUEFUNG(s : $) =
           if (s = "\d\d.\d\d.\d\d\d\d")
                    (DATE_OK(s, "dd.mm.yyyy")        error 17)
           else if (s = "\d\d.\d\d.v\d\d\d\d")
                    (DATE_OK(s, "dd.mm.vyyyy")       error 17)
 /*    Pos. 1 kann nie $ sein, deshalb Fehler bei falscher Laenge   */
           else if (LEN(s) > 11 | LEN(s) < 7)
                    (s(1) = "$"                      error 11)
           else ((s(1) in "0123X" & s(2) in "\dX" & s(3) = "." & s(4) in "01X"
                  & s(5) in "\dX" &  s(6) = ".")     error 17
                & JAHR_PRUEFUNG(s(7 to)))
;

function NUR_JAHR (tag : #) =
     A(sub:$* in tag:SUBFCODE(sub) in "abc" => JAHR_PRUEFUNG(sub))     
; 
function DATUM_EXAKT (tag : #) =
     A(sub:$* in tag:SUBFCODE(sub) in "abc" => DATUM_PRUEFUNG(sub))
;
function DATUM_VARIANTEN (tag : #) =
     A(sub:$* in tag:SUBFCODE(sub) in "abc" =>
       if (LEN(sub) > 5) DATUM_PRUEFUNG(sub) else JAHR_PRUEFUNG(sub))
;

/* Jahresvergleich \d\d\d\d und v\d\d\d\d */
function VERGLEICH_JAHRE (subf1 : $, subf2 : $) =
     /* Jahre vor Christi Geburt */
     (subf1(1) = "v" & subf2(1) = "v" & VALID(TO_NUM(subf1(2 to LEN(subf1)))) & VALID(TO_NUM(subf2(2 to LEN(subf2)))))
                                                     => TO_NUM(subf1(2 to LEN(subf1))) >= TO_NUM(subf2(2 to LEN(subf2))) error 10

     /* Jahre nach Christi Geburt */
     & (subf1(1) = "\d" & subf2(1) = "\d" & VALID(TO_NUM(subf1)) & VALID(TO_NUM(subf2))) 
                                                     => TO_NUM(subf1) <= TO_NUM(subf2) error 10
;

/* Datumsvergleich "\d\d.\d\d.\d[\d\d\d]" und "\d\d.\d\d.v\d[\d\d\d]" */
function VERGLEICH_DATUM_EXAKT (subf1 : $, subf2 : $) =
     /* Jahre vor Christi Geburt */
     (subf1(7) = "v" & subf2(7) = "v" & VALID(TO_NUM(subf1(8 to LEN(subf1)))) & VALID(TO_NUM(subf2(8 to LEN(subf2)))))
                                                     => TO_NUM(subf1(8 to LEN(subf1))) >= TO_NUM(subf2(8 to LEN(subf2))) error 10
     /* Jahre nach Christi Geburt */
     & (subf1(1) = "\d" & subf2(1) = "\d" => VALID(TO_NUM(subf1(7 to LEN(subf1)))) & VALID(TO_NUM(subf2(7 to LEN(subf2)))))
                                                     => TO_NUM(subf1(7 to LEN(subf1))) <= TO_NUM(subf2(7 to LEN(subf2))) error 10
;

function CHECK_LEBENSDATEN (subf1 : $, subf2 : $) =
     (LEN(subf1) < 6 & LEN(subf2) < 6)  => VERGLEICH_JAHRE(subf1, subf2)
     & (LEN(subf1) > 6 &  LEN(subf2) > 6) => VERGLEICH_DATUM_EXAKT (subf1, subf2)
;

/* ----------
            PARAMETER: Position im Subfeld, Feld, Subfeld, Vergleichsstring 
------------- */

function UNERLAUBTE_ZEICHEN_AN_POS(pos: number, tag: # , subf : $, str : string) =
    if (pos > 0)
       (!(str = subf(pos for LEN(str)))                          error 40)
    else (0 = 0)
;

/* ----------
            PARAMETER: Feld, Subfeld, Vergleichsstring 
------------- */

function UNERLAUBTE_ZEICHENFOLGE_IN_SUBF(tag : #, subf : $, str : string) =
    A(pos:number 1 to LEN(subf):
         (subf(pos) = str(1) & subf(pos+1) = str(2))  =>   FEHLER_30(tag ,subf, str)
      )
;

/* ----------
            PARAMETER: Laenge des zu pruefenden Strings, Vergleichsstring,
                                  Position im Feld, Feld, Subfeld, String an Pos. 
------------- */
function ERLAUBTE_ZEICHEN_AN_POS
      (lang : number, str : string, pos: number, tag: # , subf : $, aus : string) =
    if (pos > 0)
       ((subf(pos for lang) in str)                              error 40)
    else (0 = 0)
;

function EIN_SUBF_VON_2_PFLICHT(tag:#, subcode1 : string, subcode2 : string) = 
    E(s:$* in tag: SUBFCODE(s) = subcode1 | SUBFCODE(s) = subcode2)        error 31
;

function EIN_SUBF_VON_X_PFLICHT(subcodes : string, tag:#) =
    count(subf:$* in tag:SUBFCODE(subf) in subcodes) > 0      error 4
;

function GENAU_EIN_SUBF_VON_X_PFLICHT(subcodes : string, tag:#) =
    count(subf:$* in tag:SUBFCODE(subf) in subcodes) = 1      error 6
;

function SUBF_NICHT_ZUSAMMEN(tag:#, subcode1 : string, subcode2 : string) =
   ( E(s:$* in tag: SUBFCODE(s) = subcode1)
 &&  E(s:$* in tag: SUBFCODE(s) = subcode2)) => 0 = 1              error 32
;

function POS_ISDIGIT(subf : $, pos : number) =
    subf(pos) = "\d" error 10
;

function POS_ISDIGIT_OR_IN(subf : $, pos : number, set : string) =
    (subf(pos) = "\d" | subf(pos) in set) error 27
;

function CHECK_IDN(tag:#, subf : $) =
    ((LEN(subf) < 11) & (LEN(subf) > 8))                       error 11
    & MOD11(subf, "")                                          error 16
    & (LEN(subf) = 10) => subf(1) != "0"                       error 10
    & LEN(subf) = 9 => ERLAUBTE_ZEICHEN_AN_POS(1, "\dX", 9, tag, subf, subf(9))
    & LEN(subf) = 10 => ERLAUBTE_ZEICHEN_AN_POS(1, "\dX", 10, tag, subf, subf(10))
;

function CHECK_KOORDINATEN (tag: # , subf : $) =
           (LEN(subf) >= 7 & LEN(subf) <= 10) error 11
           & LEN(subf) = 7 =>
                 ( ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 1, tag, subf, subf(1))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, ".", 2, tag, subf, subf(2))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 3, tag, subf, subf(3))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 4, tag, subf, subf(4))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 5, tag, subf, subf(5))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 6, tag, subf, subf(6))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 7, tag, subf, subf(7))
                 )
           & LEN(subf) = 8 =>
                 ( ERLAUBTE_ZEICHEN_AN_POS(1, "\d-", 1, tag, subf, subf(1))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 2, tag, subf, subf(2))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, ".", 3, tag, subf, subf(3))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 4, tag, subf, subf(4))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 5, tag, subf, subf(5))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 6, tag, subf, subf(6))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 7, tag, subf, subf(7))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 8, tag, subf, subf(8))
                 )
           & LEN(subf) = 9 =>
                 ( ERLAUBTE_ZEICHEN_AN_POS(1, "\d-", 1, tag, subf, subf(1))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 2, tag, subf, subf(2))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 3, tag, subf, subf(3))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, ".", 4, tag, subf, subf(4))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 5, tag, subf, subf(5))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 6, tag, subf, subf(6))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 7, tag, subf, subf(7))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 8, tag, subf, subf(8))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 9, tag, subf, subf(9))
                 )
           & LEN(subf) = 10 =>
                 ( ERLAUBTE_ZEICHEN_AN_POS(1, "-", 1, tag, subf, subf(1))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 2, tag, subf, subf(2))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 3, tag, subf, subf(3))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 4, tag, subf, subf(4))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, ".", 5, tag, subf, subf(5))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 6, tag, subf, subf(6))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 7, tag, subf, subf(7))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 8, tag, subf, subf(8))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 9, tag, subf, subf(9))
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "\d", 10, tag, subf, subf(10))
                 )

;

function CHECK_STANDARDIDENTIFIER(sbf : $,
                                  open_parenthesis_pos : number,
                                  close_parenthesis_pos : number,
                                  code_list : table) =
    (open_parenthesis_pos != 0 & open_parenthesis_pos+1 < close_parenthesis_pos)
    => sbf(open_parenthesis_pos+1 to close_parenthesis_pos-1) in code_list error 21
;


function SATZ_GESPERRT(subf : $, str : string) =
    !(str in subf) error 88
Validationen speziell für die GND
/*    ------------------------------------------------------------
      --------  Pruefung  GND        -----------------      
      ------------------------------------------------------------
*/


function VAL_GND = 



/* -----------    Pruefung erlaubte Felder   ---------------
 */


  A(x:#****: tagset_GND_felder(TAGCODE(x)) > 0                  error 3) 



/* -----------  Allgemeine Feldpruefung nicht fuer Loeschung, Umlenkung   ---------
 */
&& (!E(aenderung:#008@$a:("d" in aenderung | "u" in aenderung)) & !E(s:#039I$9)) => 
 ( 

/* ---------   Beginn Pruefung    ------ */



         LISTE_PFLICHFELDER_EINMAL(tagset_GND_entry)


/*           002@           */

 &&  A(tagm:#002@:A(mat:$0 in tagm:
     LEN(mat) > 2 => ERLAUBTE_ZEICHEN_AN_POS(1, "12345678", 3, tagm, mat, mat(3))
   & LEN(mat) < 5                                                      error 11
   & LEN(mat) = 4 => (ERLAUBTE_ZEICHEN_AN_POS (1, "e", 4, tagm, mat, mat(4))
                   & PFLICHT_WIEDERHOLBAR("041O"))
   & (mat(2) = "p") =>  LISTE_PFLICHFELDER(tagset_Tp_Pflicht)
   & (mat(2) = "n") =>  LISTE_FELDER_NICHT_ERLAUBT(tagset_Tn_nicht_erlaubt)   
   & (mat(2) in "bfgpu") =>  LISTE_FELDER_NICHT_ERLAUBT(tagset_Tbfgpu_nicht_erlaubt)   ))




         /* ----------    Materialart und Entry 1xx    ------------- */

         && A(mat:#002@$0: A(x:#028A:(mat(2) in "np")       error 3)
                        &  A(x:#029A:(mat(2) in "b")        error 3)
                        &  A(x:#030A:(mat(2) in "f")        error 3)
                        &  A(x:#022A:(mat(2) in "u")        error 3)  
                        &  A(x:#041A:(mat(2) in "s")        error 3) 
                        &  A(x:#065A:(mat(2) in "g")        error 3)
              )

         && A(mat:#002@$0:mat(1 to 2) in "Tb|Tf|Tg|Tp"  => PFLICHT_WIEDERHOLBAR("042B"))


/*   004B    */

         &&  A(mat:#002@$0:!(mat(2) in "nu" | mat(4) = "e") => PFLICHT_1_MAL("004B"))
             & A(tag:#004B:A(subf:$a in tag:subf in entitaetencodes        error 10))
                                       

/*   006Y    */
         && A(tag:#006Y: PFLICHT_SUBF(tag,"S")
                         & PFLICHT_SUBF(tag,"0")
             )
          & A(tag:#006Y:A(subf:$S in tag:subf in standardidentifier        error 10))
          & A(tag:#006Y:A(subf:$0 in tag: ERLAUBTE_ZEICHEN_AN_POS(1, "\x", 1, tag, subf, subf(1))
                                          & (LEN(subf) > 3) => UNERLAUBTE_ZEICHEN_AN_POS(1, tag,  subf, "http")
              ))


/*   008A und Abhaengigkeiten   */

           &&   E(1 to)(t:#008A)                                error 7
            & A(tag:#008A:A(subf:$a in tag:!((LEN(subf) = 1) & (subf in "adefghlmnopstz"))
                        =>  FEHLER_30(tag ,subf, subf)))
            & A(tag:#008A:A(subf:$a in tag:subf = "s" 
                     => (   (!E(x:#065A) => PFLICHT_WIEDERHOLBAR("042A"))
                          & (A(x:#002@:A(mat:$0 in x:mat(2) != "n"   error 10)))
                          & (!E(x:#041O) => PFLICHT_WIEDERHOLBAR("050E"))
                           ) )) 


/*   008B   */

         && NICHT_WIEDERHOLBAR("008B")
            & A(tag:#008B:A(subf:$a in tag:(LEN(subf) != 1 | !(subf in "ehkmorvwz"))
                        =>  FEHLER_30(tag ,subf, subf)))

/*       Pruefung URL       */

         && A(tag:#****:A(subf:$u in tag: (TAGCODE(tag) in tagset_URL =>
                        ((subf(1 for 7) = "http://") |
                         (subf(1 for 8) = "https://") |
                         (subf(1 for 6) = "ftp://"))               error 15)
                        & A(str:string in subf matching forbidden_strings_URL:
                                     !(str in subf) error 30
                           )
              ))          

/*   Titelfelder allgemein  */
         && A(tag:#022*:TAGCODE(tag)(4) in "A@PR" =>
                        A(subf:$h in tag: SUBF_NICHT_WIEDERHOLBAR(tag, subf))
                        & A(subf:$l in tag: SUBF_NICHT_WIEDERHOLBAR(tag, subf))
             )

/*   Personenfelder allgemein  */

         && A(tag:#028*:TAGCODE(tag)(4) in "A@R" =>
                    ( E(subf:$6 in tag) | E(subf:$9 in tag) |
                    (             EIN_SUBF_VON_2_PFLICHT(tag, "a", "P")
                                & SUBF_NICHT_ZUSAMMEN(tag, "a", "P")
                                & SUBF_NICHT_ZUSAMMEN(tag, "d", "P")
                      & A(subf:$a in tag:
                              E(s:$* in tag: SUBFCODE(s) = "d" | SUBFCODE(s) = "c")   error 4)
                      & A(subf:$P in tag:
                              UNERLAUBTE_ZEICHENFOLGE_IN_SUBF(tag, subf, ", "))
                    ))
              )


/*    Sachbegriff                 */

         && A(x:#041A:A(y:#004B$a:y in "sie|sis"  => PFLICHT_WIEDERHOLBAR("042B")))


/*  032*   */

         && NICHT_WIEDERHOLBAR("032T")
            & A(tag:#032T:(A(subf:$a in tag:
                           ERLAUBTE_ZEICHEN_AN_POS(1, "fm", 1, tag, subf, subf(1))))
                        & (A(tagm:#002@:A(mat:$0 in tagm:
                              ERLAUBTE_ZEICHEN_AN_POS (1, "p", 2, tagm, mat, mat(2)))))
                )

         && NICHT_WIEDERHOLBAR("032Z")


/*   DDC-Notationen   */

         && A(tag:#037*:TAGCODE(tag)(4) in "GI" 
               => (A(subf:$* in tag:
                   A(pos:number 1 to LEN(subf):!(subf(pos) in "\d.-#ABCT")
                                    => UNERLAUBTE_ZEICHEN_IN_SF(tag, subf, subf(pos))))
                 & A(subf:$c in tag:
                                ERLAUBTE_ZEICHEN_AN_POS(1, "T\d", 1, tag, subf, subf(1))
                          & (LEN(subf) >= 5 & subf(1 to 5) = "\d\d\d\*\d") 
                             => ERLAUBTE_ZEICHEN_AN_POS(1, ".", 4, tag, subf, subf(4)))
                 & (A(subf:$* in tag:SUBFCODE(subf) in "tg"
                                      => DATE_OK(subf, "yyyy-mm-dd")        error 14)) 

             ))


/*   Geo-Koordinaten   037H         */

        && A(tag:#037H:PFLICHT_SUBF(tag, "A")
                   & A(s:$A in tag:(LEN(s) = 3)                              error 11
                                   & ERLAUBTE_ZEICHEN_AN_POS(1, "xad", 1, tag, s, s(1))
                                   & ERLAUBTE_ZEICHEN_AN_POS(1, "xgc", 2, tag, s, s(2))
                                   & ERLAUBTE_ZEICHEN_AN_POS(1, "x01", 3, tag, s, s(3))
                      )
                   & (E(s:$* in tag: SUBFCODE(s) = "d") && E(s:$* in tag: SUBFCODE(s) = "e") 
                                            && E(s:$* in tag: SUBFCODE(s) = "f") && E(s:$* in tag: SUBFCODE(s) = "g")) error 4
                   & A(s:$* in tag:SUBFCODE(s) in "defg" => ((LEN(s) = 11)   error 11))
                   & count(subf:$* in tag:SUBFCODE(subf) in "defg") > 1      error 4
                   & A(s:$* in tag:SUBFCODE(s) in "de"
                            => ERLAUBTE_ZEICHEN_AN_POS(1, "EW", 1, tag, s, s(1)))
                   & A(s:$* in tag:SUBFCODE(s) in "fg"
                            => ERLAUBTE_ZEICHEN_AN_POS(1, "NS", 1, tag, s, s(1)))
                   & A(s:$A in tag:s(1) = "a") => A(x:$* in tag:SUBFCODE(x) in "defg"
                        => x(2 to 11) = " \d\d\d \d\d \d\d"   error 10)     
                   & A(s:$A in tag:s(1) = "d") => A(x:$* in tag:SUBFCODE(x) in "defg"
                        => x(2 to 11) = "\d\d\d.\d\d\d\d\d\d"   error 10)
                   &  A(subf:$2 in tag: subf in karto_quelle   error 10)
                   &  A(subf:$u in tag: subf(1 to 24) = "https://sws.geonames.org"    error 10)
             )



/*  Hinweissatz  */

         && A(tag:#041O:A(x:#002@$0:x(4) = "e")                 error 3
            & SUBF_NICHT_ZUSAMMEN(tag, "9", "a")
            & A(subf:$v in tag:
                     ERLAUBTE_ZEICHEN_AN_POS(1, "fxz", 1, tag, subf, subf(1)))
            & A(subf:$a in tag:PFLICHT_SUBF(tag, "v"))
            & GENAU_EIN_SUBF_VON_X_PFLICHT("a9", tag)
              )


/*   Codes    */


         && NICHT_WIEDERHOLBAR("010E")
         && A(tag:#010E:A(subf:$e in tag:subf in DOLe_10E        error 10)
                      & A(subf:$f in tag:subf = "rswk"        error 10)
             )

         && A(tag:#042B:E(5 to)(subf:$a in tag) => FEHLER_13("042B", "a")) 

         && NICHT_WIEDERHOLBAR("042C")
            &  A(tag:#042C:A(subf:$a in tag:subf in sprachencodes            error 10))

         && A(tag:#047A:OCC(tag) = 1
             => A(subf:$z in tag:DATE_OK(subf, "yyyy-mm-dd")   error 14))

/*    Systematik-Nummern        */      

         && A(tag:#042A:A(subf:$a in tag:subf in systematik                  error 10))

/*     Bevorzugte Benennungen */

         && A(tag:#0**A:TAGCODE(tag)(2 to 3) in "22|29|30|41|65" =>
                           PFLICHT_SUBF(tag, "a")
             )

/*       Verweisungen             */

         && A(tag:#022@:E(1)(t:#022A)                         error 3)
         && E(0)(t:#022A) =>
            (   A(tag:#028@:E(1)(t:#028A)                         error 3)
             && A(tag:#030@:E(1)(t:#030A)                         error 3)
             && A(tag:#041@:E(1)(t:#041A)                         error 3)
             && A(tag:#065@:E(1)(t:#065A)                         error 3)
             && A(tag:#029@:(E(1)(t:#029A) | E(1)(t:#065A) |
                E(1)(t:#030A))                                    error 3))

/*
         && A(tag:#0**@:TAGCODE(tag)(2 to 3) in "22|28|29|30|41|60|65" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_liste             error 10) )))
*/
         && A(tag:#0**@:TAGCODE(tag)(2 to 3) = "22" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_22at_liste         error 10) ))
                      & TAGCODE(tag)(2 to 3) = "28" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_28at_liste         error 10) ))
                      & TAGCODE(tag)(2 to 3) = "29" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_29at_liste         error 10) ))
                      & TAGCODE(tag)(2 to 3) = "30" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_30at_liste         error 10) ))
                      & TAGCODE(tag)(2 to 3) = "41" => FORBID_SUBF(tag, "4")
                      & TAGCODE(tag)(2 to 3) = "65" =>
                           (A(subf:$4 in tag:
                             (subf in DOL4_65at_liste         error 10) ))
             )

         && A(tag:#0**@:TAGCODE(tag)(2 to 3) in "22|29|30|41|65" =>
                           PFLICHT_SUBF(tag, "a")
             )
        
        && A(tag:#0***:TAGCODE(tag)(2 to 3) in "22|28|29|30|41|65" =>
                             (A(subf:$L in tag:
                               (subf in sprachencodes  error 10) ))
                           & (A(subf:$U in tag:
                               (subf in transliteration_codes  error 10) )))

/*   Relationierte Felder allgemein   */

         && A(tag:#0**R:
                   A(mat:#002@$0:
                        TAGCODE(tag)(2 to 3) = "22"  =>
                           A(subf:$4 in tag:
                                  mat(2) = "b" =>  (subf in DOL4_22R_Tb_liste         error 19)
                                & mat(2) = "f" =>  (subf in DOL4_22R_Tf_liste         error 19)
                                & mat(2) = "g" =>  (subf in DOL4_22R_Tg_liste         error 19)
                                & mat(2) = "p" =>  (subf in DOL4_22R_Tp_liste         error 19)
                                & mat(2) = "s" =>  (subf in DOL4_22R_Ts_liste         error 19)
                                & mat(2) = "u" =>  (subf in DOL4_22R_Tu_liste         error 19)
                            )
                          
                      
                      & TAGCODE(tag)(2 to 3) = "30" =>
                           A(subf:$4 in tag:
                                  mat(2) = "b" =>  (subf in DOL4_30R_Tb_liste         error 19)
                                & mat(2) = "f" =>  (subf in DOL4_30R_Tf_liste         error 19)
                                & mat(2) = "g" =>  (subf in DOL4_30R_Tg_liste         error 19)
                                & mat(2) = "p" =>  (subf in DOL4_30R_Tp_liste         error 19)
                                & mat(2) = "s" =>  (subf in DOL4_30R_Ts_liste         error 19)
                                & mat(2) = "u" =>  (subf in DOL4_30R_Tu_liste         error 19)
                            )
                    )
             )

                         

         && A(tag:#0**R:TAGCODE(tag)(2 to 3) in "22|28|29|30|41|60|65" =>
                            PFLICHT_SUBF(tag, "4")
                          & SUBF_NICHT_ZUSAMMEN(tag, "9", "a"))

         && A(tag:#0**R:TAGCODE(tag)(2 to 3) in "28|41|60|65" =>
                            (A(subf:$4 in tag:
                            (subf in DOL4_liste             error 10) )))

         && A(tag:#0**R:TAGCODE(tag)(2 to 3) = "29" =>
                            (A(subf:$4 in tag:
                            ((subf in DOL4_liste|subf="affi")        error 10) )))

         && A(tag:#0**R:TAGCODE(tag)(2 to 3) in "22|29|30|41|65" =>
                            GENAU_EIN_SUBF_VON_X_PFLICHT("a69", tag)
             )

        /* Tu*: aut1, kom1, kue 1 duerfen nicht zusammen und jeweils nur 1x vorkommen */
         && A(mat:#002@$0:mat(2) = "u" =>
              A(tag:#0**R:TAGCODE(tag)(2 to 3) in "28|29|30" =>
                A(subf1:$4 in tag:
                  A(tag2:#0**R:TAGCODE(tag)(2 to 3) in "28|29|30" =>
                    A(subf2:$4 in tag2:
                      ((subf1 = "aut1") => !(subf2 in "kom1|kue1")   error 10)
                      & ((subf1 = "kom1") => !(subf2 in "aut1|kue1")   error 10)
                      & ((subf1 in "aut1|kom1|kue1") & (subf1 < subf2)) => subf1() != subf2()   error 10
                     )
                   )
                 )
               )
             )
        /* wenn 041R $4 "akad", keine Verknuepfung erlaubt */
         && A(tag:#0**R:TAGCODE(tag)(2 to 3) = "41" =>
              A(subf1:$4 in tag:
                 subf1 = "akad" => FORBID_SUBF(tag, "9") 
               )
              )
                
/*        046G        */

        && A(mat:#002@$0: A(x:#046G:(mat(2) in "bfgp")       error 3)
            )

        & A(tag:#046G:
            PFLICHT_SUBF(tag,"a")
            & A(subf:$f in tag:
                A(pos: number 1 to LEN(subf) : POS_ISDIGIT_OR_IN(subf, pos, "X-"))
               )
            & A(subf:$w in tag: subf(1) = "("    error 10)
            & A(subf:$0 in tag: subf(1) = "("    error 10)
            & A(subf:$0 in tag:
                 A(pos:number 1 to LEN(subf):
                    subf(pos) = ")"  => !(" " in subf(pos+1))                    error 20
                    & subf(pos) = ")"  => !("/" in subf(pos+1))                    error 20
                    & subf(pos) = ")"  => !("http" in subf(pos+1 to pos+4))        error 20
                  )
               & CHECK_STANDARDIDENTIFIER(subf, subf("("), subf(")"), standardidentifier)
               )

           )
        

/*        Datumsangaben        */


        && A(tag:#060R:A(sub4:$4 in tag:
                   count(datl:#060R$4:datl = "datl") < 2              error 10
                 & (sub4 in "datl|datx" => !E(sc:$c in tag)           error 6)
                 & (sub4 = "datx" => !E(sd:$d in tag)                 error 6)
                 & (A(mat:#002@$0:mat(2) = "b" => sub4 in "datb|datw|rela") error 10)
                 & (A(mat:#002@$0:mat(2) = "f" => sub4 in "datb|datv|rela") error 10)
                 & (A(mat:#002@$0:mat(2) = "g" => sub4 in "datb|datf|dats|rela") error 10)
                 & (A(mat:#002@$0:mat(2) = "p" => sub4 in "datl|datu|datw|datx|datz|rela") error 10)
                 & (A(mat:#002@$0:mat(2) = "s" => sub4 in "datb|dats|datv|rela") error 10)
                 & (A(mat:#002@$0:mat(2) = "u" => sub4 in "datb|datf|datj|dats|datu|rela") error 10)
                 & (sub4 in "datf|datj|datl|datw"      => NUR_JAHR(tag))
                 & (sub4 in "datz|datx"                => DATUM_EXAKT(tag))
                 & (sub4 in "datb|dats|datv"           => DATUM_VARIANTEN(tag))
                 & A(subfa:$a in tag: A(subfb:$b in tag: (sub4 in "datl|datx"  => CHECK_LEBENSDATEN(subfa, subfb))))
                 & A(mat:#002@$0:
                      A(tag2:#004B:
                         A(suba:$a in tag2:
                              ((mat(2) = "f" & sub4 = "datb") => suba = "vif" error 10)
                            & ((mat(2) = "f" & sub4 = "datv") => suba = "vie" error 10)
                            & ((mat(2) = "s" & sub4 = "datv") => suba = "sih" error 10)
                          )
                       )
                    )
                        )
             & SUBF_NICHT_ZUSAMMEN(tag, "a", "c")
             & SUBF_NICHT_ZUSAMMEN(tag, "b", "c")
             & SUBF_NICHT_ZUSAMMEN(tag, "a", "d")
             & SUBF_NICHT_ZUSAMMEN(tag, "b", "d")
             & SUBF_NICHT_ZUSAMMEN(tag, "d", "c")
             & EIN_SUBF_VON_X_PFLICHT("abcd", tag)
             & A(subb:$b in tag:A(suba:$a in tag:
                          count(pb:string in subb matching ".") =
                          count(pa:string in suba matching ".") error 11))
            )

        && A(tag:#065R:
             A(sub4:$4 in tag:
               A(mat:#002@$0:
                 A(tag2:#004B:
                   A(suba:$a in tag2:
                     ((mat(2) = "p" & sub4 = "ortc") => suba = "pif" error 10)
                    )
                  )
                )
              )
            )

/*   050C   */

 && A(mat:#002@$0:(mat(2) = "p")
     => A(tag:#050C:
          A(subf:$a in tag: (!(subf(1 to LEN(subf)) = "Bearbeitungssperre!"))   error 88
           )
         )
     )


/* --------------  Ende Pruefung     ---------- */
Löschung & Umlenkung
/*  Loeschung und Umlenkung          */

&& NICHT_WIEDERHOLBAR("008@")
&& NICHT_WIEDERHOLBAR("039I")
&& NICHT_WIEDERHOLBAR("039G")
&& A(tag:#039G:
     PFLICHT_SUBF(tag,"a")
   & A(subf:$a in tag:LEN(subf) = 1                     error 11
   & ERLAUBTE_ZEICHEN_AN_POS(1, "gps", 1, tag, subf, subf(1)))
   & E(0)(t:#039I)                          			  error 3 )

&& A(tag:#008@:A(subf:$a in tag:!(subf = "u" | subf = "d" | subf = "zu" | subf = "zd" | subf = "g" | subf = "p" | subf = "s")                   => FEHLER_30(tag ,subf, subf)))

   & E(aenderung:#008@$a:("u" in aenderung)) => PFLICHT_1_MAL("039I")
   & A(tag:#008B:A(subf:$a in tag:(subf in "wv") =>
                 A(t:#008@:A(sub:$a in t:UNERLAUBTE_ZEICHEN_IN_SF(t, sub, "d"))))
       )
Allgemeine Prüfungen
/*      --------  allgemeine Pruefungen        -----------------       */

function PRUEF_ALL =

   A(tag:#****:A(subf:$* in tag:
                 UNERLAUBTE_ZEICHEN_AN_POS(1, tag,  subf, " ")))
&& A(tag:#****:A(subf:$* in tag:
                 UNERLAUBTE_ZEICHEN_AN_POS((LEN(subf)), tag,  subf, " ")))
/*         Pruefung auf korrekte IDN bei Verknuepfung      */
&& A(tag:#****:A(subf:$9 in tag:
                 CHECK_IDN(tag, subf)))
/*         nur in Mailbox und URL sind Dollars erlaubt     */
&& A(tag:#****:A(subf:$* in tag:
            ((TAGCODE(tag) = "047A" & SUBFCODE(subf) = "a") |
             (TAGCODE(tag) in tagset_URL & SUBFCODE(subf) = "u") |
                               UNERLAUBTE_ZEICHEN_IN_SF(tag, subf, "\$"))))

/*    Bevorzugte Namen bzw. bevorzugte Benennungen in anderen Datenbestaenden   */
     && A(mat:#002@$0:mat(2) != "c" =>
         A(tag:#0**P:
               TAGCODE(tag)(2 to 3) in "28" =>
                      EIN_SUBF_VON_X_PFLICHT("0aPu9", tag)
             & TAGCODE(tag)(2 to 3) in "22|29|30|41|65" =>
                      EIN_SUBF_VON_X_PFLICHT("0au9", tag)
          )
         )

/*         --------     002@     Materialart      ----------           */

&& PFLICHT_1_MAL("002@")
   & A(tag:#002@:A(mat:$0 in tag:ERLAUBTE_ZEICHEN_AN_POS(1, "T",  1, tag, mat, mat(1))
                 & LEN(mat) > 1                                 error 11
                 & ERLAUBTE_ZEICHEN_AN_POS(1, "bcdefghklmnpqrsuvwX", 2, tag, mat, mat(2))
                 & (mat(2) = "w")  => VAL_BIB()
                 & (mat(2) in "pnbfugs")  =>  VAL_GND()
                 & (mat(2) in "k")  =>  VAL_KLASS()
                 & (mat(2) in "q")  =>  VAL_KLASS()
                 & (mat(2) in "c")  =>  VAL_CROSS()
                 & (mat(2) in "v")  =>  VAL_VERLEGER()
       ))
Allgemeine Plausibilität
/* *****************************************************************
                    Allgemeine Plausibilitaet
******************************************************************* */


/*       --------     001* , 003@    Verwaltungsfelder      ----------      */

    NICHT_WIEDERHOLBAR("001A")
         & A(tag:#001A:A(x:$0 in tag:(LEN(x) = 13)             error 11))
      
&&  NICHT_WIEDERHOLBAR("001B")
         &  A(tag:#001B:A(x:$0 in tag:(LEN(x) = 13)            error 11))
         &  A(tag:#001B:A(x:$t in tag:(LEN(x) = 12)            error 11))
 
&&  NICHT_WIEDERHOLBAR("001D")
         &  A(tag:#001D:A(x:$0 in tag:(LEN(x) = 13)            error 11))

&&  NICHT_WIEDERHOLBAR("003@")

&& A(mat:#002@$0: (!(mat(4) = "*") & !(iln = 6)) => PRUEF_ALL())


Validationen in natürlicher Sprache für die einzelnen Felder der GND

Allgemeine Prüfungen

  • Der Inhalt eines Unterfelds darf nicht mit einem Leerzeichen beginnen.
    • Fehlermeldung: ' ' in Subfeld '$*' in '*' an Pos. 1 nicht erlaubt
  • Der Inhalt eines Unterfelds darf nicht mit einem Leerzeichen enden.
    • Fehlermeldung: ' ' in Subfeld '$*' in '*' an Pos. * nicht erlaubt
  • Nur in 047A $a (Mailbox) und URL-Unterfeldern ($u in 050E, 050G, 028P, 029P, 030P, 022P, 041P, 065P) sind Dollarzeichen ($) als Inhalt eines Unterfelds erlaubt
    • Fehlermeldung: '$' innerhalb von Subfeld '$*' in '*' nicht erlaubt
  • In den URL-Unterfeldern ($u in 050E, 050G, 028P, 029P, 030P, 022P, 041P, 065P) muss der Inhalt von $u mit "http://", "https://" oder "ftp://" beginnen.
    • Fehlermeldung: Subfeld '$u' in '*' muss mit "http://", "https://" oder "ftp://" beginnen
  • In den URL-Unterfeldern ($u in 050E, 050G, 028P, 029P, 030P, 022P, 041P, 065P) dürfen die Inhalte "http://http://", und "http://https://" nicht vorkommen.
    • Fehlermeldung '*' innerhalb von Subfeld '$u' in '*' nicht erlaubt
  • Es darf in einem Datensatz nur eines der Felder 028A, 029A, 030A, 022A, 041A, 065A vorkommen und eines davon muss vorkommen.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Bei Tp-Sätzen (002@ $0 beginnt mit "Tp") muss eines der Felder 028R, 029R, 030R, 041R, 060R, 065R, 039G, 039I, 042C, 046G, 050G, 041O vorkommen
    • Fehlermeldung: Eines der Felder 'Relationierte Person (Feld 500)', 'Relationierte Körperschaft (Feld 510)', 'Relationierter Kongress (Feld 511)', 'Relationierter Sachbegriff (Feld 550)', 'Relationierte Zeit (Feld 548)', 'Relationiertes Geografikum (Feld 551)', 'Aufspaltung (Feld 689)', 'IDN des Zielsatzes bei Umlenkung (Feld 682)', 'Sprachencode (Feld 377)', 'Werke der Person (Feld 672)', 'Biografisch/historische Angaben (Feld 678)', 'Zu verknüpfende Deskriptoren (Feld 260)' ist Pflicht

Validationen im Feld 001A

  • Das Feld 001A ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Ersterfassung' ist nicht wiederholbar 
  • Der Inhalt des Unterfelds $0 muss genau 13 Zeichen lang sein.
    • Fehlermeldung: Die Laenge von Subfeld '$0' in 'Ersterfassung' ist nicht korrekt

Validationen im Feld 001B

  • Das Feld 001B ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Letzte Änderung' ist nicht wiederholbar 
  • Der Inhalt des Unterfelds $0 muss genau 13 Zeichen lang sein.
    • Fehlermeldung: Die Laenge von Subfeld '$0' in 'Letzte Änderung' ist nicht korrekt
  • Der Inhalt des Unterfelds $t muss genau 12 Zeichen lang sein.
    • Fehlermeldung: Die Laenge von Subfeld '$t' in 'Letzte Änderung' ist nicht korrekt

Validationen im Feld 001D

  • Das Feld 001D ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Status' ist nicht wiederholbar
  • Der Inhalt des Unterfelds $0 muss genau 13 Zeichen lang sein.
    • Fehlermeldung: Die Laenge von Subfeld '$0' in 'Status' ist nicht korrekt

Validationen im Feld 001E

-

Validationen im Feld 001U

-

Validationen im Feld 001X

-

Validationen im Feld 002@

  • Das Feld 002@ muss genau einmal vorhanden sein.
    • Fehlermeldung: Feld 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' ist obligatorisch
    • Fehlermeldung: Feld 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' ist nicht wiederholbar
  • Die Länge des Unterfelds $0 muss mindestens zwei und höchstens vier Zeichen umfassen.
    • Fehlermeldung: Die Länge von Subfeld '$0' in 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' ist nicht korrekt
  • An erster Position des Unterfelds $0 ist nur das Zeichen "T" zugelassen.
    • Fehlermeldung: '*' in Subfeld '$0' in 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' an Pos. 1 nicht erlaubt
  • An 3. Postion des Unterfelds sind nur die Zeichen "12345678" zugelassen (Hinweis: Das Katalogiserungslevel "z" kann nur mit der Superkennung der AfS vergeben werden, die die Validation ignoriert).
    • Fehlermeldung: '*' in Subfeld '$0' in 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' an Pos. 3 nicht erlaubt
  • Wenn das Unterfeld $0 4 Zeichen umfasst, dann ist an 4. Position nur das Zeichen "e" zugelassen.

    • Fehlermeldung: '*' in Subfeld '$0' in 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' an Pos. 4 nicht erlaubt

Validationen im Feld 003@

  • Das Feld 003@ ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Interne Identifikationsnummer' ist nicht wiederholbar

Validationen im Feld 003U

-

Validationen im Feld 004B

  • Der Inhalt des Unterfelds $a muss in der Liste der zugelassenen Entitätencodes enthalten sein.
    • Fehlermeldung: Subfeld '$a' in 'Entitätencodierung (Feld 008)' ist inhaltlich nicht korrekt
  • Das Feld 004B ist verpflichtend bei allen Satzarten außer bei Tu-Sätzen und Hinweissätzen.

    • Fehlermeldung: Feld 'Entitätencodierung (Feld 008)' ist obligatorisch

Validationen im Feld 006Y

  • Im Feld 006Y müssen die Unterfelder $S und $0 immer belegt sein.
    • Fehlermeldung: Subfeld '$S' ist verpflichtend in 'Sonstige Standardnummer'
  • Der Inhalt des Unterfelds $S muss in der Liste der Standardidentifier enthalten sein.
    • Fehlermeldung: Subfeld '$S' in 'Sonstige Standardnummer' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $0 muss mit einem alphanumerischen Zeichen beginnen.
    • Fehlermeldung: '*' in Subfeld '$0' in 'Sonstige Standardnummer' an Pos. 1 nicht erlaubt
  • Der Inhalt des Unterfelds $0 darf nicht mit "http" beginnen.
    • Fehlermeldung: 'http' in Subfeld '$0' in 'Sonstige Standardnummer' an Pos. 1 nicht erlaubt

Validationen im Feld 007K

-

Validationen im Feld 007N

-

Validationen im Feld 007R

-

Validationen im Feld 007W

-

Validationen im Feld 008@

  • Das Feld 008@ ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Änderungscodierung' ist nicht wiederholbar
  • Das Unterfeld $a darf nur die Inhalte "u", "d", "zu", "zd", "g", "p" oder "s" enthalten.
    • Fehlermeldung: '*' innerhalb von Subfeld '$a' in 'Änderungscodierung' nicht erlaubt
  • Wenn in 008@ $a der Inhalt "u" ist, dann muss das Feld 039I einmal belegt sein.
    • Fehlermeldung: Feld 'IDN des Zielsatzes bei Umlenkung (Feld 682)' ist obligatorisch 
  • Wenn in 008@ $a der Inhalt "d" ist, dann darf in 008B $a nicht der Inhalt "w" oder "v" vorhanden sein.
    • Fehlermeldung: 'd' innerhalb von Subfeld '$a' in 'Änderungscodierung' nicht erlaubt

Validationen im Feld 008A

  • Das Feld 008A ist ein Pflichtfeld, dass immer belegt sein muss.
    • Fehlermeldung: Feld 'Teilbestandskennzeichen' ist obligatorisch
  • Das Unterfeld $a darf nur genau ein Zeichen beinhalten und dieses Zeichen darf nur "a", d"", "e", "f", "g", "h", "l", "m", "n", "o", "p", "s", "t" oder "z" sein.
    • Fehlermeldung: '*' innerhalb von Subfeld '$a' in 'Teilbestandskennzeichen' nicht erlaubt 

Validationen im Feld 008B

  • Das Feld 008A ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Nutzungskennzeichen' ist nicht wiederholbar
  • Das Unterfeld $a darf nur genau ein Zeichen beinhalten und dieses Zeichen darf nur "e", "h", "k", "m", "o", "r", "v", "w" oder "z" sein.
    • Fehlermeldung: '*' innerhalb von Subfeld '$a' in 'Nutzungskennzeichen' nicht erlaubt  

Validationen im Feld 009B

-

Validationen im Feld 010E

  • Das Feld 010E ist nicht wiederholbar.
    • Fehlermeldung: Feld 040 ist nicht wiederholbar
  • Im Unterfeld $e dürfen nur die zugelassenen Inhalte aus der Codeliste stehen ("kids", "rak", "rakwb", "rda", "rna").

    • Fehlermeldung: Subfeld '$e' in 040 ist inhaltlich nicht korrekt
  • Im Unterfeld $f ist nur der Inhalt "rswk" zugelassen.
    • Fehlermeldung: Subfeld '$f' in 040 ist inhaltlich nicht korrekt

Validationen im Feld 022@

  • Das Feld 022@ ist nur bei Tu-Sätzen zulässig (022A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Werk' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Variante Namen - Werk'
  • Die Unterfelder $h und $l sind nicht wiederholbar.
    • Fehlermeldung: Unzulaessige Feldwiederholung von Subfeld '$*' in 'Variante Namen - Werk'
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 022@ stehen ("abku", "nafr", "nasp", "tmzu")
    • Fehlermeldung: Subfeld '$4' in 'Variante Namen - Werk' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Werk' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Werk' ist inhaltlich nicht korrekt

Validationen im Feld 022A

  • Das Feld 022A ist nur bei Tu-Sätzen zulässig (002@ $0 beginnt mit "Tu").
    • Fehlermeldung: Feld 'Ansetzung - Werk' ist bei dieser Satzart nicht erlaubt
  • Das Feld 022A ist bei Tu-Sätzen (002@ $0 beginnt mit "Tu") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Ansetzung - Werk'
  • Die Unterfelder $h und $l sind nicht wiederholbar.
    • Fehlermeldung: Unzulaessige Feldwiederholung von Subfeld '$*' in 'Ansetzung - Werk'

Validationen im Feld 022R

  • Die Unterfelder $h und $l sind nicht wiederholbar.
    • Fehlermeldung: Unzulaessige Feldwiederholung von Subfeld '$*' in 'Relationiertes Werk'
  • In 022R muss entweder ein Unterfeld $6 oder $9 oder $a vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationiertes Werk' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationiertes Werk' schliessen einander aus
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationiertes Werk' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 022R stehen (für jede Satzart gibt es eine eigene Liste!). 
    • Fehlermeldung: Subfeld '$4' in 'Relationiertes Werk' ist inhaltlich nicht korrekt

Validationen im Feld 022P

  • In 022P muss entweder ein Unterfeld $0 oder $a oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Werk (Feld 730)' fehlt 
  • Die Unterfelder $h und $l sind nicht wiederholbar.
    • Fehlermeldung: Unzulaessige Feldwiederholung von Subfeld '$*' in 'Alternative Vorzugsbenennung - Werk (Feld 730)'

Validationen im Feld 028A

  • Das Feld 028A ist nur bei Tp-Sätzen zulässig (002@ $0 beginnt mit "Tp").
    • Fehlermeldung: Feld 'Ansetzung - Person (Feld 100)' ist bei dieser Satzart nicht erlaubt
  • Das Feld 028A ist bei Tp-Sätzen (002@ $0 beginnt mit "Tp") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen 
  • In 028A muss entweder ein Unterfeld $a oder ein Unterfeld $P vorkommen.
    • Fehlermeldung: Eines der Subfelder '$P' oder '$a' in 'Ansetzung - Person (Feld 100)' ist Pflicht
  • Die Unterfelder $a und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$a' in 'Ansetzung - Person (Feld 100)' schliessen einander aus
  • Die Unterfelder $d und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$d' in 'Ansetzung - Person (Feld 100)' schliessen einander aus
  • Wenn das Unterfeld $a vorhanden ist, dann muss zudem entweder ein Unterfeld $d oder ein Unterfeld $c vorhanden sein.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Ansetzung - Person (Feld 100)' fehlt
  • Im Unterfeld $P darf die Zeichenfolge ", " nicht vorkommen.
    • Fehlermeldung: ', ' innerhalb von Subfeld '$P' in 'Ansetzung - Person (Feld 100)' nicht erlaubt

Validationen im Feld 028@

  • Das Feld 028@ ist nur bei Tp- und Tu-Sätzen zulässig (eines der Felder 028A oder 022A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Person (Feld 400)' ist bei dieser Satzart nicht erlaubt
  • In 028@ muss entweder ein Unterfeld $a oder ein Unterfeld $P vorkommen.
    • Fehlermeldung: Eines der Subfelder '$P' oder '$a' in 'Variante Namen - Person (Feld 400)' ist Pflicht
  • Die Unterfelder $a und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$a' in 'Variante Namen - Person (Feld 400)' schliessen einander aus
  • Die Unterfelder $d und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$d' in 'Variante Namen - Person (Feld 400)' schliessen einander aus
  • Wenn das Unterfeld $a vorhanden ist, dann muss zudem entweder ein Unterfeld $d oder ein Unterfeld $c vorhanden sein.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Variante Namen - Person (Feld 400)' fehlt
  • Im Unterfeld $P darf die Zeichenfolge ", " nicht vorkommen.
    • Fehlermeldung: ', ' innerhalb von Subfeld '$P' in 'Variante Namen - Person (Feld 400)' nicht erlaubt
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 028@ stehen ("nafr", "nasp", "navo", "nawi", "pseu").
    • Fehlermeldung: Subfeld '$4' in 'Variante Namen - Person (Feld 400)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Person (Feld 400)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Person (Feld 400)' ist inhaltlich nicht korrekt

Validationen im Feld 028R

  • In 028R muss entweder ein Unterfeld $6 oder $9 oder $a oder ein Unterfeld $P vorkommen.
    • Fehlermeldung: Eines der Subfelder '$P' oder '$a' in 'Relationierte Person (Feld 500)' ist Pflicht
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationierte Person (Feld 500)' schliessen einander aus
  • Die Unterfelder $a und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$a' in 'Relationierte Person (Feld 500)' schliessen einander aus
  • Die Unterfelder $d und $P dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$P' und '$d' in 'Relationierte Person (Feld 500)' schliessen einander aus
  • Wenn das Unterfeld $a vorhanden ist, dann muss zudem entweder ein Unterfeld $d oder ein Unterfeld $c vorhanden sein.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Relationierte Person (Feld 500)' fehlt
  • Im Unterfeld $P darf die Zeichenfolge ", " nicht vorkommen.
    • Fehlermeldung: ', ' innerhalb von Subfeld 'Relationierte Person (Feld 500)' nicht erlaubt
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationierte Person (Feld 500)' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes stehen. 
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Person (Feld 500)' ist inhaltlich nicht korrekt
  • Bei Tu-Sätzen (002@ $0 beginnt mit "Tu" düfen die $4-Codes aut1, kom1, kue1 nicht zusammen und jeweils nur 1x pro Datensatz vorkommen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Person (Feld 500)' ist inhaltlich nicht korrekt

Validationen im Feld 028P

  • In 028P muss entweder ein Unterfeld $0 oder $a oder $P oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Person (Feld 700)' fehlt 

Validationen im Feld 029A

  • Das Feld 029A ist nur bei Tb-Sätzen zulässig (002@ $0 beginnt mit "Tb").
    • Fehlermeldung: Feld 'Ansetzung - Körperschaftsname (Feld 110)' ist bei dieser Satzart nicht erlaubt
  • Das Feld 029A ist bei Tb-Sätzen (002@ $0 beginnt mit "Tb") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Ansetzung - Körperschaftsname (Feld 110)'

Validationen im Feld 029@

  • Das Feld 029@ ist nur bei den Satzarten Tb, Tf, Tu und Tg zulässig (029A oder 030A oder 022A oder 065A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Körperschaftsname (Feld 410)' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Variante Namen - Körperschaftsname (Feld 410)'
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 029@ stehen ("abku", "nafr", "nasp", "nauv", "ngkd", "nswd", "spio").
    • Fehlermeldung: Subfeld '$4' in 'Variante Namen - Körperschaftsname (Feld 410)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Körperschaftsname (Feld 410)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Körperschaftsname (Feld 410)' ist inhaltlich nicht korrekt

Validationen im Feld 029R

  • In 029R muss entweder ein Unterfeld $6 oder $9 oder $a vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationierte Körperschaft (Feld 510)' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationierte Körperschaft (Feld 510)' schliessen einander aus
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationierte Körperschaft (Feld 510)' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes stehen. 
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Körperschaft (Feld 510)' ist inhaltlich nicht korrekt
  • Bei Tu-Sätzen (002@ $0 beginnt mit "Tu" düfen die $4-Codes aut1, kom1, kue1 nicht zusammen und jeweils nur 1x pro Datensatz vorkommen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Körperschaft (Feld 510)' ist inhaltlich nicht korrekt

Validationen im Feld 029P

  • In 029P muss entweder ein Unterfeld $0 oder $a oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Körperschaft (Feld 710)' fehlt 

Validationen im Feld 030A

  • Das Feld 030A ist nur bei Tf-Sätzen zulässig (002@ $0 beginnt mit "Tf").
    • Fehlermeldung: Feld 'Ansetzung - Kongressname (Feld 111)' ist bei dieser Satzart nicht erlaubt
  • Das Feld 030A ist bei Tf-Sätzen (002@ $0 beginnt mit "Tf") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Ansetzung - Kongressname (Feld 111)'

Validationen im Feld 030@

  • Das Feld 030@ ist nur bei den Satzarten Tf und Tu zulässig (030A oder 022A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Kongressname (Feld 411)' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Variante Namen - Kongressname (Feld 411)'
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 030@ stehen ("abku", "nafr", "nasp", "nauv", "ngkd", "nswd").
    • Fehlermeldung: Subfeld '$4' in 'Variante Namen - Kongressname (Feld 411)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Kongressname (Feld 411)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Kongressname (Feld 411)' ist inhaltlich nicht korrekt

Validationen im Feld 030R

  • In 030R muss entweder ein Unterfeld $6 oder $9 oder $a vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationierter Kongress (Feld 511)' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationierter Kongress (Feld 511)' schliessen einander aus
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationierter Kongress (Feld 511)' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 030R stehen (für jede Satzart gibt es eine eigene Liste!). 
    • Fehlermeldung: Subfeld '$4' in 'Relationierter Kongress (Feld 511)' ist inhaltlich nicht korrekt
  • Bei Tu-Sätzen (002@ $0 beginnt mit "Tu" düfen die $4-Codes aut1, kom1, kue1 nicht zusammen und jeweils nur 1x pro Datensatz vorkommen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierter Kongress (Feld 511)' ist inhaltlich nicht korrekt

Validationen im Feld 030P

  • In 030P muss entweder ein Unterfeld $0 oder $a oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Kongress (Feld 711)' fehlt

Validationen im Feld 032L

-

Validationen im Feld 032M

-

Validationen im Feld 032N

-

Validationen im Feld 032T

  • Das Feld 032T ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Geschlechtsangabe (Feld 375)' ist nicht wiederholbar
  • Das Unterfeld $a darf nur die Zeichen darf nur die Zeichen "m" oder "f" enthalten.
    • Fehlermeldung: '*' in Subfeld '$a' in 'Geschlechtsangabe (Feld 375)' an Pos. 1 nicht erlaubt
  • Das Feld darf nur bei Tp-Sätzen verwendet werden (002@ $0 Pos. 2 = "p").
    • Fehlermeldung: '*' in Subfeld '$0' in 'Satzart, Katalogisierungslevel oder Kennzeichen Hinweissatz' an Pos. 2 nicht erlaubt

Validationen im Feld 032W

-

Validationen im Feld 032X

-

Validationen im Feld 032Y

-

Validationen im Feld 032Z

  • Das Feld 032Z ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Tonart (Feld 384)' ist nicht wiederholbar

Validationen im Feld 037G

  • In allen Unterfeldern des Felds 037G sind nur folgende Zeichen zugelassen: Ziffern, „.“, „-„, „#“, „T“, „A“, „B“, „C“.
    • Fehlermeldung: '*' innerhalb von Subfeld '$*' in 'DDC-Notation (Feld 083)' nicht erlaubt
  • Im Unterfeld $c darf Position 1 nur „T“ oder eine Ziffer stehen.
    • Fehlermeldung: '*' innerhalb von Subfeld '$c' in 'DDC-Notation (Feld 083)' nicht erlaubt
  • Wenn Im Unterfeld $c an Pos. 1-3 und 5 eine Ziffer steht, dann ist auf Position 4 nur das Zeichen „.“ erlaubt.
    • Fehlermeldung: '*' in Subfeld '$c' in 'DDC-Notation (Feld 083)' an Pos. 4 nicht erlaubt
  • Der Inhalt der Unterfelder $t und $g darf nur aus Jahreszahlen in der Form „JJJJ-MM-TT“ bestehen.
    • Fehlermeldung: Datum in Subfeld '$*' in 'DDC-Notation (Feld 083)' nur in Form JJJJ-MM-TT gueltig  

Validationen im Feld 037H

  • Das Unterfeld $A ist verpflichtend.
    • Fehlermeldung: Subfeld '$A' ist verpflichtend in 'Koordinaten'
  • Das Unterfeld $A darf nur genau drei Zeichen enthalten.
    • Fehlermeldung: Die Laenge von Subfeld '$A' in 'Koordinaten' ist nicht korrekt
  • Im Unterfeld $A dürfen an Pos.1 nur die Zeichen "x", "a" oder "d" vorkommen, an Pos. 2 nur die Zeichen "X", "g" oder "c" und an Pos. 3 nur die Zeichen "x", "0" oder "1".
    • Fehlermeldung: '*' in Subfeld '$A' in 'Koordinaten' an Pos. * nicht erlaubt
  • Die Unterfelder $d, $e, $f, $g sind verpflichtend, sie müssen also immer alle zusammen vorkommen.

    • Fehlermeldung: Verpflichtendes Subfeld in Feld 'Koordinaten' fehlt
  • In den Unterfeldern $d und $e dürfen an Pos.1 nur die Zeichen "E" oder "W" vorkommen.
    • Fehlermeldung: '*' in Subfeld '$*' in 'Koordinaten' an Pos. 1 nicht erlaubt
  • In den Unterfeldern $f und $g dürfen an Pos.1 nur die Zeichen "N" oder "S" vorkommen.
    • Fehlermeldung: '*' in Subfeld '$*' in 'Koordinaten' an Pos. 1 nicht erlaubt
  • Für $d, $e, $f, $g gilt: wenn Pos.1 in $A mit „a“ belegt ist, müssen Pos. 2, 6 und 9 ein Leerzeichen und die Pos. 3, 4, 5, 7, 8, 10 und 11 Ziffern sein.

    • Fehlermeldung: Subfeld '$*' in 'Koordinaten' ist inhaltlich nicht korrekt
  • Für $d, $e, $f, $g gilt: wenn Pos.1 in $A mit „d“ belegt ist, muss an Pos. 5 ein Punkt stehen. Pos. 2, 3, 4, 6, 7, 8, 9, 10 und 11 müssen Ziffern enthalten.

    • Fehlermeldung: Subfeld $'*' in 'Koordinaten' ist inhaltlich nicht korrekt
  • Die Unterfelder $d, $e, $f, $g müssen jeweils genau 11 Zeichen lang sein.
    • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Koordinaten' ist nicht korrekt
  • Der Inhalt des Unterfelds $2 muss in der Liste der Codes für 037H $2 enthalten sein.
    • Fehlermeldung: Subfeld '$2' in 'Koordinaten' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $u muss mit "https://sws.geonames.org" beginnen.
    • Fehlermeldung: Subfeld '$u' in 'Koordinaten' ist inhaltlich nicht korrekt

Validationen im Feld 037I

  • In allen Unterfeldern des Felds 037I sind nur folgende Zeichen zugelassen: Ziffern, „.“, „-„, „#“, „T“, „A“, „B“, „C“.
    • Fehlermeldung: '*' innerhalb von Subfeld '$*' in 'Veraltete DDC-Notation (Feld 089)' nicht erlaubt
  • Im Unterfeld $c darf Position 1 nur „T“ oder eine Ziffer stehen.
    • Fehlermeldung: '*' innerhalb von Subfeld '$c' in 'Veraltete DDC-Notation (Feld 089)' nicht erlaubt
  • Wenn Im Unterfeld $c an Pos. 1-3 und 5 eine Ziffer steht, dann ist auf Position 4 nur das Zeichen „.“ erlaubt.
    • Fehlermeldung: '*' in Subfeld '$c' in 'Veraltete DDC-Notation (Feld 089)' an Pos. 4 nicht erlaubt
  • Der Inhalt der Unterfelder $t und $g darf nur aus Jahreszahlen in der Form „JJJJ-MM-TT“ bestehen.
    • Fehlermeldung: Datum in Subfeld '$*' in 'Veraltete DDC-Notation (Feld 089)' nur in Form JJJJ-MM-TT gueltig

Validationen im Feld 038L

-

Validationen im Feld 039I

  • Das Feld 039I ist nicht wiederholbar.
    • Fehlermeldung: Feld 'IDN des Zielsatzes bei Umlenkung (Feld 682)' ist nicht wiederholbar
  • Die Felder 039I und 039G dürfen nicht gleichzeitig im selben Datensatz vorkommen.
    • Fehlermeldung: Feld 'Aufspaltung (Feld 689)' ist bei dieser Satzart nicht erlaubt 

Validationen im Feld 039G

  • Das Feld 039G ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Aufspaltung (Feld 689)' ist nicht wiederholbar
  • Das Feld 039G muss ein Unterfeld $a enthalten.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Aufspaltung (Feld 689)'
  • Das Unterfeld $a darf nur genau ein Zeichen enthalten.
    • Fehlermeldung: Die Laenge von Subfeld '$a' in 'Aufspaltung (Feld 689)' ist nicht korrekt
  • Dieses Zeichen darf nur "g", "p" oder "s" sein.
    • Fehlermeldung: '*' in Subfeld '$a' in 'Aufspaltung (Feld 689)' an Pos. 1 nicht erlaubt
  • Die Felder 039I und 039G dürfen nicht gleichzeitig im selben Datensatz vorkommen.
    • Fehlermeldung: Feld 'Aufspaltung (Feld 689)' ist bei dieser Satzart nicht erlaubt

Validationen im Feld 041A

  • Das Feld 041A ist nur bei Ts-Sätzen zulässig (002@ $0 beginnt mit "Ts").
    • Fehlermeldung: Feld 'Ansetzung -  Sachbegriff (Feld 150)' ist bei dieser Satzart nicht erlaubt
  • Das Feld 041A ist bei Ts-Sätzen (002@ $0 beginnt mit "Ts") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Ansetzung -  Sachbegriff (Feld 150)'

Validationen im Feld 041@

  • Das Feld 041@ ist nur bei den Satzarten Ts und Tu zulässig (041A oder 022A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Sachbegriff (Feld 450)' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Variante Namen - Sachbegriff (Feld 450)'
  • Im Feld 041@ ist das Unterfeld $4 nicht zugelassen.
    • Fehlermeldung: Subfeld '$4' ist nicht erlaubt in 'Variante Namen - Sachbegriff (Feld 450)'
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Sachbegriff (Feld 450)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Sachbegriff (Feld 450)' ist inhaltlich nicht korrekt

Validationen im Feld 041R

  • In 041R muss entweder ein Unterfeld $6 oder $9 oder $a vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationierter Sachbegriff (Feld 550)' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationierter Sachbegriff (Feld 550)' schliessen einander aus
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationierter Sachbegriff (Feld 550)' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes stehen. 
    • Fehlermeldung: Subfeld '$4' in 'Relationierter Sachbegriff (Feld 550)' ist inhaltlich nicht korrekt
  • Wenn im Unterfeld $4 der Inhalt "akad" vorhanden ist, dann ist das Unterfeld $9 nicht erlaubt.
    • Fehlermeldung: Subfeld '$9' ist nicht erlaubt in 'Relationierter Sachbegriff (Feld 550)'

Validationen im Feld 041P

  • In 041P muss entweder ein Unterfeld $0 oder $a oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Sachbegriff (Feld 750)' fehlt

Validationen im Feld 041O

  • Das Feld 041O ist verpflichtend wenn in 002@ $0 an Pos.4 ein "e" steht"
    • Fehlermeldung: Feld 'Zu verknüpfende Deskriptoren (Feld 260)' ist obligatorisch
  • Das Feld 041O darf nur dann verwendet werden, wenn in 002@ $0 an Pos.4 ein "e" steht"
    • Fehlermeldung: Feld 'Zu verknüpfende Deskriptoren (Feld 260)' ist bei dieser Satzart nicht erlaubt
  • Im Feld 041O muss entweder ein Unterfeld $a oder ein Unterfeld $9 vorhanden sein.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Zu verknüpfende Deskriptoren (Feld 260)' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht gleichzeitig in einem Feld 041O vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Zu verknüpfende Deskriptoren (Feld 260)' schliessen einander aus
  • Das Unterfeld $v darf an Pos.1 nur die Zeichen "f", "x" oder "z" enthalten
    • Fehlermeldung: '*' in Subfeld '$v' in 'Zu verknüpfende Deskriptoren (Feld 260)' an Pos. 1 nicht erlaubt
  • Wenn im Feld 041O das Unterfeld $a vorhanden ist, dann muss auch das Unterfeld $v vorhanden sein.
    • Fehlermeldung: Subfeld '$v' ist verpflichtend in 'Zu verknüpfende Deskriptoren (Feld 260)'

Validationen im Feld 042@

-

Validationen im Feld 042A

  • Das Feld ist verpflichtend, wenn im Unterfeld 008A $a der Inhalt "s" vorhanden ist, außer, wenn ein Feld 065A vorhanden ist.
    • Fehlermeldung: Feld 'GND-Systematik (Feld 065)' ist obligatorisch
  • Der Inhalt des Unterfelds $a muss in der Liste der der Notationen der GND-Systematik enthalten sein.
    • Fehlermeldung: Subfeld '$a' in 'GND-Systematik (Feld 065)' ist inhaltlich nicht korrekt

Validationen im Feld 042B

  • Das Feld ist verpflichtend, wenn das Unterfeld 002@ $0 mit "Tp", "Tb, "Tf" oder "Tg" beginnt.
    • Fehlermeldung: Feld 'Ländercode (Feld 043)' ist obligatorisch
  • Das Feld ist verpflichtend, wenn ein Feld 041A vorhanden ist sowie in 004B $a die Inhalte "sie" oder "sis" enthalten sind.
    • Fehlermeldung: Feld 'Ländercode (Feld 043)' ist obligatorisch
  • Ein Feld 042B darf maximal vier Unterfelder $a enthalten.
    • Fehlermeldung: Unzulässige Feldwiederholung von Subfeld '$a' in 'Ländercode (Feld 043)'

Validationen im Feld 042C

  • Das Feld 042C ist nicht wiederholbar.
    • Fehlermeldung: Feld 'Sprachencode (Feld 377)' ist nicht wiederholbar
  • Der Inhalt des Unterfelds $a muss in der Liste der Sprachencodes enthalten sein.
    • Fehlermeldung: Subfeld '$a' in 'Sprachencode (Feld 377)' ist inhaltlich nicht korrekt

Validationen im Feld 046Z

-

Validationen im Feld 046G

  • Das Feld ist nur zulässig, wenn in 002@ $0 an Pos. 2 die Inhalte "p", "b", "f" oder "g" vorhanden sind.
    • Fehlermeldung: Feld 'Werke der Person (Feld 672)' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung:  Subfeld '$a' ist verpflichtend in 'Werke der Person (Feld 672)'
  • Das Unterfeld $f darf nur Ziffern, "X" oder "-" enthalten.
    • Pos. * von '*' in 672 muss numerisch oder 'X-' sein
  • Das Unterfeld $w muss an Pos.1 eine runde öffnende Klammer enthalten "(".
    • Fehlermeldung: Subfeld '$w' in 'Werke der Person (Feld 672)' ist inhaltlich nicht korrekt
  • Das Unterfeld $0 muss an Pos.1 eine runde öffnende Klammer enthalten "(".
    • Fehlermeldung: Subfeld '$0' in 'Werke der Person (Feld 672)' ist inhaltlich nicht korrekt
  • Im Unterfeld $0 darf nach der schließenden runden Klammer ")" kein Leerzeichen, kein Slash "/" und nicht "http" stehen.
    • Fehlermeldung: Subfeld '$0' in 'Werke der Person (Feld 672)' ist inhaltlich nicht korrekt
  • Der Inhalt zwischen den runden Klammern im Unterfeld $0 muss in der Liste der Standardidentifier enthalten sein.
    • Fehlermeldung: Falscher Standardidentifier in Subfeld '$0' in 'Werke der Person (Feld 672)'

Validationen im Feld 047C

-

Validationen im Feld 047A

  • Wenn das Feld 047A die Occurence 1 hat (047A/01), dann muss im Unterfeld $z ein gültiges Datum nach dem Schema JJJJ-MM-TT enthalten sein.
    • Fehlermeldung: Datum in Subfeld '$z' in 'Mailbox' nur in Form JJJJ-MM-TT gueltig 

Validationen im Feld 050C

  • Bei Tp-Sätzen (002@ $0 beginnt mit "Tp") darf der Inhalt des Unterfelds $a nicht der Text "Bearbeitungssperre!" sein.

    • Fehlermeldung: Dieser Datensatz darf aus redaktionellen Gründen nicht korrigiert oder ergänzt werden

Validationen im Feld 050D

-

Validationen im Feld 050E

  • Das Feld ist verpflichtend, wenn im Unterfeld 008A $a der Inhalt "s" vorhanden ist, außer, wenn ein Feld 041O vorhanden ist.
    • Fehlermeldung: Feld 'Quellenangaben (Feld 670)' ist obligatorisch

Validationen im Feld 050F

-

Validationen im Feld 050G

-

Validationen im Feld 050H

  • Das Feld 050H ist bei den Satzarten Tp, Tb, Tf, Tu und Tg nicht erlaubt (also nur bei Ts).
    • Fehlermeldung: Feld 'Definition (Feld 677)' ist bei dieser Satzart nicht erlaubt

Validationen im Feld 060R

  • Eins der Unterfelder $a, $b, $c, $d muss im Feld 060R vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Relationierte Zeit (Feld 548)' fehlt
  • Das Unterfeld $4 ist verpflichtend.
    • Subfeld '$4' ist verpflichtend in 'Relationierte Zeit (Feld 548)'
  • Die Unterfelder $a und $c dürfen nicht zusammen in einem Feld 060R vorkommen.
    • Fehlermeldung: Subfelder '$c' und '$a' in 'Relationierte Zeit (Feld 548)' schliessen einander aus
  • Die Unterfelder $b und $c dürfen nicht zusammen in einem Feld 060R vorkommen.
    • Fehlermeldung: Subfelder '$c' und '$b' in 'Relationierte Zeit (Feld 548)' schliessen einander aus
  • Die Unterfelder $a und $d dürfen nicht zusammen in einem Feld 060R vorkommen.
    • Fehlermeldung: Subfelder '$d' und '$a' in 'Relationierte Zeit (Feld 548)' schliessen einander aus
  • Die Unterfelder $b und $b dürfen nicht zusammen in einem Feld 060R vorkommen.
    • Fehlermeldung: Subfelder '$d' und '$b' in 'Relationierte Zeit (Feld 548)' schliessen einander aus
  • Die Unterfelder $d und $c dürfen nicht zusammen in einem Feld 060R vorkommen.
    • Fehlermeldung: Subfelder '$c' und '$d' in 'Relationierte Zeit (Feld 548)' schliessen einander aus
  • In einem Datensatz darf nicht mehr als ein Feld 060R mit $4 "datl" vorkommen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Wenn in einem Feld 060R in $4 der Inhalt "datl" oder "datx" vorhanden ist, dann darf in diesem Feld kein Unterfeld $c vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationierte Zeit (Feld 548)' ist nicht korrekt
  • Wenn in einem Feld 060R in $4 der Inhalt "datx" vorhanden ist, dann darf in diesem Feld kein Unterfeld $d vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationierte Zeit (Feld 548)' ist nicht korrekt
  • Bei Tb-Sätzen (002@ $0 beginnt mit "Tb") sind im Unterfeld $4 nur die Inhalte "datb", "datw" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Bei Tf-Sätzen (002@ $0 beginnt mit "Tf") sind im Unterfeld $4 nur die Inhalte "datb", "datv" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Bei Tg-Sätzen (002@ $0 beginnt mit "Tg") sind im Unterfeld $4 nur die Inhalte "datb", "datf", "dats" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Bei Tp-Sätzen (002@ $0 beginnt mit "Tp") sind im Unterfeld $4 nur die Inhalte "datl", "datu", "datw", "datx", "datz" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Bei Ts-Sätzen (002@ $0 beginnt mit "Ts") sind im Unterfeld $4 nur die Inhalte "datb", "dats", "datv" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Bei Tu-Sätzen (002@ $0 beginnt mit "Tu") sind im Unterfeld $4 nur die Inhalte "datb", "datf", "datj", "dats", "datu" und "rela" zugelassen.
    • Fehlermeldung: Subfeld '$4' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Wenn im Unterfeld $4 die Inhalte "datf", "datj", "datl" oder "datw" vorhanden sind, dann gilt für die Unterfelder $a, $b und $c die folgende Jahresprüfung:
    • Wenn an Pos.1 kein "v" steht, dann darf der Inhalt des Unterfelds nicht mehr als vier Zeichen lang sein
      • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • Wenn an Pos.1 ein "v" steht, dann darf der Inhalt des Unterfelds nicht mehr als fünf Zeichen lang sein
      • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • Wenn das Unterfeld nur ein Zeichen lang ist, dann muss dieses Zeichen eine Ziffer sein.
      • Fehlermeldung: Datum oder Jahr '*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • Wenn das Unterfeld mehr als ein Zeichen umfasst, dann muss an Pos.1 "v", "X" oder eine Ziffer stehen. Ab Pos.2 sind nur Ziffern oder "X" als Inhalt zulässig.
      • Fehlermeldung: Datum oder Jahr '*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
  • Wenn im Unterfeld $4 die Inhalte "datz" oder "datx" vorhanden sind, dann gilt für die Unterfelder $a, $b und $c die folgende Datumsprüfung:
    • Der Inhalt muss ein gültiges Datum nach dem Schema TT.MM.JJJJ oder TT.MM.vJJJJ sein.
      • Fehlermeldung: Datum oder Jahr '*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • Der Inhalt des Unterfelds darf nicht weniger als 7 und nicht mehr als 11 Zeichen umfassen.
      • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • An Pos.1 sind nur die Zeichen 0, 1, 2, 3 und X zulässig, an Pos. 2 nur eine Ziffer oder X, an Pos.3 nur ein Punkt, an Pos.4 nur 0, 1 oder X, an Pos.5 nur eine Ziffer oder X und an Pos.6 nur ein Punkt.
      • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
    • Für die Pos. 7-11 gilt ebenfalls die oben erwähnte Jahresprüfung, d.h.:
      • Wenn an Pos.7 kein "v" steht, dann darf der Inhalt ab da nicht mehr als vier Zeichen lang sein
        • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
      • Wenn an Pos.7 ein "v" steht, dann darf der Inhalt ab da nicht mehr als fünf Zeichen lang sein
        • Fehlermeldung: Die Laenge von Subfeld '$*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
      • Wenn Pos.7 das letzte Zeichen im Unterfeld ist, dann muss dieses Zeichen eine Ziffer sein.
        • Fehlermeldung: Datum oder Jahr '*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
      • Wenn Pos.7 nicht das letzte Zeichen im Unterfeld ist, dann muss an Pos.7 "v", "X" oder eine Ziffer stehen. Ab Pos.8 sind nur Ziffern oder "X" als Inhalt zulässig.
        • Fehlermeldung: Datum oder Jahr '*' in 'Relationierte Zeit (Feld 548)' ist nicht korrekt
  • Wenn im Unterfeld $4 die Inhalte "datb", "dats" oder "datv" vorhanden sind, dann gilt für die Unterfelder $a, $b und $c wenn der Inhalt des Unterfelds mehr als 5 Zeichen umfasst die oben erwähnte Datumsprüfung.
  • Wenn im Unterfeld $4 die Inhalte "datb", "dats" oder "datv" vorhanden sind, dann gilt für die Unterfelder $a, $b und $c wenn der Inhalt des Unterfelds 5 oder weniger Zeichen umfasst die oben erwähnte Jahresprüfung.
  • Wenn im Feld 060R sowohl ein Unterfeld $a als auch ein Unterfeld $b sowie ein Unterfeld $4 mit dem Inhalt "datl" oder "datx" vorhanden ist, dann gilt außerdem die folgende Jahresprüfung der Lebensdaten (Jahresangaben, die „X“ enthalten werden nicht geprüft):
    • Zeitpunkt vor Christi Geburt: Die Jahreszahl in $b muss kleiner oder gleich der Jahreszahl in $a sein (eine Prüfung erfolgt nur, wenn sowohl bei $a als auch $b an Pos.1 ein „v“ steht).
      • Fehlermeldung: Subfeld '$b' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
    • Zeitpunkt nach Christi Geburt: Die Jahreszahl in $b muss größer oder gleich der Jahreszahl in $a sein.
      • Fehlermeldung: Subfeld '$b' in 'Relationierte Zeit (Feld 548)' ist inhaltlich nicht korrekt
  • Wenn im Unterfeld $a ein Punkt vorkommt, dann muss auch im Unterfeld $b ein Punkt vorkommen und umgekehrt.
      • Fehlermeldung: Die Laenge von Subfeld '$*' in Relationierte Zeit (Feld 548) ist nicht korrekt
  • Bei Tf-Sätzen (002@ $0 beginnt mit "Tf") darf in 060R $4 nur dann "datb" stehen, wenn es in dem Datensatz ein Unterfeld 004B $a mit dem Inhalt "vif" gibt.
    • Fehlermeldung: Subfeld '$a' in 'Entitätencodierung (Feld 008)' ist inhaltlich nicht korrekt
  • Bei Tf-Sätzen (002@ $0 beginnt mit "Tf") darf in 060R $4 nur dann "datv" stehen, wenn es in dem Datensatz ein Unterfeld 004B $a mit dem Inhalt "vie" gibt.
    • Fehlermeldung: Subfeld '$a' in 'Entitätencodierung (Feld 008)' ist inhaltlich nicht korrekt
  • Bei Ts-Sätzen (002@ $0 beginnt mit "Ts") darf in 060R $4 nur dann "datv" stehen, wenn es in dem Datensatz ein Unterfeld 004B $a mit dem Inhalt "sih" gibt.
    • Fehlermeldung: Subfeld '$a' in 'Entitätencodierung (Feld 008)' ist inhaltlich nicht korrekt

Validationen im Feld 065A

  • Das Feld 065A ist nur bei Tg-Sätzen zulässig (002@ $0 beginnt mit "Tg").
    • Fehlermeldung: Feld 'Ansetzung - Geografikum (Feld 151)' ist bei dieser Satzart nicht erlaubt
  • Das Feld 029A ist bei Tg-Sätzen (002@ $0 beginnt mit "Tg") verpflichtend.
    • Fehlermeldung: Nur eines der Felder 'Ansetzung - Person (Feld 100)', 'Ansetzung - Körperschaftsname (Feld 110)', 'Ansetzung - Kongressname (Feld 111)', 'Ansetzung - Werk', 'Ansetzung -  Sachbegriff (Feld 150)', 'Ansetzung - Geografikum (Feld 151)' ist erlaubt und muss vorkommen
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Ansetzung 'Ansetzung - Geografikum (Feld 151)'

Validationen im Feld 065@

  • Das Feld 065@ ist nur bei den Satzarten Tg und Tu zulässig (065A oder 022A muss vorhanden sein).
    • Fehlermeldung: Feld 'Variante Namen - Geografikum (Feld 451)' ist bei dieser Satzart nicht erlaubt
  • Das Unterfeld $a ist verpflichtend.
    • Fehlermeldung: Subfeld '$a' ist verpflichtend in 'Variante Namen - Geografikum (Feld 451)'
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes für 065@ stehen ("abku", "naaf", "nafr", "nasp", "nauv", "ngkd", "nswd", "spio").
    • Fehlermeldung: Subfeld '$4' in 'Variante Namen - Geografikum (Feld 451)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $L muss in der Liste der erlaubten Sprachencodes stehen.
    • Fehlermeldung: Subfeld '$L' in 'Variante Namen - Geografikum (Feld 451)' ist inhaltlich nicht korrekt
  • Der Inhalt des Unterfelds $U muss in der Liste der erlaubten Schriftcodes stehen.
    • Fehlermeldung: Subfeld '$U' in 'Variante Namen - Geografikum (Feld 451)' ist inhaltlich nicht korrekt

Validationen im Feld 065R

  • In 065R muss entweder ein Unterfeld $6 oder $9 oder $a vorkommen.
    • Fehlermeldung: Unterfeldstruktur von Feld 'Relationiertes Geografikum (Feld 551)' ist nicht korrekt
  • Die Unterfelder $a und $9 dürfen nicht zusammen vorkommen.
    • Fehlermeldung: Subfelder '$a' und '$9' in 'Relationiertes Geografikum (Feld 551)' schliessen einander aus
  • Das Unterfeld $4 ist verpflichtend.
    • Fehlermeldung: Subfeld '$4' ist verpflichtend in 'Relationiertes Geografikum (Feld 551)' 
  • Der Inhalt des Unterfelds $4 muss in der Liste der erlaubten $4-Codes stehen. 
    • Fehlermeldung: Subfeld '$4' in 'Relationiertes Geografikum (Feld 551)' ist inhaltlich nicht korrekt
  • Bei Tp-Sätzen (002@ $0 beginnt mit "Tp") ist im Unterfeld $4 der Inhalt "ortc" nur dann erlaubt, wenn im Datensatz ein Feld 004B mit einem Unterfeld $a vorhanden ist, das den Inhalt "pif" hat.
    • Fehlermeldung: Subfeld '$a' in 'Entitätencodierung (Feld 008)' ist inhaltlich nicht korrekt

Validationen im Feld 065P

  • In 065P muss entweder ein Unterfeld $0 oder $a oder $u oder ein Unterfeld $9 vorkommen.
    • Fehlermeldung: Verpflichtendes Subfeld in 'Alternative Vorzugsbenennung - Geografikum (Feld 751)' fehlt

Validationen im Feld 070A

-

Validationen im Feld 070B

-



  • Keine Stichwörter